Edit

IABSD.fr/xenocara/lib/mesa/generated/src/compiler/glsl/glsl_lexer.cpp

Branch :

  • Show log

    Commit

  • Author : jsg
    Date : 2023-01-28 08:56:19
    Hash : b5d82fed
    Message : Merge Mesa 22.3.4

  • lib/mesa/generated/src/compiler/glsl/glsl_lexer.cpp
  • #line 2 "src/compiler/glsl/glsl_lexer.cpp"
    
    #line 4 "src/compiler/glsl/glsl_lexer.cpp"
    
    #define  YY_INT_ALIGNED short int
    
    /*	$OpenBSD: glsl_lexer.cpp,v 1.10 2023/01/28 08:56:20 jsg Exp $	*/
    
    /* A lexical scanner generated by flex */
    
    #define FLEX_SCANNER
    #define YY_FLEX_MAJOR_VERSION 2
    #define YY_FLEX_MINOR_VERSION 5
    #define YY_FLEX_SUBMINOR_VERSION 39
    #if YY_FLEX_SUBMINOR_VERSION > 0
    #define FLEX_BETA
    #endif
    
    /* First, we deal with  platform-specific or compiler-specific issues. */
    
    /* begin standard C headers. */
    #include <stdio.h>
    #include <string.h>
    #include <errno.h>
    #include <stdlib.h>
    
    /* end standard C headers. */
    
    /* $OpenBSD: glsl_lexer.cpp,v 1.10 2023/01/28 08:56:20 jsg Exp $ */
    
    /* flex integer type definitions */
    
    #ifndef FLEXINT_H
    #define FLEXINT_H
    
    /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
    
    #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    
    /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
     * if you want the limit (max/min) macros for int types. 
     */
    #ifndef __STDC_LIMIT_MACROS
    #define __STDC_LIMIT_MACROS 1
    #endif
    
    #include <inttypes.h>
    typedef int8_t flex_int8_t;
    typedef uint8_t flex_uint8_t;
    typedef int16_t flex_int16_t;
    typedef uint16_t flex_uint16_t;
    typedef int32_t flex_int32_t;
    typedef uint32_t flex_uint32_t;
    #else
    typedef signed char flex_int8_t;
    typedef short int flex_int16_t;
    typedef int flex_int32_t;
    typedef unsigned char flex_uint8_t; 
    typedef unsigned short int flex_uint16_t;
    typedef unsigned int flex_uint32_t;
    
    /* Limits of integral types. */
    #ifndef INT8_MIN
    #define INT8_MIN               (-128)
    #endif
    #ifndef INT16_MIN
    #define INT16_MIN              (-32767-1)
    #endif
    #ifndef INT32_MIN
    #define INT32_MIN              (-2147483647-1)
    #endif
    #ifndef INT8_MAX
    #define INT8_MAX               (127)
    #endif
    #ifndef INT16_MAX
    #define INT16_MAX              (32767)
    #endif
    #ifndef INT32_MAX
    #define INT32_MAX              (2147483647)
    #endif
    #ifndef UINT8_MAX
    #define UINT8_MAX              (255U)
    #endif
    #ifndef UINT16_MAX
    #define UINT16_MAX             (65535U)
    #endif
    #ifndef UINT32_MAX
    #define UINT32_MAX             (4294967295U)
    #endif
    
    #endif /* ! C99 */
    
    #endif /* ! FLEXINT_H */
    
    #ifdef __cplusplus
    
    /* The "const" storage-class-modifier is valid. */
    #define YY_USE_CONST
    
    #else	/* ! __cplusplus */
    
    /* C99 requires __STDC__ to be defined as 1. */
    #if defined (__STDC__)
    
    #define YY_USE_CONST
    
    #endif	/* defined (__STDC__) */
    #endif	/* ! __cplusplus */
    
    #ifdef YY_USE_CONST
    #define yyconst const
    #else
    #define yyconst
    #endif
    
    /* Returned upon end-of-file. */
    #define YY_NULL 0
    
    /* Promotes a possibly negative, possibly signed char to an unsigned
     * integer for use as an array index.  If the signed char is negative,
     * we want to instead treat it as an 8-bit unsigned char, hence the
     * double cast.
     */
    #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
    
    /* An opaque pointer. */
    #ifndef YY_TYPEDEF_YY_SCANNER_T
    #define YY_TYPEDEF_YY_SCANNER_T
    typedef void* yyscan_t;
    #endif
    
    /* For convenience, these vars (plus the bison vars far below)
       are macros in the reentrant scanner. */
    #define yyin yyg->yyin_r
    #define yyout yyg->yyout_r
    #define yyextra yyg->yyextra_r
    #define yyleng yyg->yyleng_r
    #define yytext yyg->yytext_r
    #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
    #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
    #define yy_flex_debug yyg->yy_flex_debug_r
    
    /* Enter a start condition.  This macro really ought to take a parameter,
     * but we do it the disgusting crufty way forced on us by the ()-less
     * definition of BEGIN.
     */
    #define BEGIN yyg->yy_start = 1 + 2 *
    
    /* Translate the current start state into a value that can be later handed
     * to BEGIN to return to the state.  The YYSTATE alias is for lex
     * compatibility.
     */
    #define YY_START ((yyg->yy_start - 1) / 2)
    #define YYSTATE YY_START
    
    /* Action number for EOF rule of a given start state. */
    #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
    
    /* Special action meaning "start processing a new file". */
    #define YY_NEW_FILE _mesa_glsl_lexer_restart(yyin ,yyscanner )
    
    #define YY_END_OF_BUFFER_CHAR 0
    
    /* Size of default input buffer. */
    #ifndef YY_BUF_SIZE
    #define YY_BUF_SIZE 16384
    #endif
    
    /* The state buf must be large enough to hold one state per character in the main buffer.
     */
    #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
    
    #ifndef YY_TYPEDEF_YY_BUFFER_STATE
    #define YY_TYPEDEF_YY_BUFFER_STATE
    typedef struct yy_buffer_state *YY_BUFFER_STATE;
    #endif
    
    #ifndef YY_TYPEDEF_YY_SIZE_T
    #define YY_TYPEDEF_YY_SIZE_T
    typedef size_t yy_size_t;
    #endif
    
    #define EOB_ACT_CONTINUE_SCAN 0
    #define EOB_ACT_END_OF_FILE 1
    #define EOB_ACT_LAST_MATCH 2
    
        #define YY_LESS_LINENO(n)
        #define YY_LINENO_REWIND_TO(ptr)
        
    /* Return all but the first "n" matched characters back to the input stream. */
    #define yyless(n) \
    	do \
    		{ \
    		/* Undo effects of setting up yytext. */ \
            int yyless_macro_arg = (n); \
            YY_LESS_LINENO(yyless_macro_arg);\
    		*yy_cp = yyg->yy_hold_char; \
    		YY_RESTORE_YY_MORE_OFFSET \
    		yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
    		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
    		} \
    	while ( 0 )
    
    #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
    
    #ifndef YY_STRUCT_YY_BUFFER_STATE
    #define YY_STRUCT_YY_BUFFER_STATE
    struct yy_buffer_state
    	{
    	FILE *yy_input_file;
    
    	char *yy_ch_buf;		/* input buffer */
    	char *yy_buf_pos;		/* current position in input buffer */
    
    	/* Size of input buffer in bytes, not including room for EOB
    	 * characters.
    	 */
    	yy_size_t yy_buf_size;
    
    	/* Number of characters read into yy_ch_buf, not including EOB
    	 * characters.
    	 */
    	yy_size_t yy_n_chars;
    
    	/* Whether we "own" the buffer - i.e., we know we created it,
    	 * and can realloc() it to grow it, and should free() it to
    	 * delete it.
    	 */
    	int yy_is_our_buffer;
    
    	/* Whether this is an "interactive" input source; if so, and
    	 * if we're using stdio for input, then we want to use getc()
    	 * instead of fread(), to make sure we stop fetching input after
    	 * each newline.
    	 */
    	int yy_is_interactive;
    
    	/* Whether we're considered to be at the beginning of a line.
    	 * If so, '^' rules will be active on the next match, otherwise
    	 * not.
    	 */
    	int yy_at_bol;
    
        int yy_bs_lineno; /**< The line count. */
        int yy_bs_column; /**< The column count. */
        
    	/* Whether to try to fill the input buffer when we reach the
    	 * end of it.
    	 */
    	int yy_fill_buffer;
    
    	int yy_buffer_status;
    
    #define YY_BUFFER_NEW 0
    #define YY_BUFFER_NORMAL 1
    	/* When an EOF's been seen but there's still some text to process
    	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
    	 * shouldn't try reading from the input source any more.  We might
    	 * still have a bunch of tokens to match, though, because of
    	 * possible backing-up.
    	 *
    	 * When we actually see the EOF, we change the status to "new"
    	 * (via _mesa_glsl_lexer_restart()), so that the user can continue scanning by
    	 * just pointing yyin at a new input file.
    	 */
    #define YY_BUFFER_EOF_PENDING 2
    
    	};
    #endif /* !YY_STRUCT_YY_BUFFER_STATE */
    
    /* We provide macros for accessing buffer states in case in the
     * future we want to put the buffer states in a more general
     * "scanner state".
     *
     * Returns the top of the stack, or NULL.
     */
    #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
                              ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
                              : NULL)
    
    /* Same as previous macro, but useful when we know that the buffer stack is not
     * NULL or when we need an lvalue. For internal use only.
     */
    #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
    
    void _mesa_glsl_lexer_restart (FILE *input_file ,yyscan_t yyscanner );
    void _mesa_glsl_lexer__switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
    YY_BUFFER_STATE _mesa_glsl_lexer__create_buffer (FILE *file,int size ,yyscan_t yyscanner );
    void _mesa_glsl_lexer__delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
    void _mesa_glsl_lexer__flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
    void _mesa_glsl_lexer_push_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
    void _mesa_glsl_lexer_pop_buffer_state (yyscan_t yyscanner );
    
    static void _mesa_glsl_lexer_ensure_buffer_stack (yyscan_t yyscanner );
    static void _mesa_glsl_lexer__load_buffer_state (yyscan_t yyscanner );
    static void _mesa_glsl_lexer__init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
    
    #define YY_FLUSH_BUFFER _mesa_glsl_lexer__flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
    
    YY_BUFFER_STATE _mesa_glsl_lexer__scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
    YY_BUFFER_STATE _mesa_glsl_lexer__scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
    YY_BUFFER_STATE _mesa_glsl_lexer__scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner );
    
    void *_mesa_glsl_lexer_alloc (yy_size_t ,yyscan_t yyscanner );
    void *_mesa_glsl_lexer_realloc (void *,yy_size_t ,yyscan_t yyscanner );
    void _mesa_glsl_lexer_free (void * ,yyscan_t yyscanner );
    
    #define yy_new_buffer _mesa_glsl_lexer__create_buffer
    
    #define yy_set_interactive(is_interactive) \
    	{ \
    	if ( ! YY_CURRENT_BUFFER ){ \
            _mesa_glsl_lexer_ensure_buffer_stack (yyscanner); \
    		YY_CURRENT_BUFFER_LVALUE =    \
                _mesa_glsl_lexer__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
    	} \
    	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
    	}
    
    #define yy_set_bol(at_bol) \
    	{ \
    	if ( ! YY_CURRENT_BUFFER ){\
            _mesa_glsl_lexer_ensure_buffer_stack (yyscanner); \
    		YY_CURRENT_BUFFER_LVALUE =    \
                _mesa_glsl_lexer__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
    	} \
    	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
    	}
    
    #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
    
    /* Begin user sect3 */
    
    #define _mesa_glsl_lexer_wrap(yyscanner) 1
    #define YY_SKIP_YYWRAP
    
    typedef unsigned char YY_CHAR;
    
    typedef int yy_state_type;
    
    #define yytext_ptr yytext_r
    
    static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
    static yy_state_type yy_try_NUL_trans (yy_state_type current_state  ,yyscan_t yyscanner);
    static int yy_get_next_buffer (yyscan_t yyscanner );
    static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
    
    /* Done after the current pattern has been matched and before the
     * corresponding action - sets up yytext.
     */
    #define YY_DO_BEFORE_ACTION \
    	yyg->yytext_ptr = yy_bp; \
    	yyleng = (size_t) (yy_cp - yy_bp); \
    	yyg->yy_hold_char = *yy_cp; \
    	*yy_cp = '\0'; \
    	yyg->yy_c_buf_p = yy_cp;
    
    #define YY_NUM_RULES 280
    #define YY_END_OF_BUFFER 281
    /* This struct is not used in this scanner,
       but its presence is necessary. */
    struct yy_trans_info
    	{
    	flex_int32_t yy_verify;
    	flex_int32_t yy_nxt;
    	};
    static yyconst flex_int16_t yy_accept[1112] =
        {   0,
            0,    0,   20,   20,    0,    0,  281,  279,    1,   27,
          279,  279,  279,  279,  279,  279,  278,  279,  185,  183,
          279,  279,  279,  277,  279,  277,  277,  277,  277,  277,
          277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
          277,  277,  277,  277,  277,  279,    1,  279,   26,   20,
           25,   26,   24,   23,   21,   22,   18,   17,    1,  167,
          176,  168,  179,  173,  162,  175,  163,  182,  187,  174,
          188,  185,    0,    0,  185,  185,    0,  185,  183,  183,
          183,  183,  171,  164,  166,  165,  172,  277,  180,  170,
          277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
    
          277,  277,  277,  277,   36,  277,  277,  277,  277,  277,
          277,  277,  277,  277,  277,  277,  277,  277,  277,   40,
          277,  277,   68,  277,  277,  277,  277,  277,  277,  277,
          277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
          277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
          277,  277,  277,  277,  277,  277,  277,  277,  181,  169,
            1,    0,    0,    2,    0,    0,    0,    0,    0,   20,
           19,   23,   22,    0,  187,    0,    0,  186,    0,  188,
            0,    0,    0,  189,  184,  177,  178,  277,  196,  277,
          277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
    
          277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
          277,  277,  277,  277,  277,   39,  277,  277,  277,  277,
          277,  277,  277,  277,  277,  277,  277,   32,  277,  277,
          277,  277,  277,  277,  277,  277,  277,  277,  277,   69,
          277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
          277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
          277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
          277,  277,  277,  277,  277,  277,  277,    0,    0,    0,
            0,    0,   19,    0,  187,  191,    0,  186,    0,    0,
            0,  188,  192,  189,    0,    0,  184,  184,  184,  277,
    
          277,  277,   30,  277,  277,  277,  254,  247,  277,  277,
          277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
           38,  199,  277,  277,  277,  277,   76,  277,  277,  204,
          217,  277,  277,  277,  277,  277,  277,  277,  277,  277,
          277,  277,  277,  277,  277,  214,  250,   56,   57,   58,
          277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
          277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
          277,  277,  277,  277,  277,  277,  202,  194,  277,  277,
          277,   33,  277,  277,  277,  277,  277,  277,  277,   53,
           54,   55,  160,  277,  277,  277,    0,    0,    0,    0,
    
            0,    0,  186,  190,  193,  277,  277,  277,   34,  277,
           44,   45,   46,  277,  197,  277,  277,   29,  277,  277,
          277,  277,  228,  229,  230,  277,  225,  226,  227,  277,
          195,  277,  218,   31,  240,  241,  242,  252,  222,  223,
          224,  277,  277,  277,  277,   70,  220,  277,  277,  277,
          277,   47,   48,   49,  277,  277,  277,  277,  277,  277,
          277,  277,  277,  277,  277,   79,  277,  277,  277,  277,
          277,  277,  277,  277,  277,  215,  277,  277,  277,  277,
          277,  277,  277,  277,  277,  277,  277,  277,  277,  198,
          277,  277,  249,   50,   51,   52,  277,  277,   37,  277,
    
            0,    0,    0,    0,    0,  257,  277,  277,   72,  277,
          277,  255,  277,  277,   43,  277,  277,  277,  277,  216,
          211,  260,  277,  277,  277,  277,  277,  277,  277,  207,
          277,  277,  277,  277,  161,   59,   60,   61,   62,   63,
           64,   65,   66,   67,  277,  277,  277,  277,  221,  203,
          277,  277,  209,  277,  277,  277,   42,  277,  267,  158,
          246,   77,  210,  159,  277,  258,  205,  277,  277,  277,
          277,  277,  277,  277,  277,  277,  277,  277,    0,    0,
            0,    0,    0,  277,  277,  277,  277,  277,  206,   41,
          231,  232,  233,  234,  235,  236,  237,  238,  239,  277,
    
          270,  271,  272,  277,  277,  277,  277,  277,  115,  116,
          117,  277,  277,  269,  277,  277,  277,  251,  277,  277,
          277,  277,  114,  277,  277,  277,  277,  277,  277,  277,
          277,  200,  274,  275,  276,  277,  277,  277,  277,  277,
          277,   71,  277,  277,   73,  277,  277,    0,    0,    0,
            0,    0,    0,  277,  277,   74,  152,   35,  212,  126,
          127,  128,  277,  277,  277,  277,  277,  277,  277,  277,
          277,  277,  277,  277,  277,  277,  208,  277,  277,  277,
          155,  266,  154,  277,  277,  277,  277,  277,  277,  277,
          277,  201,  137,  138,  139,  277,  277,  273,  219,  277,
    
          153,  277,    0,    5,    0,    8,    0,    0,    0,   16,
            3,  277,   28,  277,  277,  277,  277,  277,  277,  277,
          277,  277,  124,  277,  277,  277,  119,  213,   75,  277,
          277,  277,  277,  277,  248,  277,  256,  253,  261,   80,
           81,   82,  277,  277,  277,  277,  277,  277,  277,  277,
          277,  277,  277,  277,  277,  277,  277,  156,    0,    0,
            0,    0,    0,    0,    0,    0,    0,  277,  277,  277,
          135,  277,  277,  130,  277,  277,  277,  277,  277,  277,
          277,  277,   91,   92,   93,  277,  277,  277,  277,  277,
          277,  277,  277,  277,  277,  277,  277,  277,  268,  277,
    
          277,  146,  277,  277,  141,   97,   98,   99,  277,  277,
            4,    0,    0,    0,    6,    0,    0,    0,    0,    0,
            0,    0,  157,  277,  277,  277,  277,  277,  277,  277,
          277,  277,  277,  118,  277,  120,  277,  277,  277,  277,
          277,  277,  277,  277,  277,  277,  277,  103,  277,  277,
          277,  277,   83,  277,  277,  277,  277,  277,  277,  277,
          277,  277,  277,  277,  277,  277,    0,    7,    0,    0,
            0,    0,    0,  277,  277,  277,  129,  131,  277,  121,
          277,  122,  277,  277,  277,  277,  277,  104,  277,  277,
           94,  277,  277,  277,  277,  277,  277,  277,  277,  277,
    
          277,  277,  277,  277,  277,  277,  140,  142,  277,  277,
          277,  105,  277,  277,  100,    0,    0,    0,    0,  132,
          133,  277,  277,  277,  148,  277,  277,  149,  277,  277,
          277,  277,  277,  277,  277,   78,  277,  277,  277,  277,
          243,  277,  244,  259,  277,  277,  277,  143,  144,  277,
          277,  277,  277,  277,  277,  277,  277,    0,    0,    0,
            0,  277,  277,  277,  277,  125,  123,  277,  277,  277,
          262,  264,  277,   84,  277,   85,  277,  277,  277,  277,
          277,  277,  277,  277,  277,  277,  277,  263,  265,  277,
            0,    0,    0,    0,    0,  136,  134,  277,  277,   95,
    
           96,  277,  277,  277,   86,  277,  277,  277,   87,  277,
          277,  277,  147,  145,  101,  102,  277,  277,    0,    0,
            0,    0,    0,  277,  277,  277,  277,  277,  277,  106,
          277,  109,  277,  277,  277,  277,    0,    0,    0,    0,
            0,    0,  277,  277,  107,  110,  277,  277,  277,  277,
           88,  277,  108,  111,    0,    0,    0,    9,    0,    0,
            0,    0,  150,  151,  277,  277,  277,  277,  113,    0,
            0,   10,    0,    0,    0,    0,  277,  277,  245,  277,
            0,    0,    0,    0,    0,   13,   89,   90,  277,    0,
            0,    0,   11,    0,   14,  277,    0,    0,   12,  112,
    
            0,    0,    0,    0,    0,    0,    0,    0,    0,   15,
            0
        } ;
    
    static yyconst flex_int32_t yy_ec[256] =
        {   0,
            1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
            1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
            1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
            1,    5,    6,    7,    8,    1,    9,   10,    1,   11,
           12,   13,   14,    1,   15,   16,   17,   18,   19,   20,
           21,   22,   23,   24,   23,   25,   25,   26,    1,   27,
           28,   29,    1,    1,   30,   31,   32,   33,   34,   35,
           36,   37,   37,   37,   37,   38,   39,   37,   40,   37,
           37,   41,   42,   43,   44,   37,   37,   45,   37,   37,
            1,    1,    1,   46,   47,    1,   48,   49,   50,   51,
    
           52,   53,   54,   55,   56,   57,   58,   59,   60,   61,
           62,   63,   37,   64,   65,   66,   67,   68,   69,   70,
           71,   72,    1,   73,    1,    1,    1,    1,    1,    1,
            1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
            1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
            1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
            1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
            1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
            1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
            1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    
            1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
            1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
            1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
            1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
            1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
            1,    1,    1,    1,    1
        } ;
    
    static yyconst flex_int32_t yy_meta[74] =
        {   0,
            1,    2,    3,    1,    4,    1,    5,    1,    1,    1,
            1,    1,    1,    1,    1,    6,    5,    7,    7,    7,
            7,    7,    7,    7,    7,    1,    1,    1,    1,    8,
            8,    8,    8,    9,   10,   11,   11,   12,   11,   11,
           11,   11,   11,   11,   11,    1,   11,    8,    8,    8,
            8,    9,   10,   11,   11,   11,   11,   11,   12,   11,
           11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
           11,   11,    1
        } ;
    
    static yyconst flex_int16_t yy_base[1127] =
        {   0,
            0,   72,   80,    0, 1606, 1605, 1607, 1610,   74, 1610,
         1578, 1577,  144, 1576,  141,  142,  140, 1575,  157,  212,
          139, 1574,  155,    0,  128,  121,  126,  137,  151,  145,
          192, 1539,  144,  202,  160,  162,  177, 1533,  201,  190,
          218,  217,  221,  195,  165,  210,  288,  292, 1610,  296,
         1610, 1582, 1610,  284, 1610,    0, 1610, 1610,  308, 1610,
         1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610,  343, 1610,
          385,  153,  283,  300, 1610, 1560,    0, 1538,    0, 1610,
         1558, 1536, 1566, 1610, 1610, 1610, 1565,    0, 1610, 1610,
         1526, 1531,  155, 1528, 1537, 1535, 1535, 1521, 1524, 1536,
    
          271,  274, 1518, 1534, 1514, 1528, 1514, 1511, 1511, 1517,
          221,  213, 1511, 1522, 1507, 1513, 1517, 1518, 1547,    0,
         1508, 1519,  274, 1518, 1513, 1493,  136, 1497, 1511, 1501,
          282, 1494,  293, 1507, 1509,  263, 1488, 1496,  268, 1483,
         1492,  305,  307, 1497, 1492, 1495, 1483, 1486, 1526,  286,
          188,  293, 1495, 1482, 1495,  315, 1488, 1487, 1610, 1610,
          371,  380,  395, 1610, 1472, 1480, 1484, 1475, 1486,  382,
            0,  393,    0,  446, 1610, 1502, 1483,  393,  458, 1610,
         1500, 1481,  466,  457,  455, 1610, 1610, 1477,    0, 1472,
         1467, 1471, 1481, 1475, 1477,  306, 1460, 1460, 1472, 1463,
    
          323, 1474, 1459, 1470, 1453, 1469, 1467, 1464, 1455, 1462,
         1448, 1446, 1459, 1444, 1461,    0, 1458, 1445, 1453, 1450,
         1454, 1435, 1454, 1447, 1444, 1432, 1431,  328, 1449, 1436,
         1445, 1432, 1439, 1429,  370, 1435, 1438, 1428, 1436, 1424,
         1428, 1419, 1434, 1433, 1423, 1430,  288, 1413, 1432, 1415,
         1413, 1412, 1423, 1412, 1407, 1405, 1407, 1418, 1403, 1405,
         1402, 1414, 1413, 1396, 1415, 1396,  368, 1405, 1400, 1398,
         1408, 1386,  404, 1405, 1407, 1395, 1387, 1386, 1401, 1389,
         1401, 1384,    0,  482,  459, 1610,  505, 1610, 1412, 1393,
          513,  504, 1610, 1610, 1410, 1391, 1610, 1405, 1383, 1373,
    
         1384, 1383,    0, 1380, 1385,  413,    0,    0, 1372, 1370,
         1370, 1371, 1366, 1375, 1363, 1363, 1380,  420, 1368,  435,
            0,    0, 1362, 1373, 1372, 1372,    0, 1356,  523,    0,
            0, 1358,  526, 1368, 1365, 1366, 1356, 1350, 1349, 1392,
         1349, 1348, 1348,  529, 1343,    0,    0, 1339, 1338, 1337,
         1339, 1340, 1345, 1339, 1335, 1349, 1344, 1344, 1342, 1341,
         1334, 1328, 1330, 1329, 1332, 1332, 1338, 1323, 1326, 1321,
         1330, 1335, 1322, 1319, 1332, 1322,    0,    0, 1329, 1327,
         1324, 1353, 1314, 1314, 1320, 1310, 1318,  532, 1315,    0,
            0,    0,    0, 1304, 1317, 1316, 1315, 1307, 1313, 1310,
    
         1298,  546,  520, 1610, 1610, 1310, 1311, 1311,    0, 1295,
            0,    0,    0, 1296,    0, 1305, 1295,    0, 1294, 1295,
         1301, 1288, 1281, 1280, 1279, 1296,    0,    0,    0, 1286,
            0, 1282,    0,    0,    0,    0,    0,    0,    0,    0,
            0, 1295, 1292,  555, 1291,    0,    0, 1295, 1288, 1284,
         1280,    0,    0,    0, 1272,  539,  560,  563, 1277, 1273,
         1279, 1269, 1267, 1281, 1265,    0, 1265, 1279, 1267, 1263,
         1270, 1264, 1276, 1271, 1271,    0, 1268, 1265, 1269, 1252,
         1250, 1253, 1260, 1266, 1261, 1262, 1259, 1288, 1245,    0,
         1247, 1248,    0,    0,    0,    0, 1245, 1249,    0, 1242,
    
         1242, 1235,  448, 1241, 1244,    0, 1252, 1231,    0, 1241,
         1235,    0, 1228, 1228,    0, 1242,  568,  571,  574,    0,
         1244,    0,  577,  581, 1258, 1257, 1256, 1221, 1220,    0,
         1220, 1237, 1236, 1231,    0,    0,    0,    0,    0,    0,
            0,    0,    0,    0, 1219, 1233, 1219, 1216,    0,    0,
         1222,  457,    0, 1218, 1226, 1225,    0, 1217, 1209,    0,
            0,    0,    0,    0, 1206,    0,    0, 1205, 1217,  583,
          587, 1222, 1208, 1215, 1214, 1211, 1205, 1202, 1197, 1210,
          609, 1212, 1197, 1191, 1191, 1205, 1189, 1202,    0,    0,
            0,    0,    0,    0,    0,    0,    0,    0,    0, 1194,
    
            0,    0,    0, 1219, 1218, 1217, 1182, 1181,  432,  596,
            0, 1194, 1197,    0, 1195, 1183, 1179,    0, 1192, 1189,
         1188, 1177,    0, 1176, 1166, 1184, 1169, 1172,  620, 1177,
         1180,    0,    0,    0,    0, 1198, 1197, 1196, 1161, 1160,
         1160,    0, 1174, 1160,    0, 1171, 1163, 1165, 1168,  653,
          618,  506, 1158, 1162, 1165,    0,    0,    0,    0, 1186,
          606,    0, 1162, 1165, 1149, 1157, 1147, 1168, 1157, 1153,
         1154, 1154, 1153, 1138,  629, 1151,    0, 1152, 1140, 1139,
            0,    0,    0, 1135, 1165, 1164, 1163, 1128, 1127, 1123,
         1131,    0, 1161,  623,    0, 1137, 1140,    0,    0,  647,
    
            0, 1117, 1125, 1610,  722, 1610,  681,    0,  641,  686,
         1610, 1125,    0, 1121, 1120, 1141, 1130, 1128, 1128, 1115,
         1130, 1113, 1146, 1125, 1126, 1121, 1142,    0,    0, 1138,
         1137, 1136, 1096, 1095,    0, 1078,    0,    0,    0,  580,
          651, 1102, 1085, 1087, 1069, 1080, 1066, 1065, 1084, 1072,
         1070, 1068, 1085, 1084, 1073, 1031, 1003,    0, 1008, 1061,
          754,  692,  704, 1024, 1013, 1001, 1015,  996,  997,  996,
         1029, 1008, 1005, 1026, 1007, 1003, 1005,  988,  985,  999,
          985,  984, 1017,  678,    0,  993,  996,  988,  979,  987,
          977,  997,  986,  982,  983,  981,  980,  979,    0,  960,
    
          955,  988,  958,   23,  138,  188,  681,    0,  188,  210,
         1610,  269,  710,  728, 1610,  747,    0,  733,  306,  344,
          328,  335,    0,  353,  374,  365,  383,  395,  411,  425,
          436,  444,  453,    0,  459,    0,  476,  477,  492,  520,
          520,  524,  526,  541,  551,  568,  553,  594,  575,  594,
          607,  607,  640,  599,  617,  621,  616,  619,  623,  625,
          632,  646,  672,  664,  665,  669,  758, 1610,  777,  690,
          665,  678,  678,  680,  682,  690,    0,    0,  694,  720,
          695,  739,  735,  715,  737,  722,  723,  758,  739,  738,
          761,  740,  745,  743,  747,  732,  731,  747,  734,  737,
    
          738,  748,  743,  734,  735,  743,    0,    0,  744,  745,
          746,  781,  762,  761,  784,  777,  762,  757,  762,    0,
            0,  771,  772,  766,    0,  767,  752,    0,  754,  778,
          779,  764,  763,  766,  767,    0,  761,  771,  763,  771,
          794,  775,    0,    0,  774,  791,  792,    0,    0,  793,
          794,  795,  796,  781,  780,  783,  784,  847,  848,  795,
          793,  784,  785,  809,  810,    0,    0,  789,  790,  798,
            0,    0,  799,  822,  796,  824,  819,  813,  800,  822,
          820,  813,  802,  803,  804,  805,  813,    0,    0,  814,
          877,  878,  879,  813,  832,    0,    0,  836,  837,    0,
    
            0,  842,  843,  837,    0,  838,  823,  847,    0,  825,
          835,  858,    0,    0,    0,    0,  851,  852,  840,  900,
          850,  852,  904,  845,  846,  839,  841,  865,  866,    0,
          865,  875,  849,  885,  849,  850,  854,  870,  922,  924,
          926,  934,  856,  861,    0,    0,  881,  887,  878,  887,
            0,  901,    0,    0,  896,  943,  944, 1610,  948,  949,
          955,  905,    0,    0,  885,  890,  892,  915,    0,  900,
          963, 1610,  965,  916,  918,  971,  903,  905,    0,  927,
          923,  927,  979,  980,  985, 1610,    0,    0,  924,  940,
          993,  997, 1610,  998, 1610,  920,  932, 1002, 1610,    0,
    
          928, 1010, 1011, 1018, 1023,  942,  947, 1024, 1028, 1610,
         1610, 1071, 1077, 1083, 1090, 1093, 1103, 1109, 1115, 1121,
         1127, 1138, 1139, 1146, 1157, 1158
        } ;
    
    static yyconst flex_int16_t yy_def[1127] =
        {   0,
         1111,    1, 1111,    3, 1112, 1112, 1111, 1111, 1111, 1111,
         1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
         1111, 1111, 1111, 1113, 1111, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1111, 1111, 1111, 1111, 1111,
         1111, 1111, 1111, 1111, 1111, 1114, 1111, 1111, 1111, 1111,
         1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
         1111,   19, 1115, 1111, 1111, 1111, 1116, 1111,   20, 1111,
         1111, 1111, 1111, 1111, 1111, 1111, 1111, 1113, 1111, 1111,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
    
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1111, 1111,
         1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
         1117, 1111, 1114, 1111, 1111, 1111, 1111,   71, 1111, 1111,
         1111, 1111, 1111, 1118, 1116, 1111, 1111, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
    
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1111, 1111, 1111,
         1111, 1111, 1117, 1111, 1119, 1111, 1111, 1111, 1111, 1111,
         1111, 1120, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1113,
    
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1111, 1111, 1111, 1111,
    
         1111, 1111, 1121, 1111, 1111, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
    
         1111, 1111, 1111, 1111, 1111, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1111, 1111,
         1111, 1111, 1111, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
    
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1111, 1111, 1111,
         1122, 1111, 1111, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
    
         1113, 1113, 1111, 1111, 1111, 1111, 1111, 1123, 1122, 1111,
         1111, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1111, 1124,
         1111, 1125, 1123, 1111, 1111, 1111, 1111, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
    
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1111, 1124, 1111, 1111, 1111, 1111, 1126, 1125, 1111, 1111,
         1111, 1111, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1111, 1111, 1126, 1111,
         1111, 1111, 1111, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
    
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1111, 1111, 1111, 1111, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1111, 1111, 1111,
         1111, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1111, 1111, 1111, 1111, 1111, 1113, 1113, 1113, 1113, 1113,
    
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1111, 1111,
         1111, 1111, 1111, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1113, 1113, 1111, 1111, 1111, 1111,
         1111, 1111, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
         1113, 1113, 1113, 1113, 1111, 1111, 1111, 1111, 1111, 1111,
         1111, 1111, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1111,
         1111, 1111, 1111, 1111, 1111, 1111, 1113, 1113, 1113, 1113,
         1111, 1111, 1111, 1111, 1111, 1111, 1113, 1113, 1113, 1111,
         1111, 1111, 1111, 1111, 1111, 1113, 1111, 1111, 1111, 1113,
    
         1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
            0, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
         1111, 1111, 1111, 1111, 1111, 1111
        } ;
    
    static yyconst flex_int16_t yy_nxt[1684] =
        {   0,
            8,    9,   10,    9,    9,   11,    8,    8,   12,   13,
            8,    8,   14,   15,   16,   17,   18,   19,   20,   20,
           20,   20,   20,   20,   20,    8,   21,   22,   23,   24,
           24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
           24,   24,   24,   24,   24,   25,   24,   26,   27,   28,
           29,   30,   31,   32,   33,   34,   24,   24,   35,   36,
           37,   38,   39,   40,   41,   42,   43,   44,   45,   24,
           24,   24,   46,   47,  859,   59,   47,   59,   59,   48,
           49,   50,   51,   50,   50,   49,   49,   49,   49,   49,
           49,   49,   49,   49,   49,   49,   52,   53,   54,   54,
    
           54,   54,   54,   54,   54,   55,   49,   49,   49,   56,
           56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
           56,   56,   56,   56,   56,   49,   56,   56,   56,   56,
           56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
           56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
           56,   56,   49,   62,   65,   89,   67,   69,   69,   69,
           69,   69,   69,   69,   69,   83,   84,  860,   66,   68,
           91,   63,   71,   90,   72,   72,   72,   72,   72,   72,
           72,   73,   86,   87,   98,   92,   93,   94,   99,   95,
           74,  116,   96,   97,   75,  100,  233, 1111,  101,  117,
    
           76,   77,  102,  107,  234,  108,  103,  126,   74,  128,
          104,  118,  105,  129,  109,   75,  190,  861,  106,  157,
          191,  127, 1111,   78,  130,  119,   77,   71,  158,   79,
           79,   79,   79,   79,   79,   79,   79,  159,  131,  110,
          865,  136,  154,  267,  149,   74,  155,  111,  133,   80,
          112,  137,  268,  113,  120,   81,  156,  121,  866,  114,
          214,  122,  123,   74,  134,  138,  124,  135,  145,  125,
           80,  146,  139,  140,  215,  813,  150,  141,   82,  212,
          147,  151,  160,  142,  143,  152,  144,  148,  153,  161,
          213,   59,  161,  163,  164,  162,  163,  170,   71,  170,
    
          170,  172,  172,  172,  172,  172,  172,  172,  172,   59,
          246,   59,   59,  183,  183,  251,   74,  184,  184,  184,
          184,  184,  184,  184,  184,  199,  202,  247,  248,  252,
          200,  201,  225,  203,   74,  226,  227,  238,  870,  228,
          269,  229,  241,  165,  239,  265,  266,  166,  270,  362,
          167,  340,  255,  363,  168,  257,  242,  307,  243,  169,
           69,   69,   69,   69,   69,   69,   69,   69,  256,  258,
          274,  308,  161,  275,   59,  161,  174,  175,  162,  341,
          176,  163,  164,  170,  163,  170,  170,  313,  314,  348,
          349,  350,  871,  872,  174,  175,  163,  164,  873,  163,
    
          874,  177,  178,  178,  178,  178,  178,  178,  178,  178,
          172,  172,  172,  172,  172,  172,  172,  172,  179,  180,
          383,  875,  181,  390,  391,  392,  287,  288,  876,  384,
          289,  165,  411,  412,  413,  166,  179,  180,  167,  423,
          424,  425,  168,  182,  287,  288,  165,  169,  877,  581,
          166,  290,  581,  167,  427,  428,  429,  168,  878,  284,
          284,  665,  169,  285,  285,  285,  285,  285,  285,  285,
          285,  291,  291,  666,  879,  292,  292,  292,  292,  292,
          292,  292,  292,  184,  184,  184,  184,  184,  184,  184,
          184,  294,  297,  175,  295,  880,  176,  881,  298,  285,
    
          285,  285,  285,  285,  285,  285,  285,  710,  623,  294,
          710,  175,  624,  297,  882,  296,  883,  177,  402,  402,
          884,  299,  403,  403,  403,  403,  403,  403,  403,  403,
          292,  292,  292,  292,  292,  292,  292,  292,  180,  885,
          886,  181,  435,  436,  437,  439,  440,  441,  452,  453,
          454,  494,  495,  496,  288,  887,  180,  289,  536,  537,
          538,  888,  182,  403,  403,  403,  403,  403,  403,  403,
          403,  889,  288,  525,  526,  527,  890,  891,  290,  539,
          540,  541,  542,  543,  544,  528,  529,  591,  592,  593,
          594,  595,  596,  597,  598,  599,  601,  602,  603,  604,
    
          605,  606,  633,  634,  635,  636,  637,  638,  892,  789,
          581,  607,  608,  581,  893,  894,  895,  639,  640,  705,
          706,  790,  705,  896,  897,  667,  650,  651,  651,  651,
          651,  651,  651,  651,  668,  715,  669,  670,  685,  686,
          687,  898,  705,  706,  716,  705,  717,  730,  731,  732,
          688,  689,  748,  690,  705,  706,  899,  705,  900,  733,
          734,  749,  903,  750,  904,  753,  754,  755,  905,  901,
          707,  707,  707,  707,  707,  707,  707,  756,  757,  906,
          791,  902,  705,  706,  907,  705,  908,  710,  909,  792,
          710,  793,  794,  814,  815,  910,  814,  708,  707,  707,
    
          707,  707,  707,  707,  707,  705,  706,  839,  705,  911,
          862,  867,  868,  912,  867,  913,  840,  914,  841,  863,
          915,  864,  708,  705,  706,  916,  705,  764,  760,  814,
          815,  917,  814,  918,  814,  815,  765,  814,  919,  761,
          762,  762,  762,  762,  762,  762,  762,  766,  814,  815,
          920,  814,  921,  922,  767,  814,  815,  923,  814,  867,
          868,  924,  867,  925,  816,  816,  816,  816,  816,  816,
          816,  816,  816,  816,  816,  816,  816,  816,  814,  815,
          926,  814,  927,  928,  929,  930,  931,  932,  933,  934,
          935,  936,  937,  938,  939,  940,  941,  942,  817,  943,
    
          944,  945,  946,  947,  948,  949,  950,  951,  952,  953,
          954,  955,  956,  957,  958,  959,  960,  961,  962,  963,
          964,  965,  966,  817,  967,  968,  969,  970,  971,  972,
          973,  974,  975,  976,  977,  978,  979,  980,  981,  982,
          983,  984,  985,  986,  987,  988,  989,  990,  991,  992,
          994,  991,  992,  995,  996,  997,  998,  999,  993, 1000,
         1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010,
         1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018,  991,  992,
         1020,  991,  992, 1020, 1022, 1023, 1024, 1025,  993, 1026,
         1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036,
    
         1037, 1020, 1038, 1040, 1020, 1041, 1043, 1044, 1041, 1045,
         1039, 1046, 1047, 1048, 1042, 1049, 1050, 1051, 1052, 1053,
         1054, 1055, 1056, 1057, 1063, 1059, 1057, 1041, 1059, 1064,
         1041, 1065, 1019, 1058, 1060, 1061, 1042, 1066, 1061, 1067,
         1021, 1068, 1069, 1070, 1071, 1057, 1077, 1071, 1057, 1059,
         1073, 1078, 1059, 1073, 1072, 1058, 1061, 1075, 1060, 1061,
         1079, 1021, 1080, 1081, 1071, 1076, 1073, 1071, 1082, 1073,
         1084, 1087, 1085, 1088, 1072, 1085, 1083, 1089, 1090, 1091,
         1092, 1094, 1086, 1092, 1094, 1096, 1085, 1097, 1100, 1085,
         1093, 1095, 1101, 1102, 1098, 1062, 1086, 1098, 1092, 1094,
    
         1107, 1092, 1094, 1098, 1099, 1108, 1098,  858, 1093, 1095,
         1074, 1103, 1103, 1099, 1103, 1103, 1062,  857,  856, 1105,
         1104, 1104, 1105,  855, 1105, 1109, 1074, 1105, 1109, 1109,
          854,  853, 1109,  852,  851, 1110,  850,  849,  848, 1110,
          847,  846,  845,  844,  843,  842,  838,  837,  836,  835,
          834,  833,  832,  831,  830,  829,  828,  827,  826,  825,
          824,  823,  822,  821,  820, 1106,  819,  813,  811,  810,
         1106,   57,   57,   57,   57,   57,   57,   57,   57,   57,
           57,   57,   57,   88,   88,   88,   88,   88,   88,  173,
          173,  173,  173,  173,  173,   73,   73,  809,   73,  185,
    
          185,  185,  185,  283,  283,  808,  283,  283,  283,  283,
          283,  283,  283,  283,  283,  184,  807,  806,  184,  805,
          184,  285,  804,  803,  285,  802,  285,  292,  801,  800,
          292,  799,  292,  403,  798,  797,  403,  796,  403,  709,
          709,  709,  795,  788,  709,  763,  763,  763,  763,  812,
          812,  812,  812,  812,  812,  812,  812,  812,  818,  818,
          818,  787,  786,  818,  869,  869,  869,  869,  785,  784,
          783,  782,  781,  780,  779,  778,  777,  776,  775,  774,
          773,  772,  771,  770,  769,  768,  759,  758,  752,  751,
          747,  746,  745,  744,  743,  742,  741,  740,  739,  738,
    
          737,  736,  735,  729,  728,  727,  726,  725,  724,  723,
          722,  721,  720,  719,  718,  714,  713,  712,  711,  704,
          703,  702,  701,  700,  699,  698,  697,  696,  695,  694,
          693,  692,  691,  684,  683,  682,  681,  680,  679,  678,
          677,  676,  675,  674,  673,  672,  671,  664,  663,  662,
          661,  660,  659,  658,  657,  656,  655,  654,  653,  652,
          649,  648,  647,  646,  645,  644,  643,  642,  641,  632,
          631,  630,  629,  628,  627,  626,  625,  622,  621,  620,
          619,  618,  617,  616,  615,  614,  613,  612,  611,  610,
          609,  600,  590,  589,  588,  587,  586,  585,  584,  583,
    
          582,  580,  579,  578,  577,  576,  575,  574,  573,  572,
          571,  570,  569,  568,  567,  566,  565,  564,  563,  562,
          561,  560,  559,  558,  557,  556,  555,  554,  553,  552,
          551,  550,  549,  548,  547,  546,  545,  535,  534,  533,
          532,  531,  530,  524,  523,  522,  521,  520,  519,  518,
          517,  516,  515,  514,  513,  512,  511,  510,  509,  508,
          507,  506,  505,  504,  503,  502,  501,  500,  499,  498,
          497,  493,  492,  491,  490,  489,  488,  487,  486,  485,
          484,  483,  482,  481,  480,  479,  478,  477,  476,  475,
          474,  473,  472,  471,  470,  469,  468,  467,  466,  465,
    
          464,  463,  462,  461,  460,  459,  458,  457,  456,  455,
          451,  450,  449,  448,  447,  446,  445,  444,  443,  442,
          438,  434,  433,  432,  431,  430,  426,  422,  421,  420,
          419,  418,  417,  416,  415,  414,  410,  409,  408,  407,
          406,  297,  297,  405,  405,  404,  404,  401,  400,  399,
          398,  397,  396,  395,  394,  393,  389,  388,  387,  386,
          385,  382,  381,  380,  379,  378,  377,  376,  375,  374,
          373,  372,  371,  370,  369,  368,  367,  366,  365,  364,
          361,  360,  359,  358,  357,  356,  355,  354,  353,  352,
          351,  347,  346,  345,  344,  343,  342,  339,  338,  337,
    
          336,  335,  334,  333,  332,  331,  330,  329,  328,  327,
          326,  325,  324,  323,  322,  321,  320,  319,  318,  317,
          316,  315,  312,  311,  310,  309,  306,  305,  304,  303,
          302,  301,  300,  293,  293,  286,  286,  282,  281,  280,
          279,  278,  277,  276,  273,  272,  271,  264,  263,  262,
          261,  260,  259,  254,  253,  250,  249,  245,  244,  240,
          237,  236,  235,  232,  231,  230,  224,  223,  222,  221,
          220,  219,  218,  217,  216,  211,  210,  209,  208,  207,
          206,  205,  204,  198,  197,  196,  195,  194,  193,  192,
          189,  188,  187,  186,   80,   80,   75,   75,  171,  132,
    
          115,   85,   70,   64,   61,   60, 1111,   58,   58,    7,
         1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
         1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
         1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
         1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
         1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
         1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
         1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
         1111, 1111, 1111
        } ;
    
    static yyconst flex_int16_t yy_chk[1684] =
        {   0,
            1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
            1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
            1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
            1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
            1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
            1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
            1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
            1,    1,    1,    2,  804,    9,    2,    9,    9,    2,
            3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
            3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
    
            3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
            3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
            3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
            3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
            3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
            3,    3,    3,   13,   15,   25,   16,   17,   17,   17,
           17,   17,   17,   17,   17,   21,   21,  805,   15,   16,
           26,   13,   19,   25,   19,   19,   19,   19,   19,   19,
           19,   19,   23,   23,   28,   26,   26,   27,   28,   27,
           19,   33,   27,   27,   19,   28,  127,   72,   28,   33,
    
           19,   19,   29,   30,  127,   30,   29,   35,   19,   36,
           29,   33,   29,   36,   30,   19,   93,  806,   29,   45,
           93,   35,   72,   19,   37,   34,   19,   20,   45,   20,
           20,   20,   20,   20,   20,   20,   20,   46,   37,   31,
          809,   40,   44,  151,   43,   20,   44,   31,   39,   20,
           31,   40,  151,   31,   34,   20,   44,   34,  810,   31,
          112,   34,   34,   20,   39,   41,   34,   39,   42,   34,
           20,   42,   41,   41,  112,  812,   43,   41,   20,  111,
           42,   43,   46,   41,   41,   43,   41,   42,   43,   47,
          111,   47,   47,   48,   48,   47,   48,   50,   73,   50,
    
           50,   54,   54,   54,   54,   54,   54,   54,   54,   59,
          136,   59,   59,   74,   74,  139,   73,   74,   74,   74,
           74,   74,   74,   74,   74,  101,  102,  136,  136,  139,
          101,  101,  123,  102,   73,  123,  123,  131,  819,  123,
          152,  123,  133,   48,  131,  150,  150,   48,  152,  247,
           48,  228,  142,  247,   48,  143,  133,  196,  133,   48,
           69,   69,   69,   69,   69,   69,   69,   69,  142,  143,
          156,  196,  161,  156,  161,  161,   69,   69,  161,  228,
           69,  162,  162,  170,  162,  170,  170,  201,  201,  235,
          235,  235,  820,  821,   69,   69,  163,  163,  822,  163,
    
          824,   69,   71,   71,   71,   71,   71,   71,   71,   71,
          172,  172,  172,  172,  172,  172,  172,  172,   71,   71,
          267,  825,   71,  273,  273,  273,  178,  178,  826,  267,
          178,  162,  306,  306,  306,  162,   71,   71,  162,  318,
          318,  318,  162,   71,  178,  178,  163,  162,  827,  503,
          163,  178,  503,  163,  320,  320,  320,  163,  828,  174,
          174,  609,  163,  174,  174,  174,  174,  174,  174,  174,
          174,  179,  179,  609,  829,  179,  179,  179,  179,  179,
          179,  179,  179,  183,  183,  183,  183,  183,  183,  183,
          183,  184,  185,  285,  184,  830,  285,  831,  185,  284,
    
          284,  284,  284,  284,  284,  284,  284,  652,  552,  184,
          652,  285,  552,  185,  832,  184,  833,  285,  287,  287,
          835,  185,  287,  287,  287,  287,  287,  287,  287,  287,
          291,  291,  291,  291,  291,  291,  291,  291,  292,  837,
          838,  292,  329,  329,  329,  333,  333,  333,  344,  344,
          344,  388,  388,  388,  403,  839,  292,  403,  456,  456,
          456,  840,  292,  402,  402,  402,  402,  402,  402,  402,
          402,  841,  403,  444,  444,  444,  842,  843,  403,  457,
          457,  457,  458,  458,  458,  444,  444,  517,  517,  517,
          518,  518,  518,  519,  519,  519,  523,  523,  523,  524,
    
          524,  524,  570,  570,  570,  571,  571,  571,  844,  740,
          581,  524,  524,  581,  845,  846,  847,  571,  571,  651,
          651,  740,  651,  848,  849,  610,  581,  581,  581,  581,
          581,  581,  581,  581,  610,  661,  610,  610,  629,  629,
          629,  850,  709,  709,  661,  709,  661,  675,  675,  675,
          629,  629,  694,  629,  650,  650,  851,  650,  852,  675,
          675,  694,  854,  694,  855,  700,  700,  700,  856,  853,
          650,  650,  650,  650,  650,  650,  650,  700,  700,  857,
          741,  853,  707,  707,  858,  707,  859,  710,  860,  741,
          710,  741,  741,  762,  762,  861,  762,  650,  707,  707,
    
          707,  707,  707,  707,  707,  763,  763,  784,  763,  862,
          807,  813,  813,  863,  813,  864,  784,  865,  784,  807,
          866,  807,  650,  705,  705,  870,  705,  710,  705,  814,
          814,  871,  814,  872,  818,  818,  710,  818,  873,  705,
          705,  705,  705,  705,  705,  705,  705,  710,  816,  816,
          874,  816,  875,  876,  710,  761,  761,  879,  761,  867,
          867,  880,  867,  881,  816,  816,  816,  816,  816,  816,
          816,  761,  761,  761,  761,  761,  761,  761,  869,  869,
          882,  869,  883,  884,  885,  886,  887,  888,  889,  890,
          891,  892,  893,  894,  895,  896,  897,  898,  761,  899,
    
          900,  901,  902,  903,  904,  905,  906,  909,  910,  911,
          912,  913,  914,  915,  916,  917,  918,  919,  922,  923,
          924,  926,  927,  761,  929,  930,  931,  932,  933,  934,
          935,  937,  938,  939,  940,  941,  942,  945,  946,  947,
          950,  951,  952,  953,  954,  955,  956,  957,  958,  959,
          960,  958,  959,  961,  962,  963,  964,  965,  959,  968,
          969,  970,  973,  974,  975,  976,  977,  978,  979,  980,
          981,  982,  983,  984,  985,  986,  987,  990,  991,  992,
          993,  991,  992,  993,  994,  995,  998,  999,  992, 1002,
         1003, 1004, 1006, 1007, 1008, 1010, 1011, 1012, 1017, 1018,
    
         1019, 1020, 1021, 1022, 1020, 1023, 1024, 1025, 1023, 1026,
         1021, 1027, 1028, 1029, 1023, 1031, 1032, 1033, 1034, 1035,
         1036, 1037, 1038, 1039, 1043, 1040, 1039, 1041, 1040, 1044,
         1041, 1047,  991, 1039, 1040, 1042, 1041, 1048, 1042, 1049,
          993, 1050, 1052, 1055, 1056, 1057, 1065, 1056, 1057, 1059,
         1060, 1066, 1059, 1060, 1056, 1057, 1061, 1062, 1059, 1061,
         1067, 1020, 1068, 1070, 1071, 1062, 1073, 1071, 1074, 1073,
         1075, 1077, 1076, 1078, 1071, 1076, 1074, 1080, 1081, 1082,
         1083, 1084, 1076, 1083, 1084, 1089, 1085, 1090, 1096, 1085,
         1083, 1084, 1097, 1101, 1091, 1042, 1085, 1091, 1092, 1094,
    
         1106, 1092, 1094, 1098, 1091, 1107, 1098,  803, 1092, 1094,
         1060, 1102, 1103, 1098, 1102, 1103, 1061,  802,  801, 1104,
         1102, 1103, 1104,  800, 1105, 1108, 1073, 1105, 1108, 1109,
          798,  797, 1109,  796,  795, 1108,  794,  793,  792, 1109,
          791,  790,  789,  788,  787,  786,  783,  782,  781,  780,
          779,  778,  777,  776,  775,  774,  773,  772,  771,  770,
          769,  768,  767,  766,  765, 1104,  764,  760,  759,  757,
         1105, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112,
         1112, 1112, 1112, 1113, 1113, 1113, 1113, 1113, 1113, 1114,
         1114, 1114, 1114, 1114, 1114, 1115, 1115,  756, 1115, 1116,
    
         1116, 1116, 1116, 1117, 1117,  755, 1117, 1117, 1117, 1117,
         1117, 1117, 1117, 1117, 1117, 1118,  754,  753, 1118,  752,
         1118, 1119,  751,  750, 1119,  749, 1119, 1120,  748,  747,
         1120,  746, 1120, 1121,  745,  744, 1121,  743, 1121, 1122,
         1122, 1122,  742,  736, 1122, 1123, 1123, 1123, 1123, 1124,
         1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1125, 1125,
         1125,  734,  733, 1125, 1126, 1126, 1126, 1126,  732,  731,
          730,  727,  726,  725,  724,  723,  722,  721,  720,  719,
          718,  717,  716,  715,  714,  712,  703,  702,  697,  696,
          693,  691,  690,  689,  688,  687,  686,  685,  684,  680,
    
          679,  678,  676,  674,  673,  672,  671,  670,  669,  668,
          667,  666,  665,  664,  663,  660,  655,  654,  653,  649,
          648,  647,  646,  644,  643,  641,  640,  639,  638,  637,
          636,  631,  630,  628,  627,  626,  625,  624,  622,  621,
          620,  619,  617,  616,  615,  613,  612,  608,  607,  606,
          605,  604,  600,  588,  587,  586,  585,  584,  583,  582,
          580,  579,  578,  577,  576,  575,  574,  573,  572,  569,
          568,  565,  559,  558,  556,  555,  554,  551,  548,  547,
          546,  545,  534,  533,  532,  531,  529,  528,  527,  526,
          525,  521,  516,  514,  513,  511,  510,  508,  507,  505,
    
          504,  502,  501,  500,  498,  497,  492,  491,  489,  488,
          487,  486,  485,  484,  483,  482,  481,  480,  479,  478,
          477,  475,  474,  473,  472,  471,  470,  469,  468,  467,
          465,  464,  463,  462,  461,  460,  459,  455,  451,  450,
          449,  448,  445,  443,  442,  432,  430,  426,  425,  424,
          423,  422,  421,  420,  419,  417,  416,  414,  410,  408,
          407,  406,  401,  400,  399,  398,  397,  396,  395,  394,
          389,  387,  386,  385,  384,  383,  382,  381,  380,  379,
          376,  375,  374,  373,  372,  371,  370,  369,  368,  367,
          366,  365,  364,  363,  362,  361,  360,  359,  358,  357,
    
          356,  355,  354,  353,  352,  351,  350,  349,  348,  345,
          343,  342,  341,  340,  339,  338,  337,  336,  335,  334,
          332,  328,  326,  325,  324,  323,  319,  317,  316,  315,
          314,  313,  312,  311,  310,  309,  305,  304,  302,  301,
          300,  299,  298,  296,  295,  290,  289,  282,  281,  280,
          279,  278,  277,  276,  275,  274,  272,  271,  270,  269,
          268,  266,  265,  264,  263,  262,  261,  260,  259,  258,
          257,  256,  255,  254,  253,  252,  251,  250,  249,  248,
          246,  245,  244,  243,  242,  241,  240,  239,  238,  237,
          236,  234,  233,  232,  231,  230,  229,  227,  226,  225,
    
          224,  223,  222,  221,  220,  219,  218,  217,  215,  214,
          213,  212,  211,  210,  209,  208,  207,  206,  205,  204,
          203,  202,  200,  199,  198,  197,  195,  194,  193,  192,
          191,  190,  188,  182,  181,  177,  176,  169,  168,  167,
          166,  165,  158,  157,  155,  154,  153,  149,  148,  147,
          146,  145,  144,  141,  140,  138,  137,  135,  134,  132,
          130,  129,  128,  126,  125,  124,  122,  121,  119,  118,
          117,  116,  115,  114,  113,  110,  109,  108,  107,  106,
          105,  104,  103,  100,   99,   98,   97,   96,   95,   94,
           92,   91,   87,   83,   82,   81,   78,   76,   52,   38,
    
           32,   22,   18,   14,   12,   11,    7,    6,    5, 1111,
         1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
         1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
         1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
         1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
         1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
         1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
         1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
         1111, 1111, 1111
        } ;
    
    /* The intent behind this definition is that it'll catch
     * any uses of REJECT which flex missed.
     */
    #define REJECT reject_used_but_not_detected
    #define yymore() yymore_used_but_not_detected
    #define YY_MORE_ADJ 0
    #define YY_RESTORE_YY_MORE_OFFSET
    #line 1 "../src/compiler/glsl/glsl_lexer.ll"
    #line 2 "../src/compiler/glsl/glsl_lexer.ll"
    /*
     * Copyright © 2008, 2009 Intel Corporation
     *
     * Permission is hereby granted, free of charge, to any person obtaining a
     * copy of this software and associated documentation files (the "Software"),
     * to deal in the Software without restriction, including without limitation
     * the rights to use, copy, modify, merge, publish, distribute, sublicense,
     * and/or sell copies of the Software, and to permit persons to whom the
     * Software is furnished to do so, subject to the following conditions:
     *
     * The above copyright notice and this permission notice (including the next
     * paragraph) shall be included in all copies or substantial portions of the
     * Software.
     *
     * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
     * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
     * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
     * DEALINGS IN THE SOFTWARE.
     */
    #include <ctype.h>
    #include <limits.h>
    #include "util/strtod.h"
    #include "ast.h"
    #include "glsl_parser_extras.h"
    #include "glsl_parser.h"
    #include "main/consts_exts.h"
    
    static int classify_identifier(struct _mesa_glsl_parse_state *, const char *,
    			       unsigned name_len, YYSTYPE *output);
    
    #ifdef _MSC_VER
    #define YY_NO_UNISTD_H
    #endif
    
    #define YY_NO_INPUT
    #define YY_USER_ACTION						\
       do {								\
          yylloc->first_column = yycolumn + 1;			\
          yylloc->first_line = yylloc->last_line = yylineno + 1;	\
          yycolumn += yyleng;					\
          yylloc->last_column = yycolumn + 1;			\
       } while(0);
    
    #define YY_USER_INIT yylineno = 0; yycolumn = 0; yylloc->source = 0; \
       yylloc->path = NULL;
    
    /* A macro for handling reserved words and keywords across language versions.
     *
     * Certain words start out as identifiers, become reserved words in
     * later language revisions, and finally become language keywords.
     * This may happen at different times in desktop GLSL and GLSL ES.
     *
     * For example, consider the following lexer rule:
     * samplerBuffer       KEYWORD(130, 0, 140, 0, SAMPLERBUFFER)
     *
     * This means that "samplerBuffer" will be treated as:
     * - a keyword (SAMPLERBUFFER token)         ...in GLSL >= 1.40
     * - a reserved word - error                 ...in GLSL >= 1.30
     * - an identifier                           ...in GLSL <  1.30 or GLSL ES
     */
    #define KEYWORD(reserved_glsl, reserved_glsl_es,			\
                    allowed_glsl, allowed_glsl_es, token)			\
       KEYWORD_WITH_ALT(reserved_glsl, reserved_glsl_es,			\
                        allowed_glsl, allowed_glsl_es, false, token)
    
    /**
     * Like the KEYWORD macro, but the word is also treated as a keyword
     * if the given boolean expression is true.
     */
    #define KEYWORD_WITH_ALT(reserved_glsl, reserved_glsl_es,		\
                             allowed_glsl, allowed_glsl_es,			\
                             alt_expr, token)				\
       do {									\
          if (yyextra->is_version(allowed_glsl, allowed_glsl_es)		\
              || (alt_expr)) {						\
    	 return token;							\
          } else if (yyextra->is_version(reserved_glsl,			\
                                         reserved_glsl_es)) {		\
    	 _mesa_glsl_error(yylloc, yyextra,				\
    			  "illegal use of reserved word `%s'", yytext);	\
    	 return ERROR_TOK;						\
          } else {								\
    	 return classify_identifier(yyextra, yytext, yyleng, yylval);	\
          }									\
       } while (0)
    
    /**
     * Like KEYWORD_WITH_ALT, but used for built-in GLSL types
     */
    #define TYPE_WITH_ALT(reserved_glsl, reserved_glsl_es,			\
    		      allowed_glsl, allowed_glsl_es,			\
    		      alt_expr, gtype)					\
       do {									\
          if (yyextra->is_version(allowed_glsl, allowed_glsl_es)		\
              || (alt_expr)) {						\
    	 yylval->type = gtype; 						\
    	 return BASIC_TYPE_TOK;						\
          } else if (yyextra->is_version(reserved_glsl,			\
                                         reserved_glsl_es)) {		\
    	 _mesa_glsl_error(yylloc, yyextra,				\
    			  "illegal use of reserved word `%s'", yytext);	\
    	 return ERROR_TOK;						\
          } else {								\
    	 return classify_identifier(yyextra, yytext, yyleng, yylval);	\
          }									\
       } while (0)
    
    #define TYPE(reserved_glsl, reserved_glsl_es,				\
                 allowed_glsl, allowed_glsl_es,				\
                 gtype)							\
       TYPE_WITH_ALT(reserved_glsl, reserved_glsl_es,			\
                     allowed_glsl, allowed_glsl_es,				\
                     false, gtype)
    
    /**
     * A macro for handling keywords that have been present in GLSL since
     * its origin, but were changed into reserved words in later versions.
     */
    #define DEPRECATED_KEYWORD(token, state, reserved_glsl,			\
                               reserved_glsl_es)				\
       do {									\
          if (yyextra->is_version(reserved_glsl, reserved_glsl_es) &&	\
              !state->compat_shader) {					\
    	 _mesa_glsl_error(yylloc, yyextra,				\
    			  "illegal use of reserved word `%s'", yytext);	\
    	 return ERROR_TOK;						\
          } else {								\
             return token;							\
          }									\
       } while (0)
    
    /**
     * Like DEPRECATED_KEYWORD, but for types
     */
    #define DEPRECATED_ES_TYPE_WITH_ALT(alt_expr, gtype)			\
       do {									\
          if (yyextra->is_version(0, 300)) {				\
             _mesa_glsl_error(yylloc, yyextra,				\
                              "illegal use of reserved word `%s'", yytext);	\
             return ERROR_TOK;						\
          } else if (alt_expr) {						\
             yylval->type = gtype;						\
             return BASIC_TYPE_TOK;						\
          } else {								\
             return classify_identifier(yyextra, yytext, yyleng, yylval);	\
          }									\
       } while (0)
    
    #define DEPRECATED_ES_TYPE(gtype)					\
       DEPRECATED_ES_TYPE_WITH_ALT(true, gtype)
    
    static int
    literal_integer(char *text, int len, struct _mesa_glsl_parse_state *state,
    		YYSTYPE *lval, YYLTYPE *lloc, int base)
    {
       bool is_uint = (text[len - 1] == 'u' ||
    		   text[len - 1] == 'U');
       bool is_long = (text[len - 1] == 'l' || text[len - 1] == 'L');
       const char *digits = text;
    
       if (is_long)
          is_uint = (text[len - 2] == 'u' && text[len - 1] == 'l') ||
                    (text[len - 2] == 'U' && text[len - 1] == 'L');
       /* Skip "0x" */
       if (base == 16)
          digits += 2;
    
       unsigned long long value = strtoull(digits, NULL, base);
    
       if (is_long)
          lval->n64 = (int64_t)value;
       else
          lval->n = (int)value;
    
       if (is_long && !is_uint && base == 10 && value > (uint64_t)LLONG_MAX + 1) {
          /* Tries to catch unintentionally providing a negative value. */
          _mesa_glsl_warning(lloc, state,
                             "signed literal value `%s' is interpreted as %lld",
                             text, lval->n64);
       } else if (!is_long && value > UINT_MAX) {
          /* Note that signed 0xffffffff is valid, not out of range! */
          if (state->is_version(130, 300)) {
    	 _mesa_glsl_error(lloc, state,
    			  "literal value `%s' out of range", text);
          } else {
    	 _mesa_glsl_warning(lloc, state,
    			    "literal value `%s' out of range", text);
          }
       } else if (base == 10 && !is_uint && (unsigned)value > (unsigned)INT_MAX + 1) {
          /* Tries to catch unintentionally providing a negative value.
           * Note that -2147483648 is parsed as -(2147483648), so we don't
           * want to warn for INT_MAX.
           */
          _mesa_glsl_warning(lloc, state,
    			 "signed literal value `%s' is interpreted as %d",
    			 text, lval->n);
       }
       if (is_long)
          return is_uint ? UINT64CONSTANT : INT64CONSTANT;
       else
          return is_uint ? UINTCONSTANT : INTCONSTANT;
    }
    
    #define LITERAL_INTEGER(base) \
       literal_integer(yytext, yyleng, yyextra, yylval, yylloc, base)
    
    /* Note: When adding any start conditions to this list, you must also
    * update the "Internal compiler error" catch-all rule near the end of
    * this file. */
    
    #line 1395 "src/compiler/glsl/glsl_lexer.cpp"
    
    #define INITIAL 0
    #define PP 1
    #define PRAGMA 2
    
    #ifndef YY_NO_UNISTD_H
    /* Special case for "unistd.h", since it is non-ANSI. We include it way
     * down here because we want the user's section 1 to have been scanned first.
     * The user has a chance to override it with an option.
     */
    #include <unistd.h>
    #endif
    
    #define YY_EXTRA_TYPE struct _mesa_glsl_parse_state *
    
    /* Holds the entire state of the reentrant scanner. */
    struct yyguts_t
        {
    
        /* User-defined. Not touched by flex. */
        YY_EXTRA_TYPE yyextra_r;
    
        /* The rest are the same as the globals declared in the non-reentrant scanner. */
        FILE *yyin_r, *yyout_r;
        size_t yy_buffer_stack_top; /**< index of top of stack. */
        size_t yy_buffer_stack_max; /**< capacity of stack. */
        YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
        char yy_hold_char;
        yy_size_t yy_n_chars;
        yy_size_t yyleng_r;
        char *yy_c_buf_p;
        int yy_init;
        int yy_start;
        int yy_did_buffer_switch_on_eof;
        int yy_start_stack_ptr;
        int yy_start_stack_depth;
        int *yy_start_stack;
        yy_state_type yy_last_accepting_state;
        char* yy_last_accepting_cpos;
    
        int yylineno_r;
        int yy_flex_debug_r;
    
        char *yytext_r;
        int yy_more_flag;
        int yy_more_len;
    
        YYSTYPE * yylval_r;
    
        YYLTYPE * yylloc_r;
    
        }; /* end struct yyguts_t */
    
    static int yy_init_globals (yyscan_t yyscanner );
    
        /* This must go here because YYSTYPE and YYLTYPE are included
         * from bison output in section 1.*/
        #    define yylval yyg->yylval_r
        
        #    define yylloc yyg->yylloc_r
        
    int _mesa_glsl_lexer_lex_init (yyscan_t* scanner);
    
    int _mesa_glsl_lexer_lex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
    
    /* Accessor methods to globals.
       These are made visible to non-reentrant scanners for convenience. */
    
    int _mesa_glsl_lexer_lex_destroy (yyscan_t yyscanner );
    
    int _mesa_glsl_lexer_get_debug (yyscan_t yyscanner );
    
    void _mesa_glsl_lexer_set_debug (int debug_flag ,yyscan_t yyscanner );
    
    YY_EXTRA_TYPE _mesa_glsl_lexer_get_extra (yyscan_t yyscanner );
    
    void _mesa_glsl_lexer_set_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
    
    FILE *_mesa_glsl_lexer_get_in (yyscan_t yyscanner );
    
    void _mesa_glsl_lexer_set_in  (FILE * in_str ,yyscan_t yyscanner );
    
    FILE *_mesa_glsl_lexer_get_out (yyscan_t yyscanner );
    
    void _mesa_glsl_lexer_set_out  (FILE * out_str ,yyscan_t yyscanner );
    
    yy_size_t _mesa_glsl_lexer_get_leng (yyscan_t yyscanner );
    
    char *_mesa_glsl_lexer_get_text (yyscan_t yyscanner );
    
    int _mesa_glsl_lexer_get_lineno (yyscan_t yyscanner );
    
    void _mesa_glsl_lexer_set_lineno (int line_number ,yyscan_t yyscanner );
    
    int _mesa_glsl_lexer_get_column  (yyscan_t yyscanner );
    
    void _mesa_glsl_lexer_set_column (int column_no ,yyscan_t yyscanner );
    
    YYSTYPE * _mesa_glsl_lexer_get_lval (yyscan_t yyscanner );
    
    void _mesa_glsl_lexer_set_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
    
           YYLTYPE *_mesa_glsl_lexer_get_lloc (yyscan_t yyscanner );
        
            void _mesa_glsl_lexer_set_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
        
    /* Macros after this point can all be overridden by user definitions in
     * section 1.
     */
    
    #ifndef YY_SKIP_YYWRAP
    #ifdef __cplusplus
    extern "C" int _mesa_glsl_lexer_wrap (yyscan_t yyscanner );
    #else
    extern int _mesa_glsl_lexer_wrap (yyscan_t yyscanner );
    #endif
    #endif
    
    #ifndef yytext_ptr
    static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
    #endif
    
    #ifdef YY_NEED_STRLEN
    static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
    #endif
    
    #ifndef YY_NO_INPUT
    
    #ifdef __cplusplus
    static int yyinput (yyscan_t yyscanner );
    #else
    static int input (yyscan_t yyscanner );
    #endif
    
    #endif
    
    /* Amount of stuff to slurp up with each read. */
    #ifndef YY_READ_BUF_SIZE
    #define YY_READ_BUF_SIZE 8192
    #endif
    
    /* Copy whatever the last rule matched to the standard output. */
    #ifndef ECHO
    /* This used to be an fputs(), but since the string might contain NUL's,
     * we now use fwrite().
     */
    #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
    #endif
    
    /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
     * is returned in "result".
     */
    #ifndef YY_INPUT
    #define YY_INPUT(buf,result,max_size) \
    	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
    		{ \
    		int c = '*'; \
    		size_t n; \
    		for ( n = 0; n < max_size && \
    			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
    			buf[n] = (char) c; \
    		if ( c == '\n' ) \
    			buf[n++] = (char) c; \
    		if ( c == EOF && ferror( yyin ) ) \
    			YY_FATAL_ERROR( "input in flex scanner failed" ); \
    		result = n; \
    		} \
    	else \
    		{ \
    		errno=0; \
    		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
    			{ \
    			if( errno != EINTR) \
    				{ \
    				YY_FATAL_ERROR( "input in flex scanner failed" ); \
    				break; \
    				} \
    			errno=0; \
    			clearerr(yyin); \
    			} \
    		}\
    \
    
    #endif
    
    /* No semi-colon after return; correct usage is to write "yyterminate();" -
     * we don't want an extra ';' after the "return" because that will cause
     * some compilers to complain about unreachable statements.
     */
    #ifndef yyterminate
    #define yyterminate() return YY_NULL
    #endif
    
    /* Number of entries by which start-condition stack grows. */
    #ifndef YY_START_STACK_INCR
    #define YY_START_STACK_INCR 25
    #endif
    
    /* Report a fatal error. */
    #ifndef YY_FATAL_ERROR
    #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
    #endif
    
    /* end tables serialization structures and prototypes */
    
    /* Default declaration of generated scanner - a define so the user can
     * easily add parameters.
     */
    #ifndef YY_DECL
    #define YY_DECL_IS_OURS 1
    
    extern int _mesa_glsl_lexer_lex \
                   (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
    
    #define YY_DECL int _mesa_glsl_lexer_lex \
                   (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
    #endif /* !YY_DECL */
    
    /* Code executed at the beginning of each rule, after yytext and yyleng
     * have been set up.
     */
    #ifndef YY_USER_ACTION
    #define YY_USER_ACTION
    #endif
    
    /* Code executed at the end of each rule. */
    #ifndef YY_BREAK
    #define YY_BREAK break;
    #endif
    
    #define YY_RULE_SETUP \
    	if ( yyleng > 0 ) \
    		YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
    				(yytext[yyleng - 1] == '\n'); \
    	YY_USER_ACTION
    
    /** The main scanner function which does all the work.
     */
    YY_DECL
    {
    	yy_state_type yy_current_state;
    	char *yy_cp, *yy_bp;
    	int yy_act;
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    
        yylval = yylval_param;
    
        yylloc = yylloc_param;
    
    	if ( !yyg->yy_init )
    		{
    		yyg->yy_init = 1;
    
    #ifdef YY_USER_INIT
    		YY_USER_INIT;
    #endif
    
    		if ( ! yyg->yy_start )
    			yyg->yy_start = 1;	/* first start state */
    
    		if ( ! yyin ) {
    			yyin = stdin;
    		}
    
    		if ( ! yyout ) {
    			yyout = stdout;
    		}
    
    		if ( ! YY_CURRENT_BUFFER ) {
    			_mesa_glsl_lexer_ensure_buffer_stack (yyscanner);
    			YY_CURRENT_BUFFER_LVALUE =
    				_mesa_glsl_lexer__create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
    		}
    
    		_mesa_glsl_lexer__load_buffer_state(yyscanner );
    	}
    
    	{
    #line 233 "../src/compiler/glsl/glsl_lexer.ll"
    
    
    #line 1677 "src/compiler/glsl/glsl_lexer.cpp"
    
    	while ( 1 )		/* loops until end-of-file is reached */
    		{
    		yy_cp = yyg->yy_c_buf_p;
    
    		/* Support of yytext. */
    		*yy_cp = yyg->yy_hold_char;
    
    		/* yy_bp points to the position in yy_ch_buf of the start of
    		 * the current run.
    		 */
    		yy_bp = yy_cp;
    
    		yy_current_state = yyg->yy_start;
    		yy_current_state += YY_AT_BOL();
    yy_match:
    		do
    			{
    			YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
    			if ( yy_accept[yy_current_state] )
    				{
    				yyg->yy_last_accepting_state = yy_current_state;
    				yyg->yy_last_accepting_cpos = yy_cp;
    				}
    			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
    				{
    				yy_current_state = (int) yy_def[yy_current_state];
    				if ( yy_current_state >= 1112 )
    					yy_c = yy_meta[(unsigned int) yy_c];
    				}
    			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
    			++yy_cp;
    			}
    		while ( yy_current_state != 1111 );
    		yy_cp = yyg->yy_last_accepting_cpos;
    		yy_current_state = yyg->yy_last_accepting_state;
    
    yy_find_action:
    		yy_act = yy_accept[yy_current_state];
    
    		YY_DO_BEFORE_ACTION;
    
    do_action:	/* This label is used only to access EOF actions. */
    
    		switch ( yy_act )
    	{ /* beginning of action switch */
    			case 0: /* must back up */
    			/* undo the effects of YY_DO_BEFORE_ACTION */
    			*yy_cp = yyg->yy_hold_char;
    			yy_cp = yyg->yy_last_accepting_cpos;
    			yy_current_state = yyg->yy_last_accepting_state;
    			goto yy_find_action;
    
    case 1:
    YY_RULE_SETUP
    #line 235 "../src/compiler/glsl/glsl_lexer.ll"
    ;
    	YY_BREAK
    /* Preprocessor tokens. */ 
    case 2:
    *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
    yyg->yy_c_buf_p = yy_cp -= 1;
    YY_DO_BEFORE_ACTION; /* set up yytext again */
    YY_RULE_SETUP
    #line 238 "../src/compiler/glsl/glsl_lexer.ll"
    ;
    	YY_BREAK
    case 3:
    YY_RULE_SETUP
    #line 239 "../src/compiler/glsl/glsl_lexer.ll"
    { BEGIN PP; return VERSION_TOK; }
    	YY_BREAK
    case 4:
    YY_RULE_SETUP
    #line 240 "../src/compiler/glsl/glsl_lexer.ll"
    { BEGIN PP; return EXTENSION; }
    	YY_BREAK
    case 5:
    YY_RULE_SETUP
    #line 241 "../src/compiler/glsl/glsl_lexer.ll"
    {
                                      if (!yyextra->ARB_shading_language_include_enable) {
                                         struct _mesa_glsl_parse_state *state = yyextra;
                                         _mesa_glsl_error(yylloc, state,
                                                          "ARB_shading_language_include required "
                                                          "to use #include");
                                       }
    }
    	YY_BREAK
    case 6:
    *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
    yyg->yy_c_buf_p = yy_cp -= 1;
    YY_DO_BEFORE_ACTION; /* set up yytext again */
    YY_RULE_SETUP
    #line 249 "../src/compiler/glsl/glsl_lexer.ll"
    {
    				   /* Eat characters until the first digit is
    				    * encountered
    				    */
    				   char *ptr = yytext;
    				   while (!isdigit(*ptr))
    				      ptr++;
    
    				   /* Subtract one from the line number because
    				    * yylineno is zero-based instead of
    				    * one-based.
    				    */
    				   yylineno = strtol(ptr, &ptr, 0) - 1;
    
                                       /* From GLSL 3.30 and GLSL ES on, after processing the
                                        * line directive (including its new-line), the implementation
                                        * will behave as if it is compiling at the line number passed
                                        * as argument. It was line number + 1 in older specifications.
                                        */
                                       if (yyextra->is_version(330, 100))
                                          yylineno--;
    
    				   yylloc->source = strtol(ptr, NULL, 0);
                                       yylloc->path = NULL;
    				}
    	YY_BREAK
    case 7:
    *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
    yyg->yy_c_buf_p = yy_cp -= 1;
    YY_DO_BEFORE_ACTION; /* set up yytext again */
    YY_RULE_SETUP
    #line 274 "../src/compiler/glsl/glsl_lexer.ll"
    {
                                       if (!yyextra->ARB_shading_language_include_enable) {
                                          struct _mesa_glsl_parse_state *state = yyextra;
                                          _mesa_glsl_error(yylloc, state,
                                                           "ARB_shading_language_include required "
                                                           "to use #line <line> \"<path>\"");
                                       }
    
                                       /* Eat characters until the first digit is
                                        * encountered
                                        */
                                       char *ptr = yytext;
                                       while (!isdigit(*ptr))
                                          ptr++;
    
                                       /* Subtract one from the line number because
                                        * yylineno is zero-based instead of
                                        * one-based.
                                        */
                                       yylineno = strtol(ptr, &ptr, 0) - 1;
    
                                       /* From GLSL 3.30 and GLSL ES on, after processing the
                                        * line directive (including its new-line), the implementation
                                        * will behave as if it is compiling at the line number passed
                                        * as argument. It was line number + 1 in older specifications.
                                        */
                                       if (yyextra->is_version(330, 100))
                                          yylineno--;
    
                                       while (isspace(*ptr))
                                          ptr++;
    
                                       /* Skip over leading " */
                                       ptr++;
    
                                       char *end = strrchr(ptr, '"');
                                       int path_len = (end - ptr) + 1;
                                       void *mem_ctx = yyextra->linalloc;
                                       yylloc->path = (char *) linear_alloc_child(mem_ctx, path_len);
                                       memcpy(yylloc->path, ptr, path_len);
                                       yylloc->path[path_len - 1] = '\0';
                                    }
    	YY_BREAK
    case 8:
    *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
    yyg->yy_c_buf_p = yy_cp -= 1;
    YY_DO_BEFORE_ACTION; /* set up yytext again */
    YY_RULE_SETUP
    #line 316 "../src/compiler/glsl/glsl_lexer.ll"
    {
    				   /* Eat characters until the first digit is
    				    * encountered
    				    */
    				   char *ptr = yytext;
    				   while (!isdigit(*ptr))
    				      ptr++;
    
    				   /* Subtract one from the line number because
    				    * yylineno is zero-based instead of
    				    * one-based.
    				    */
    				   yylineno = strtol(ptr, &ptr, 0) - 1;
    
                                       /* From GLSL 3.30 and GLSL ES on, after processing the
                                        * line directive (including its new-line), the implementation
                                        * will behave as if it is compiling at the line number passed
                                        * as argument. It was line number + 1 in older specifications.
                                        */
                                       if (yyextra->is_version(330, 100))
                                          yylineno--;
    				}
    	YY_BREAK
    case 9:
    YY_RULE_SETUP
    #line 338 "../src/compiler/glsl/glsl_lexer.ll"
    {
    				  BEGIN PP;
    				  return PRAGMA_DEBUG_ON;
    				}
    	YY_BREAK
    case 10:
    YY_RULE_SETUP
    #line 342 "../src/compiler/glsl/glsl_lexer.ll"
    {
    				  BEGIN PP;
    				  return PRAGMA_DEBUG_OFF;
    				}
    	YY_BREAK
    case 11:
    YY_RULE_SETUP
    #line 346 "../src/compiler/glsl/glsl_lexer.ll"
    {
    				  BEGIN PP;
    				  return PRAGMA_OPTIMIZE_ON;
    				}
    	YY_BREAK
    case 12:
    YY_RULE_SETUP
    #line 350 "../src/compiler/glsl/glsl_lexer.ll"
    {
    				  BEGIN PP;
    				  return PRAGMA_OPTIMIZE_OFF;
    				}
    	YY_BREAK
    case 13:
    YY_RULE_SETUP
    #line 354 "../src/compiler/glsl/glsl_lexer.ll"
    {
    				  BEGIN PP;
    				  return PRAGMA_WARNING_ON;
    				}
    	YY_BREAK
    case 14:
    YY_RULE_SETUP
    #line 358 "../src/compiler/glsl/glsl_lexer.ll"
    {
    				  BEGIN PP;
    				  return PRAGMA_WARNING_OFF;
    				}
    	YY_BREAK
    case 15:
    YY_RULE_SETUP
    #line 362 "../src/compiler/glsl/glsl_lexer.ll"
    {
    				  BEGIN PP;
    				  return PRAGMA_INVARIANT_ALL;
    				}
    	YY_BREAK
    case 16:
    YY_RULE_SETUP
    #line 366 "../src/compiler/glsl/glsl_lexer.ll"
    { BEGIN PRAGMA; }
    	YY_BREAK
    case 17:
    /* rule 17 can match eol */
    YY_RULE_SETUP
    #line 368 "../src/compiler/glsl/glsl_lexer.ll"
    { BEGIN 0; yylineno++; yycolumn = 0; }
    	YY_BREAK
    case 18:
    YY_RULE_SETUP
    #line 369 "../src/compiler/glsl/glsl_lexer.ll"
    { }
    	YY_BREAK
    case 19:
    YY_RULE_SETUP
    #line 371 "../src/compiler/glsl/glsl_lexer.ll"
    { }
    	YY_BREAK
    case 20:
    YY_RULE_SETUP
    #line 372 "../src/compiler/glsl/glsl_lexer.ll"
    { }
    	YY_BREAK
    case 21:
    YY_RULE_SETUP
    #line 373 "../src/compiler/glsl/glsl_lexer.ll"
    return COLON;
    	YY_BREAK
    case 22:
    YY_RULE_SETUP
    #line 374 "../src/compiler/glsl/glsl_lexer.ll"
    {
    				   /* We're not doing linear_strdup here, to avoid an implicit call
    				    * on strlen() for the length of the string, as this is already
    				    * found by flex and stored in yyleng
    				    */
                                        void *mem_ctx = yyextra->linalloc;
                                        char *id = (char *) linear_alloc_child(mem_ctx, yyleng + 1);
                                        memcpy(id, yytext, yyleng + 1);
                                        yylval->identifier = id;
    				   return IDENTIFIER;
    				}
    	YY_BREAK
    case 23:
    YY_RULE_SETUP
    #line 385 "../src/compiler/glsl/glsl_lexer.ll"
    {
    				    yylval->n = strtol(yytext, NULL, 10);
    				    return INTCONSTANT;
    				}
    	YY_BREAK
    case 24:
    YY_RULE_SETUP
    #line 389 "../src/compiler/glsl/glsl_lexer.ll"
    {
    				    yylval->n = 0;
    				    return INTCONSTANT;
    				}
    	YY_BREAK
    case 25:
    /* rule 25 can match eol */
    YY_RULE_SETUP
    #line 393 "../src/compiler/glsl/glsl_lexer.ll"
    { BEGIN 0; yylineno++; yycolumn = 0; return EOL; }
    	YY_BREAK
    case 26:
    YY_RULE_SETUP
    #line 394 "../src/compiler/glsl/glsl_lexer.ll"
    { return yytext[0]; }
    	YY_BREAK
    case 27:
    /* rule 27 can match eol */
    YY_RULE_SETUP
    #line 396 "../src/compiler/glsl/glsl_lexer.ll"
    { yylineno++; yycolumn = 0; }
    	YY_BREAK
    case 28:
    YY_RULE_SETUP
    #line 398 "../src/compiler/glsl/glsl_lexer.ll"
    DEPRECATED_KEYWORD(ATTRIBUTE, yyextra, 420, 300);
    	YY_BREAK
    case 29:
    YY_RULE_SETUP
    #line 399 "../src/compiler/glsl/glsl_lexer.ll"
    return CONST_TOK;
    	YY_BREAK
    case 30:
    YY_RULE_SETUP
    #line 400 "../src/compiler/glsl/glsl_lexer.ll"
    { yylval->type = glsl_type::bool_type; return BASIC_TYPE_TOK; }
    	YY_BREAK
    case 31:
    YY_RULE_SETUP
    #line 401 "../src/compiler/glsl/glsl_lexer.ll"
    { yylval->type = glsl_type::float_type; return BASIC_TYPE_TOK; }
    	YY_BREAK
    case 32:
    YY_RULE_SETUP
    #line 402 "../src/compiler/glsl/glsl_lexer.ll"
    { yylval->type = glsl_type::int_type; return BASIC_TYPE_TOK; }
    	YY_BREAK
    case 33:
    YY_RULE_SETUP
    #line 403 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE(130, 300, 130, 300, glsl_type::uint_type);
    	YY_BREAK
    case 34:
    YY_RULE_SETUP
    #line 405 "../src/compiler/glsl/glsl_lexer.ll"
    return BREAK;
    	YY_BREAK
    case 35:
    YY_RULE_SETUP
    #line 406 "../src/compiler/glsl/glsl_lexer.ll"
    return CONTINUE;
    	YY_BREAK
    case 36:
    YY_RULE_SETUP
    #line 407 "../src/compiler/glsl/glsl_lexer.ll"
    return DO;
    	YY_BREAK
    case 37:
    YY_RULE_SETUP
    #line 408 "../src/compiler/glsl/glsl_lexer.ll"
    return WHILE;
    	YY_BREAK
    case 38:
    YY_RULE_SETUP
    #line 409 "../src/compiler/glsl/glsl_lexer.ll"
    return ELSE;
    	YY_BREAK
    case 39:
    YY_RULE_SETUP
    #line 410 "../src/compiler/glsl/glsl_lexer.ll"
    return FOR;
    	YY_BREAK
    case 40:
    YY_RULE_SETUP
    #line 411 "../src/compiler/glsl/glsl_lexer.ll"
    return IF;
    	YY_BREAK
    case 41:
    YY_RULE_SETUP
    #line 412 "../src/compiler/glsl/glsl_lexer.ll"
    return DISCARD;
    	YY_BREAK
    case 42:
    YY_RULE_SETUP
    #line 413 "../src/compiler/glsl/glsl_lexer.ll"
    return RETURN;
    	YY_BREAK
    case 43:
    YY_RULE_SETUP
    #line 414 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD_WITH_ALT(0, 0, 0, 0, yyextra->EXT_demote_to_helper_invocation_enable, DEMOTE);
    	YY_BREAK
    case 44:
    YY_RULE_SETUP
    #line 416 "../src/compiler/glsl/glsl_lexer.ll"
    { yylval->type = glsl_type::bvec2_type; return BASIC_TYPE_TOK; }
    	YY_BREAK
    case 45:
    YY_RULE_SETUP
    #line 417 "../src/compiler/glsl/glsl_lexer.ll"
    { yylval->type = glsl_type::bvec3_type; return BASIC_TYPE_TOK; }
    	YY_BREAK
    case 46:
    YY_RULE_SETUP
    #line 418 "../src/compiler/glsl/glsl_lexer.ll"
    { yylval->type = glsl_type::bvec4_type; return BASIC_TYPE_TOK; }
    	YY_BREAK
    case 47:
    YY_RULE_SETUP
    #line 419 "../src/compiler/glsl/glsl_lexer.ll"
    { yylval->type = glsl_type::ivec2_type; return BASIC_TYPE_TOK; }
    	YY_BREAK
    case 48:
    YY_RULE_SETUP
    #line 420 "../src/compiler/glsl/glsl_lexer.ll"
    { yylval->type = glsl_type::ivec3_type; return BASIC_TYPE_TOK; }
    	YY_BREAK
    case 49:
    YY_RULE_SETUP
    #line 421 "../src/compiler/glsl/glsl_lexer.ll"
    { yylval->type = glsl_type::ivec4_type; return BASIC_TYPE_TOK; }
    	YY_BREAK
    case 50:
    YY_RULE_SETUP
    #line 422 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable, glsl_type::uvec2_type);
    	YY_BREAK
    case 51:
    YY_RULE_SETUP
    #line 423 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable, glsl_type::uvec3_type);
    	YY_BREAK
    case 52:
    YY_RULE_SETUP
    #line 424 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable, glsl_type::uvec4_type);
    	YY_BREAK
    case 53:
    YY_RULE_SETUP
    #line 425 "../src/compiler/glsl/glsl_lexer.ll"
    { yylval->type = glsl_type::vec2_type; return BASIC_TYPE_TOK; }
    	YY_BREAK
    case 54:
    YY_RULE_SETUP
    #line 426 "../src/compiler/glsl/glsl_lexer.ll"
    { yylval->type = glsl_type::vec3_type; return BASIC_TYPE_TOK; }
    	YY_BREAK
    case 55:
    YY_RULE_SETUP
    #line 427 "../src/compiler/glsl/glsl_lexer.ll"
    { yylval->type = glsl_type::vec4_type; return BASIC_TYPE_TOK; }
    	YY_BREAK
    case 56:
    YY_RULE_SETUP
    #line 428 "../src/compiler/glsl/glsl_lexer.ll"
    { yylval->type = glsl_type::mat2_type; return BASIC_TYPE_TOK; }
    	YY_BREAK
    case 57:
    YY_RULE_SETUP
    #line 429 "../src/compiler/glsl/glsl_lexer.ll"
    { yylval->type = glsl_type::mat3_type; return BASIC_TYPE_TOK; }
    	YY_BREAK
    case 58:
    YY_RULE_SETUP
    #line 430 "../src/compiler/glsl/glsl_lexer.ll"
    { yylval->type = glsl_type::mat4_type; return BASIC_TYPE_TOK; }
    	YY_BREAK
    case 59:
    YY_RULE_SETUP
    #line 431 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE(120, 300, 120, 300, glsl_type::mat2_type);
    	YY_BREAK
    case 60:
    YY_RULE_SETUP
    #line 432 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE(120, 300, 120, 300, glsl_type::mat2x3_type);
    	YY_BREAK
    case 61:
    YY_RULE_SETUP
    #line 433 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE(120, 300, 120, 300, glsl_type::mat2x4_type);
    	YY_BREAK
    case 62:
    YY_RULE_SETUP
    #line 434 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE(120, 300, 120, 300, glsl_type::mat3x2_type);
    	YY_BREAK
    case 63:
    YY_RULE_SETUP
    #line 435 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE(120, 300, 120, 300, glsl_type::mat3_type);
    	YY_BREAK
    case 64:
    YY_RULE_SETUP
    #line 436 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE(120, 300, 120, 300, glsl_type::mat3x4_type);
    	YY_BREAK
    case 65:
    YY_RULE_SETUP
    #line 437 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE(120, 300, 120, 300, glsl_type::mat4x2_type);
    	YY_BREAK
    case 66:
    YY_RULE_SETUP
    #line 438 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE(120, 300, 120, 300, glsl_type::mat4x3_type);
    	YY_BREAK
    case 67:
    YY_RULE_SETUP
    #line 439 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE(120, 300, 120, 300, glsl_type::mat4_type);
    	YY_BREAK
    case 68:
    YY_RULE_SETUP
    #line 441 "../src/compiler/glsl/glsl_lexer.ll"
    return IN_TOK;
    	YY_BREAK
    case 69:
    YY_RULE_SETUP
    #line 442 "../src/compiler/glsl/glsl_lexer.ll"
    return OUT_TOK;
    	YY_BREAK
    case 70:
    YY_RULE_SETUP
    #line 443 "../src/compiler/glsl/glsl_lexer.ll"
    return INOUT_TOK;
    	YY_BREAK
    case 71:
    YY_RULE_SETUP
    #line 444 "../src/compiler/glsl/glsl_lexer.ll"
    return UNIFORM;
    	YY_BREAK
    case 72:
    YY_RULE_SETUP
    #line 445 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD_WITH_ALT(0, 0, 430, 310, yyextra->ARB_shader_storage_buffer_object_enable, BUFFER);
    	YY_BREAK
    case 73:
    YY_RULE_SETUP
    #line 446 "../src/compiler/glsl/glsl_lexer.ll"
    DEPRECATED_KEYWORD(VARYING, yyextra, 420, 300);
    	YY_BREAK
    case 74:
    YY_RULE_SETUP
    #line 447 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD_WITH_ALT(120, 300, 120, 300, yyextra->EXT_gpu_shader4_enable, CENTROID);
    	YY_BREAK
    case 75:
    YY_RULE_SETUP
    #line 448 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(120, 100, 120, 100, INVARIANT);
    	YY_BREAK
    case 76:
    YY_RULE_SETUP
    #line 449 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD_WITH_ALT(130, 100, 130, 300, yyextra->EXT_gpu_shader4_enable, FLAT);
    	YY_BREAK
    case 77:
    YY_RULE_SETUP
    #line 450 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(130, 300, 130, 300, SMOOTH);
    	YY_BREAK
    case 78:
    YY_RULE_SETUP
    #line 451 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD_WITH_ALT(130, 300, 130, 0, yyextra->EXT_gpu_shader4_enable || yyextra->NV_shader_noperspective_interpolation_enable, NOPERSPECTIVE);
    	YY_BREAK
    case 79:
    YY_RULE_SETUP
    #line 452 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD_WITH_ALT(0, 300, 400, 320, yyextra->has_tessellation_shader(), PATCH);
    	YY_BREAK
    case 80:
    YY_RULE_SETUP
    #line 454 "../src/compiler/glsl/glsl_lexer.ll"
    DEPRECATED_ES_TYPE(glsl_type::sampler1D_type);
    	YY_BREAK
    case 81:
    YY_RULE_SETUP
    #line 455 "../src/compiler/glsl/glsl_lexer.ll"
    { yylval->type = glsl_type::sampler2D_type; return BASIC_TYPE_TOK; }
    	YY_BREAK
    case 82:
    YY_RULE_SETUP
    #line 456 "../src/compiler/glsl/glsl_lexer.ll"
    { yylval->type = glsl_type::sampler3D_type; return BASIC_TYPE_TOK; }
    	YY_BREAK
    case 83:
    YY_RULE_SETUP
    #line 457 "../src/compiler/glsl/glsl_lexer.ll"
    { yylval->type = glsl_type::samplerCube_type; return BASIC_TYPE_TOK; }
    	YY_BREAK
    case 84:
    YY_RULE_SETUP
    #line 458 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 130, 0,   yyextra->EXT_gpu_shader4_enable && yyextra->exts->EXT_texture_array, glsl_type::sampler1DArray_type);
    	YY_BREAK
    case 85:
    YY_RULE_SETUP
    #line 459 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->exts->EXT_texture_array, glsl_type::sampler2DArray_type);
    	YY_BREAK
    case 86:
    YY_RULE_SETUP
    #line 460 "../src/compiler/glsl/glsl_lexer.ll"
    DEPRECATED_ES_TYPE(glsl_type::sampler1DShadow_type);
    	YY_BREAK
    case 87:
    YY_RULE_SETUP
    #line 461 "../src/compiler/glsl/glsl_lexer.ll"
    { yylval->type = glsl_type::sampler2DShadow_type; return BASIC_TYPE_TOK; }
    	YY_BREAK
    case 88:
    YY_RULE_SETUP
    #line 462 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable, glsl_type::samplerCubeShadow_type);
    	YY_BREAK
    case 89:
    YY_RULE_SETUP
    #line 463 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 130, 0,   yyextra->EXT_gpu_shader4_enable && yyextra->exts->EXT_texture_array, glsl_type::sampler1DArrayShadow_type);
    	YY_BREAK
    case 90:
    YY_RULE_SETUP
    #line 464 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->exts->EXT_texture_array, glsl_type::sampler2DArrayShadow_type);
    	YY_BREAK
    case 91:
    YY_RULE_SETUP
    #line 465 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 130, 0,   yyextra->EXT_gpu_shader4_enable && yyextra->exts->EXT_texture_integer, glsl_type::isampler1D_type);
    	YY_BREAK
    case 92:
    YY_RULE_SETUP
    #line 466 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->exts->EXT_texture_integer, glsl_type::isampler2D_type);
    	YY_BREAK
    case 93:
    YY_RULE_SETUP
    #line 467 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->exts->EXT_texture_integer, glsl_type::isampler3D_type);
    	YY_BREAK
    case 94:
    YY_RULE_SETUP
    #line 468 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->exts->EXT_texture_integer, glsl_type::isamplerCube_type);
    	YY_BREAK
    case 95:
    YY_RULE_SETUP
    #line 469 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 130, 0,   yyextra->EXT_gpu_shader4_enable && yyextra->exts->EXT_texture_integer && yyextra->exts->EXT_texture_array, glsl_type::isampler1DArray_type);
    	YY_BREAK
    case 96:
    YY_RULE_SETUP
    #line 470 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->exts->EXT_texture_integer && yyextra->exts->EXT_texture_array, glsl_type::isampler2DArray_type);
    	YY_BREAK
    case 97:
    YY_RULE_SETUP
    #line 471 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 130, 0,   yyextra->EXT_gpu_shader4_enable && yyextra->exts->EXT_texture_integer, glsl_type::usampler1D_type);
    	YY_BREAK
    case 98:
    YY_RULE_SETUP
    #line 472 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->exts->EXT_texture_integer, glsl_type::usampler2D_type);
    	YY_BREAK
    case 99:
    YY_RULE_SETUP
    #line 473 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->exts->EXT_texture_integer, glsl_type::usampler3D_type);
    	YY_BREAK
    case 100:
    YY_RULE_SETUP
    #line 474 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->exts->EXT_texture_integer, glsl_type::usamplerCube_type);
    	YY_BREAK
    case 101:
    YY_RULE_SETUP
    #line 475 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 130, 0,   yyextra->EXT_gpu_shader4_enable && yyextra->exts->EXT_texture_integer && yyextra->exts->EXT_texture_array, glsl_type::usampler1DArray_type);
    	YY_BREAK
    case 102:
    YY_RULE_SETUP
    #line 476 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 130, 300, yyextra->EXT_gpu_shader4_enable && yyextra->exts->EXT_texture_integer && yyextra->exts->EXT_texture_array, glsl_type::usampler2DArray_type);
    	YY_BREAK
    /* additional keywords in ARB_texture_multisample, included in GLSL 1.50 */
    /* these are reserved but not defined in GLSL 3.00 */
    /* [iu]sampler2DMS are defined in GLSL ES 3.10 */
    case 103:
    YY_RULE_SETUP
    #line 481 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(150, 300, 150, 310, yyextra->ARB_texture_multisample_enable, glsl_type::sampler2DMS_type);
    	YY_BREAK
    case 104:
    YY_RULE_SETUP
    #line 482 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(150, 300, 150, 310, yyextra->ARB_texture_multisample_enable, glsl_type::isampler2DMS_type);
    	YY_BREAK
    case 105:
    YY_RULE_SETUP
    #line 483 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(150, 300, 150, 310, yyextra->ARB_texture_multisample_enable, glsl_type::usampler2DMS_type);
    	YY_BREAK
    case 106:
    YY_RULE_SETUP
    #line 484 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(150, 300, 150, 320, yyextra->ARB_texture_multisample_enable || yyextra->OES_texture_storage_multisample_2d_array_enable, glsl_type::sampler2DMSArray_type);
    	YY_BREAK
    case 107:
    YY_RULE_SETUP
    #line 485 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(150, 300, 150, 320, yyextra->ARB_texture_multisample_enable || yyextra->OES_texture_storage_multisample_2d_array_enable, glsl_type::isampler2DMSArray_type);
    	YY_BREAK
    case 108:
    YY_RULE_SETUP
    #line 486 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(150, 300, 150, 320, yyextra->ARB_texture_multisample_enable || yyextra->OES_texture_storage_multisample_2d_array_enable, glsl_type::usampler2DMSArray_type);
    	YY_BREAK
    /* keywords available with ARB_texture_cube_map_array_enable extension on desktop GLSL */
    case 109:
    YY_RULE_SETUP
    #line 489 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(400, 310, 400, 320, yyextra->ARB_texture_cube_map_array_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::samplerCubeArray_type);
    	YY_BREAK
    case 110:
    YY_RULE_SETUP
    #line 490 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(400, 310, 400, 320, yyextra->ARB_texture_cube_map_array_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::isamplerCubeArray_type);
    	YY_BREAK
    case 111:
    YY_RULE_SETUP
    #line 491 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(400, 310, 400, 320, yyextra->ARB_texture_cube_map_array_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::usamplerCubeArray_type);
    	YY_BREAK
    case 112:
    YY_RULE_SETUP
    #line 492 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(400, 310, 400, 320, yyextra->ARB_texture_cube_map_array_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::samplerCubeArrayShadow_type);
    	YY_BREAK
    case 113:
    YY_RULE_SETUP
    #line 494 "../src/compiler/glsl/glsl_lexer.ll"
    {
    			  if (yyextra->OES_EGL_image_external_enable || yyextra->OES_EGL_image_external_essl3_enable) {
    			     yylval->type = glsl_type::samplerExternalOES_type;
    			     return BASIC_TYPE_TOK;
    			  } else
    			     return IDENTIFIER;
    		}
    	YY_BREAK
    /* keywords available with ARB_gpu_shader5 */
    case 114:
    YY_RULE_SETUP
    #line 503 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD_WITH_ALT(400, 310, 400, 320, yyextra->ARB_gpu_shader5_enable || yyextra->EXT_gpu_shader5_enable || yyextra->OES_gpu_shader5_enable, PRECISE);
    	YY_BREAK
    /* keywords available with ARB_shader_image_load_store */
    case 115:
    YY_RULE_SETUP
    #line 506 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::image1D_type);
    	YY_BREAK
    case 116:
    YY_RULE_SETUP
    #line 507 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::image2D_type);
    	YY_BREAK
    case 117:
    YY_RULE_SETUP
    #line 508 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::image3D_type);
    	YY_BREAK
    case 118:
    YY_RULE_SETUP
    #line 509 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::image2DRect_type);
    	YY_BREAK
    case 119:
    YY_RULE_SETUP
    #line 510 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::imageCube_type);
    	YY_BREAK
    case 120:
    YY_RULE_SETUP
    #line 511 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable || yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable, glsl_type::imageBuffer_type);
    	YY_BREAK
    case 121:
    YY_RULE_SETUP
    #line 512 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::image1DArray_type);
    	YY_BREAK
    case 122:
    YY_RULE_SETUP
    #line 513 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::image2DArray_type);
    	YY_BREAK
    case 123:
    YY_RULE_SETUP
    #line 514 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::imageCubeArray_type);
    	YY_BREAK
    case 124:
    YY_RULE_SETUP
    #line 515 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::image2DMS_type);
    	YY_BREAK
    case 125:
    YY_RULE_SETUP
    #line 516 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::image2DMSArray_type);
    	YY_BREAK
    case 126:
    YY_RULE_SETUP
    #line 517 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::iimage1D_type);
    	YY_BREAK
    case 127:
    YY_RULE_SETUP
    #line 518 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::iimage2D_type);
    	YY_BREAK
    case 128:
    YY_RULE_SETUP
    #line 519 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::iimage3D_type);
    	YY_BREAK
    case 129:
    YY_RULE_SETUP
    #line 520 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::iimage2DRect_type);
    	YY_BREAK
    case 130:
    YY_RULE_SETUP
    #line 521 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::iimageCube_type);
    	YY_BREAK
    case 131:
    YY_RULE_SETUP
    #line 522 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable || yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable, glsl_type::iimageBuffer_type);
    	YY_BREAK
    case 132:
    YY_RULE_SETUP
    #line 523 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::iimage1DArray_type);
    	YY_BREAK
    case 133:
    YY_RULE_SETUP
    #line 524 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::iimage2DArray_type);
    	YY_BREAK
    case 134:
    YY_RULE_SETUP
    #line 525 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::iimageCubeArray_type);
    	YY_BREAK
    case 135:
    YY_RULE_SETUP
    #line 526 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::iimage2DMS_type);
    	YY_BREAK
    case 136:
    YY_RULE_SETUP
    #line 527 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::iimage2DMSArray_type);
    	YY_BREAK
    case 137:
    YY_RULE_SETUP
    #line 528 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::uimage1D_type);
    	YY_BREAK
    case 138:
    YY_RULE_SETUP
    #line 529 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::uimage2D_type);
    	YY_BREAK
    case 139:
    YY_RULE_SETUP
    #line 530 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::uimage3D_type);
    	YY_BREAK
    case 140:
    YY_RULE_SETUP
    #line 531 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::uimage2DRect_type);
    	YY_BREAK
    case 141:
    YY_RULE_SETUP
    #line 532 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::uimageCube_type);
    	YY_BREAK
    case 142:
    YY_RULE_SETUP
    #line 533 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable || yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable, glsl_type::uimageBuffer_type);
    	YY_BREAK
    case 143:
    YY_RULE_SETUP
    #line 534 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::uimage1DArray_type);
    	YY_BREAK
    case 144:
    YY_RULE_SETUP
    #line 535 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::uimage2DArray_type);
    	YY_BREAK
    case 145:
    YY_RULE_SETUP
    #line 536 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable || yyextra->OES_texture_cube_map_array_enable || yyextra->EXT_texture_cube_map_array_enable, glsl_type::uimageCubeArray_type);
    	YY_BREAK
    case 146:
    YY_RULE_SETUP
    #line 537 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::uimage2DMS_type);
    	YY_BREAK
    case 147:
    YY_RULE_SETUP
    #line 538 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable, glsl_type::uimage2DMSArray_type);
    	YY_BREAK
    case 148:
    YY_RULE_SETUP
    #line 539 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(130, 0, 420, 0, IMAGE1DSHADOW);
    	YY_BREAK
    case 149:
    YY_RULE_SETUP
    #line 540 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(130, 0, 420, 0, IMAGE2DSHADOW);
    	YY_BREAK
    case 150:
    YY_RULE_SETUP
    #line 541 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(130, 0, 420, 0, IMAGE1DARRAYSHADOW);
    	YY_BREAK
    case 151:
    YY_RULE_SETUP
    #line 542 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(130, 0, 420, 0, IMAGE2DARRAYSHADOW);
    	YY_BREAK
    case 152:
    YY_RULE_SETUP
    #line 544 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, COHERENT);
    	YY_BREAK
    case 153:
    YY_RULE_SETUP
    #line 545 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD_WITH_ALT(110, 100, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, VOLATILE);
    	YY_BREAK
    case 154:
    YY_RULE_SETUP
    #line 546 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, RESTRICT);
    	YY_BREAK
    case 155:
    YY_RULE_SETUP
    #line 547 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, READONLY);
    	YY_BREAK
    case 156:
    YY_RULE_SETUP
    #line 548 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable || yyextra->ARB_shader_storage_buffer_object_enable, WRITEONLY);
    	YY_BREAK
    case 157:
    YY_RULE_SETUP
    #line 550 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(420, 300, 420, 310, yyextra->ARB_shader_atomic_counters_enable, glsl_type::atomic_uint_type);
    	YY_BREAK
    case 158:
    YY_RULE_SETUP
    #line 552 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD_WITH_ALT(430, 310, 430, 310, yyextra->ARB_compute_shader_enable, SHARED);
    	YY_BREAK
    case 159:
    YY_RULE_SETUP
    #line 554 "../src/compiler/glsl/glsl_lexer.ll"
    return STRUCT;
    	YY_BREAK
    case 160:
    YY_RULE_SETUP
    #line 555 "../src/compiler/glsl/glsl_lexer.ll"
    return VOID_TOK;
    	YY_BREAK
    case 161:
    YY_RULE_SETUP
    #line 557 "../src/compiler/glsl/glsl_lexer.ll"
    {
    		  if ((yyextra->is_version(140, 300))
    		      || yyextra->ARB_bindless_texture_enable
    		      || yyextra->KHR_blend_equation_advanced_enable
    		      || yyextra->AMD_conservative_depth_enable
    		      || yyextra->ARB_conservative_depth_enable
    		      || yyextra->ARB_explicit_attrib_location_enable
    		      || yyextra->ARB_explicit_uniform_location_enable
                          || yyextra->ARB_post_depth_coverage_enable
                          || yyextra->has_separate_shader_objects()
    		      || yyextra->ARB_uniform_buffer_object_enable
    		      || yyextra->ARB_fragment_coord_conventions_enable
                          || yyextra->ARB_shading_language_420pack_enable
                          || yyextra->ARB_compute_shader_enable
                          || yyextra->ARB_tessellation_shader_enable
                          || yyextra->EXT_shader_framebuffer_fetch_non_coherent_enable) {
    		      return LAYOUT_TOK;
    		   } else {
    		      return classify_identifier(yyextra, yytext, yyleng, yylval);
    		   }
    		}
    	YY_BREAK
    case 162:
    YY_RULE_SETUP
    #line 579 "../src/compiler/glsl/glsl_lexer.ll"
    return INC_OP;
    	YY_BREAK
    case 163:
    YY_RULE_SETUP
    #line 580 "../src/compiler/glsl/glsl_lexer.ll"
    return DEC_OP;
    	YY_BREAK
    case 164:
    YY_RULE_SETUP
    #line 581 "../src/compiler/glsl/glsl_lexer.ll"
    return LE_OP;
    	YY_BREAK
    case 165:
    YY_RULE_SETUP
    #line 582 "../src/compiler/glsl/glsl_lexer.ll"
    return GE_OP;
    	YY_BREAK
    case 166:
    YY_RULE_SETUP
    #line 583 "../src/compiler/glsl/glsl_lexer.ll"
    return EQ_OP;
    	YY_BREAK
    case 167:
    YY_RULE_SETUP
    #line 584 "../src/compiler/glsl/glsl_lexer.ll"
    return NE_OP;
    	YY_BREAK
    case 168:
    YY_RULE_SETUP
    #line 585 "../src/compiler/glsl/glsl_lexer.ll"
    return AND_OP;
    	YY_BREAK
    case 169:
    YY_RULE_SETUP
    #line 586 "../src/compiler/glsl/glsl_lexer.ll"
    return OR_OP;
    	YY_BREAK
    case 170:
    YY_RULE_SETUP
    #line 587 "../src/compiler/glsl/glsl_lexer.ll"
    return XOR_OP;
    	YY_BREAK
    case 171:
    YY_RULE_SETUP
    #line 588 "../src/compiler/glsl/glsl_lexer.ll"
    return LEFT_OP;
    	YY_BREAK
    case 172:
    YY_RULE_SETUP
    #line 589 "../src/compiler/glsl/glsl_lexer.ll"
    return RIGHT_OP;
    	YY_BREAK
    case 173:
    YY_RULE_SETUP
    #line 591 "../src/compiler/glsl/glsl_lexer.ll"
    return MUL_ASSIGN;
    	YY_BREAK
    case 174:
    YY_RULE_SETUP
    #line 592 "../src/compiler/glsl/glsl_lexer.ll"
    return DIV_ASSIGN;
    	YY_BREAK
    case 175:
    YY_RULE_SETUP
    #line 593 "../src/compiler/glsl/glsl_lexer.ll"
    return ADD_ASSIGN;
    	YY_BREAK
    case 176:
    YY_RULE_SETUP
    #line 594 "../src/compiler/glsl/glsl_lexer.ll"
    return MOD_ASSIGN;
    	YY_BREAK
    case 177:
    YY_RULE_SETUP
    #line 595 "../src/compiler/glsl/glsl_lexer.ll"
    return LEFT_ASSIGN;
    	YY_BREAK
    case 178:
    YY_RULE_SETUP
    #line 596 "../src/compiler/glsl/glsl_lexer.ll"
    return RIGHT_ASSIGN;
    	YY_BREAK
    case 179:
    YY_RULE_SETUP
    #line 597 "../src/compiler/glsl/glsl_lexer.ll"
    return AND_ASSIGN;
    	YY_BREAK
    case 180:
    YY_RULE_SETUP
    #line 598 "../src/compiler/glsl/glsl_lexer.ll"
    return XOR_ASSIGN;
    	YY_BREAK
    case 181:
    YY_RULE_SETUP
    #line 599 "../src/compiler/glsl/glsl_lexer.ll"
    return OR_ASSIGN;
    	YY_BREAK
    case 182:
    YY_RULE_SETUP
    #line 600 "../src/compiler/glsl/glsl_lexer.ll"
    return SUB_ASSIGN;
    	YY_BREAK
    case 183:
    YY_RULE_SETUP
    #line 602 "../src/compiler/glsl/glsl_lexer.ll"
    {
    			    return LITERAL_INTEGER(10);
    			}
    	YY_BREAK
    case 184:
    YY_RULE_SETUP
    #line 605 "../src/compiler/glsl/glsl_lexer.ll"
    {
    			    return LITERAL_INTEGER(16);
    			}
    	YY_BREAK
    case 185:
    YY_RULE_SETUP
    #line 608 "../src/compiler/glsl/glsl_lexer.ll"
    {
    			    return LITERAL_INTEGER(8);
    			}
    	YY_BREAK
    case 186:
    #line 613 "../src/compiler/glsl/glsl_lexer.ll"
    case 187:
    #line 614 "../src/compiler/glsl/glsl_lexer.ll"
    case 188:
    #line 615 "../src/compiler/glsl/glsl_lexer.ll"
    case 189:
    YY_RULE_SETUP
    #line 615 "../src/compiler/glsl/glsl_lexer.ll"
    {
    			    struct _mesa_glsl_parse_state *state = yyextra;
    			    char suffix = yytext[strlen(yytext) - 1];
    			    if (!state->is_version(120, 300) &&
    			        (suffix == 'f' || suffix == 'F')) {
    			        _mesa_glsl_warning(yylloc, state,
    			                           "Float suffixes are invalid in GLSL 1.10");
    			    }
    			    yylval->real = _mesa_strtof(yytext, NULL);
    			    return FLOATCONSTANT;
    			}
    	YY_BREAK
    case 190:
    #line 628 "../src/compiler/glsl/glsl_lexer.ll"
    case 191:
    #line 629 "../src/compiler/glsl/glsl_lexer.ll"
    case 192:
    #line 630 "../src/compiler/glsl/glsl_lexer.ll"
    case 193:
    YY_RULE_SETUP
    #line 630 "../src/compiler/glsl/glsl_lexer.ll"
    {
    			    if (!yyextra->is_version(400, 0) &&
    			        !yyextra->ARB_gpu_shader_fp64_enable)
    			        return ERROR_TOK;
    			    yylval->dreal = _mesa_strtod(yytext, NULL);
    			    return DOUBLECONSTANT;
    			}
    	YY_BREAK
    case 194:
    YY_RULE_SETUP
    #line 638 "../src/compiler/glsl/glsl_lexer.ll"
    {
    			    yylval->n = 1;
    			    return BOOLCONSTANT;
    			}
    	YY_BREAK
    case 195:
    YY_RULE_SETUP
    #line 642 "../src/compiler/glsl/glsl_lexer.ll"
    {
    			    yylval->n = 0;
    			    return BOOLCONSTANT;
    			}
    	YY_BREAK
    /* Reserved words in GLSL 1.10. */
    case 196:
    YY_RULE_SETUP
    #line 649 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, ASM);
    	YY_BREAK
    case 197:
    YY_RULE_SETUP
    #line 650 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, CLASS);
    	YY_BREAK
    case 198:
    YY_RULE_SETUP
    #line 651 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, UNION);
    	YY_BREAK
    case 199:
    YY_RULE_SETUP
    #line 652 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, ENUM);
    	YY_BREAK
    case 200:
    YY_RULE_SETUP
    #line 653 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, TYPEDEF);
    	YY_BREAK
    case 201:
    YY_RULE_SETUP
    #line 654 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, TEMPLATE);
    	YY_BREAK
    case 202:
    YY_RULE_SETUP
    #line 655 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, THIS);
    	YY_BREAK
    case 203:
    YY_RULE_SETUP
    #line 656 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD_WITH_ALT(110, 100, 140, 300, yyextra->ARB_uniform_buffer_object_enable, PACKED_TOK);
    	YY_BREAK
    case 204:
    YY_RULE_SETUP
    #line 657 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, GOTO);
    	YY_BREAK
    case 205:
    YY_RULE_SETUP
    #line 658 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 130, 300, SWITCH);
    	YY_BREAK
    case 206:
    YY_RULE_SETUP
    #line 659 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 130, 300, DEFAULT);
    	YY_BREAK
    case 207:
    YY_RULE_SETUP
    #line 660 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, INLINE_TOK);
    	YY_BREAK
    case 208:
    YY_RULE_SETUP
    #line 661 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, NOINLINE);
    	YY_BREAK
    case 209:
    YY_RULE_SETUP
    #line 662 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, PUBLIC_TOK);
    	YY_BREAK
    case 210:
    YY_RULE_SETUP
    #line 663 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, STATIC);
    	YY_BREAK
    case 211:
    YY_RULE_SETUP
    #line 664 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, EXTERN);
    	YY_BREAK
    case 212:
    YY_RULE_SETUP
    #line 665 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, EXTERNAL);
    	YY_BREAK
    case 213:
    YY_RULE_SETUP
    #line 666 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, INTERFACE_TOK);
    	YY_BREAK
    case 214:
    YY_RULE_SETUP
    #line 667 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, LONG_TOK);
    	YY_BREAK
    case 215:
    YY_RULE_SETUP
    #line 668 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, SHORT_TOK);
    	YY_BREAK
    case 216:
    YY_RULE_SETUP
    #line 669 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 100, 130, 300, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::double_type);
    	YY_BREAK
    case 217:
    YY_RULE_SETUP
    #line 670 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, HALF);
    	YY_BREAK
    case 218:
    YY_RULE_SETUP
    #line 671 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, FIXED_TOK);
    	YY_BREAK
    case 219:
    YY_RULE_SETUP
    #line 672 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD_WITH_ALT(110, 100, 0, 0, yyextra->EXT_gpu_shader4_enable, UNSIGNED);
    	YY_BREAK
    case 220:
    YY_RULE_SETUP
    #line 673 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, INPUT_TOK);
    	YY_BREAK
    case 221:
    YY_RULE_SETUP
    #line 674 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, OUTPUT);
    	YY_BREAK
    case 222:
    YY_RULE_SETUP
    #line 675 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, HVEC2);
    	YY_BREAK
    case 223:
    YY_RULE_SETUP
    #line 676 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, HVEC3);
    	YY_BREAK
    case 224:
    YY_RULE_SETUP
    #line 677 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, HVEC4);
    	YY_BREAK
    case 225:
    YY_RULE_SETUP
    #line 678 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dvec2_type);
    	YY_BREAK
    case 226:
    YY_RULE_SETUP
    #line 679 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dvec3_type);
    	YY_BREAK
    case 227:
    YY_RULE_SETUP
    #line 680 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dvec4_type);
    	YY_BREAK
    case 228:
    YY_RULE_SETUP
    #line 681 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat2_type);
    	YY_BREAK
    case 229:
    YY_RULE_SETUP
    #line 682 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat3_type);
    	YY_BREAK
    case 230:
    YY_RULE_SETUP
    #line 683 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat4_type);
    	YY_BREAK
    case 231:
    YY_RULE_SETUP
    #line 684 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat2_type);
    	YY_BREAK
    case 232:
    YY_RULE_SETUP
    #line 685 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat2x3_type);
    	YY_BREAK
    case 233:
    YY_RULE_SETUP
    #line 686 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat2x4_type);
    	YY_BREAK
    case 234:
    YY_RULE_SETUP
    #line 687 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat3x2_type);
    	YY_BREAK
    case 235:
    YY_RULE_SETUP
    #line 688 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat3_type);
    	YY_BREAK
    case 236:
    YY_RULE_SETUP
    #line 689 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat3x4_type);
    	YY_BREAK
    case 237:
    YY_RULE_SETUP
    #line 690 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat4x2_type);
    	YY_BREAK
    case 238:
    YY_RULE_SETUP
    #line 691 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat4x3_type);
    	YY_BREAK
    case 239:
    YY_RULE_SETUP
    #line 692 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(110, 100, 400, 0, yyextra->ARB_gpu_shader_fp64_enable, glsl_type::dmat4_type);
    	YY_BREAK
    case 240:
    YY_RULE_SETUP
    #line 693 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, FVEC2);
    	YY_BREAK
    case 241:
    YY_RULE_SETUP
    #line 694 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, FVEC3);
    	YY_BREAK
    case 242:
    YY_RULE_SETUP
    #line 695 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, FVEC4);
    	YY_BREAK
    case 243:
    YY_RULE_SETUP
    #line 696 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(110, 100, 0, 0, yyextra->ARB_texture_rectangle_enable, glsl_type::sampler2DRect_type);
    	YY_BREAK
    case 244:
    YY_RULE_SETUP
    #line 697 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, SAMPLER3DRECT);
    	YY_BREAK
    case 245:
    YY_RULE_SETUP
    #line 698 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(110, 100, 0, 0, yyextra->ARB_texture_rectangle_enable, glsl_type::sampler2DRectShadow_type);
    	YY_BREAK
    case 246:
    YY_RULE_SETUP
    #line 699 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, SIZEOF);
    	YY_BREAK
    case 247:
    YY_RULE_SETUP
    #line 700 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, CAST);
    	YY_BREAK
    case 248:
    YY_RULE_SETUP
    #line 701 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, NAMESPACE);
    	YY_BREAK
    case 249:
    YY_RULE_SETUP
    #line 702 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(110, 100, 0, 0, USING);
    	YY_BREAK
    /* Additional reserved words in GLSL 1.20. */
    case 250:
    YY_RULE_SETUP
    #line 705 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(120, 100, 130, 100, LOWP);
    	YY_BREAK
    case 251:
    YY_RULE_SETUP
    #line 706 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(120, 100, 130, 100, MEDIUMP);
    	YY_BREAK
    case 252:
    YY_RULE_SETUP
    #line 707 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(120, 100, 130, 100, HIGHP);
    	YY_BREAK
    case 253:
    YY_RULE_SETUP
    #line 708 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(120, 100, 130, 100, PRECISION);
    	YY_BREAK
    /* Additional reserved words in GLSL 1.30. */
    case 254:
    YY_RULE_SETUP
    #line 711 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(130, 300, 130, 300, CASE);
    	YY_BREAK
    case 255:
    YY_RULE_SETUP
    #line 712 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(130, 300, 0, 0, COMMON);
    	YY_BREAK
    case 256:
    YY_RULE_SETUP
    #line 713 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(130, 300, 0, 0, PARTITION);
    	YY_BREAK
    case 257:
    YY_RULE_SETUP
    #line 714 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(130, 300, 0, 0, ACTIVE);
    	YY_BREAK
    case 258:
    YY_RULE_SETUP
    #line 715 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(130, 100, 0, 0, SUPERP);
    	YY_BREAK
    case 259:
    YY_RULE_SETUP
    #line 716 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(130, 300, 140, 320, yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable || (yyextra->EXT_gpu_shader4_enable && yyextra->exts->EXT_texture_buffer_object), glsl_type::samplerBuffer_type);
    	YY_BREAK
    case 260:
    YY_RULE_SETUP
    #line 717 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(130, 300, 0, 0, FILTER);
    	YY_BREAK
    case 261:
    YY_RULE_SETUP
    #line 718 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD_WITH_ALT(130, 0, 140, 0, yyextra->ARB_uniform_buffer_object_enable && !yyextra->es_shader, ROW_MAJOR);
    	YY_BREAK
    /* Additional reserved words in GLSL 1.40 */
    case 262:
    YY_RULE_SETUP
    #line 721 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(140, 300, 140, 0, yyextra->EXT_gpu_shader4_enable && yyextra->exts->NV_texture_rectangle && yyextra->exts->EXT_texture_integer, glsl_type::isampler2DRect_type);
    	YY_BREAK
    case 263:
    YY_RULE_SETUP
    #line 722 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(140, 300, 140, 0, yyextra->EXT_gpu_shader4_enable && yyextra->exts->NV_texture_rectangle && yyextra->exts->EXT_texture_integer, glsl_type::usampler2DRect_type);
    	YY_BREAK
    case 264:
    YY_RULE_SETUP
    #line 723 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(140, 300, 140, 320, yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable || (yyextra->EXT_gpu_shader4_enable && yyextra->exts->EXT_texture_buffer_object && yyextra->exts->EXT_texture_integer), glsl_type::isamplerBuffer_type);
    	YY_BREAK
    case 265:
    YY_RULE_SETUP
    #line 724 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(140, 300, 140, 320, yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable || (yyextra->EXT_gpu_shader4_enable && yyextra->exts->EXT_texture_buffer_object && yyextra->exts->EXT_texture_integer), glsl_type::usamplerBuffer_type);
    	YY_BREAK
    /* Additional reserved words in GLSL ES 3.00 */
    case 266:
    YY_RULE_SETUP
    #line 727 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD(420, 300, 0, 0, RESOURCE);
    	YY_BREAK
    case 267:
    YY_RULE_SETUP
    #line 728 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD_WITH_ALT(400, 300, 400, 320, yyextra->ARB_gpu_shader5_enable || yyextra->OES_shader_multisample_interpolation_enable, SAMPLE);
    	YY_BREAK
    case 268:
    YY_RULE_SETUP
    #line 729 "../src/compiler/glsl/glsl_lexer.ll"
    KEYWORD_WITH_ALT(400, 300, 400, 0, yyextra->ARB_shader_subroutine_enable, SUBROUTINE);
    	YY_BREAK
    /* Additional words for ARB_gpu_shader_int64 */
    case 269:
    YY_RULE_SETUP
    #line 732 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::int64_t_type);
    	YY_BREAK
    case 270:
    YY_RULE_SETUP
    #line 733 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::i64vec2_type);
    	YY_BREAK
    case 271:
    YY_RULE_SETUP
    #line 734 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::i64vec3_type);
    	YY_BREAK
    case 272:
    YY_RULE_SETUP
    #line 735 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::i64vec4_type);
    	YY_BREAK
    case 273:
    YY_RULE_SETUP
    #line 737 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::uint64_t_type);
    	YY_BREAK
    case 274:
    YY_RULE_SETUP
    #line 738 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::u64vec2_type);
    	YY_BREAK
    case 275:
    YY_RULE_SETUP
    #line 739 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::u64vec3_type);
    	YY_BREAK
    case 276:
    YY_RULE_SETUP
    #line 740 "../src/compiler/glsl/glsl_lexer.ll"
    TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, glsl_type::u64vec4_type);
    	YY_BREAK
    case 277:
    YY_RULE_SETUP
    #line 742 "../src/compiler/glsl/glsl_lexer.ll"
    {
    			    struct _mesa_glsl_parse_state *state = yyextra;
    			    if (state->es_shader && yyleng > 1024) {
    			       _mesa_glsl_error(yylloc, state,
    			                        "Identifier `%s' exceeds 1024 characters",
    			                        yytext);
    			    }
    			    return classify_identifier(state, yytext, yyleng, yylval);
    			}
    	YY_BREAK
    case 278:
    YY_RULE_SETUP
    #line 752 "../src/compiler/glsl/glsl_lexer.ll"
    { struct _mesa_glsl_parse_state *state = yyextra;
    			  state->is_field = true;
    			  return DOT_TOK; }
    	YY_BREAK
    case 279:
    YY_RULE_SETUP
    #line 756 "../src/compiler/glsl/glsl_lexer.ll"
    { return yytext[0]; }
    	YY_BREAK
    case 280:
    YY_RULE_SETUP
    #line 758 "../src/compiler/glsl/glsl_lexer.ll"
    YY_FATAL_ERROR( "flex scanner jammed" );
    	YY_BREAK
    #line 3335 "src/compiler/glsl/glsl_lexer.cpp"
    case YY_STATE_EOF(INITIAL):
    case YY_STATE_EOF(PP):
    case YY_STATE_EOF(PRAGMA):
    	yyterminate();
    
    	case YY_END_OF_BUFFER:
    		{
    		/* Amount of text matched not including the EOB char. */
    		int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
    
    		/* Undo the effects of YY_DO_BEFORE_ACTION. */
    		*yy_cp = yyg->yy_hold_char;
    		YY_RESTORE_YY_MORE_OFFSET
    
    		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
    			{
    			/* We're scanning a new file or input source.  It's
    			 * possible that this happened because the user
    			 * just pointed yyin at a new source and called
    			 * _mesa_glsl_lexer_lex().  If so, then we have to assure
    			 * consistency between YY_CURRENT_BUFFER and our
    			 * globals.  Here is the right place to do so, because
    			 * this is the first action (other than possibly a
    			 * back-up) that will match for the new input source.
    			 */
    			yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
    			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
    			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
    			}
    
    		/* Note that here we test for yy_c_buf_p "<=" to the position
    		 * of the first EOB in the buffer, since yy_c_buf_p will
    		 * already have been incremented past the NUL character
    		 * (since all states make transitions on EOB to the
    		 * end-of-buffer state).  Contrast this with the test
    		 * in input().
    		 */
    		if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
    			{ /* This was really a NUL. */
    			yy_state_type yy_next_state;
    
    			yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
    
    			yy_current_state = yy_get_previous_state( yyscanner );
    
    			/* Okay, we're now positioned to make the NUL
    			 * transition.  We couldn't have
    			 * yy_get_previous_state() go ahead and do it
    			 * for us because it doesn't know how to deal
    			 * with the possibility of jamming (and we don't
    			 * want to build jamming into it because then it
    			 * will run more slowly).
    			 */
    
    			yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
    
    			yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
    
    			if ( yy_next_state )
    				{
    				/* Consume the NUL. */
    				yy_cp = ++yyg->yy_c_buf_p;
    				yy_current_state = yy_next_state;
    				goto yy_match;
    				}
    
    			else
    				{
    				yy_cp = yyg->yy_last_accepting_cpos;
    				yy_current_state = yyg->yy_last_accepting_state;
    				goto yy_find_action;
    				}
    			}
    
    		else switch ( yy_get_next_buffer( yyscanner ) )
    			{
    			case EOB_ACT_END_OF_FILE:
    				{
    				yyg->yy_did_buffer_switch_on_eof = 0;
    
    				if ( _mesa_glsl_lexer_wrap(yyscanner ) )
    					{
    					/* Note: because we've taken care in
    					 * yy_get_next_buffer() to have set up
    					 * yytext, we can now set up
    					 * yy_c_buf_p so that if some total
    					 * hoser (like flex itself) wants to
    					 * call the scanner after we return the
    					 * YY_NULL, it'll still work - another
    					 * YY_NULL will get returned.
    					 */
    					yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
    
    					yy_act = YY_STATE_EOF(YY_START);
    					goto do_action;
    					}
    
    				else
    					{
    					if ( ! yyg->yy_did_buffer_switch_on_eof )
    						YY_NEW_FILE;
    					}
    				break;
    				}
    
    			case EOB_ACT_CONTINUE_SCAN:
    				yyg->yy_c_buf_p =
    					yyg->yytext_ptr + yy_amount_of_matched_text;
    
    				yy_current_state = yy_get_previous_state( yyscanner );
    
    				yy_cp = yyg->yy_c_buf_p;
    				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
    				goto yy_match;
    
    			case EOB_ACT_LAST_MATCH:
    				yyg->yy_c_buf_p =
    				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
    
    				yy_current_state = yy_get_previous_state( yyscanner );
    
    				yy_cp = yyg->yy_c_buf_p;
    				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
    				goto yy_find_action;
    			}
    		break;
    		}
    
    	default:
    		YY_FATAL_ERROR(
    			"fatal flex scanner internal error--no action found" );
    	} /* end of action switch */
    		} /* end of scanning one token */
    	} /* end of user's declarations */
    } /* end of _mesa_glsl_lexer_lex */
    
    /* yy_get_next_buffer - try to read in a new buffer
     *
     * Returns a code representing an action:
     *	EOB_ACT_LAST_MATCH -
     *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
     *	EOB_ACT_END_OF_FILE - end of file
     */
    static int yy_get_next_buffer (yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    	char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
    	char *source = yyg->yytext_ptr;
    	int number_to_move, i;
    	int ret_val;
    
    	if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
    		YY_FATAL_ERROR(
    		"fatal flex scanner internal error--end of buffer missed" );
    
    	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
    		{ /* Don't try to fill the buffer, so this is an EOF. */
    		if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
    			{
    			/* We matched a single character, the EOB, so
    			 * treat this as a final EOF.
    			 */
    			return EOB_ACT_END_OF_FILE;
    			}
    
    		else
    			{
    			/* We matched some text prior to the EOB, first
    			 * process it.
    			 */
    			return EOB_ACT_LAST_MATCH;
    			}
    		}
    
    	/* Try to read more data. */
    
    	/* First move last chars to start of buffer. */
    	number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
    
    	for ( i = 0; i < number_to_move; ++i )
    		*(dest++) = *(source++);
    
    	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
    		/* don't do the read, it's not guaranteed to return an EOF,
    		 * just force an EOF
    		 */
    		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
    
    	else
    		{
    			yy_size_t num_to_read =
    			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
    
    		while ( num_to_read <= 0 )
    			{ /* Not enough room in the buffer - grow it. */
    
    			/* just a shorter name for the current buffer */
    			YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
    
    			int yy_c_buf_p_offset =
    				(int) (yyg->yy_c_buf_p - b->yy_ch_buf);
    
    			if ( b->yy_is_our_buffer )
    				{
    				yy_size_t new_size = b->yy_buf_size * 2;
    
    				if ( new_size <= 0 )
    					b->yy_buf_size += b->yy_buf_size / 8;
    				else
    					b->yy_buf_size *= 2;
    
    				b->yy_ch_buf = (char *)
    					/* Include room in for 2 EOB chars. */
    					_mesa_glsl_lexer_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
    				}
    			else
    				/* Can't grow it, we don't own it. */
    				b->yy_ch_buf = 0;
    
    			if ( ! b->yy_ch_buf )
    				YY_FATAL_ERROR(
    				"fatal error - scanner input buffer overflow" );
    
    			yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
    
    			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
    						number_to_move - 1;
    
    			}
    
    		if ( num_to_read > YY_READ_BUF_SIZE )
    			num_to_read = YY_READ_BUF_SIZE;
    
    		/* Read in more data. */
    		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
    			yyg->yy_n_chars, num_to_read );
    
    		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
    		}
    
    	if ( yyg->yy_n_chars == 0 )
    		{
    		if ( number_to_move == YY_MORE_ADJ )
    			{
    			ret_val = EOB_ACT_END_OF_FILE;
    			_mesa_glsl_lexer_restart(yyin  ,yyscanner);
    			}
    
    		else
    			{
    			ret_val = EOB_ACT_LAST_MATCH;
    			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
    				YY_BUFFER_EOF_PENDING;
    			}
    		}
    
    	else
    		ret_val = EOB_ACT_CONTINUE_SCAN;
    
    	if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
    		/* Extend the array by 50%, plus the number we really need. */
    		yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
    		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) _mesa_glsl_lexer_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
    		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
    			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
    		/* "- 2" to take care of EOB's */
    		YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
    	}
    
    	yyg->yy_n_chars += number_to_move;
    	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
    	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
    
    	yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
    
    	return ret_val;
    }
    
    /* yy_get_previous_state - get the state just before the EOB char was reached */
    
        static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
    {
    	yy_state_type yy_current_state;
    	char *yy_cp;
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    
    	yy_current_state = yyg->yy_start;
    	yy_current_state += YY_AT_BOL();
    
    	for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
    		{
    		YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
    		if ( yy_accept[yy_current_state] )
    			{
    			yyg->yy_last_accepting_state = yy_current_state;
    			yyg->yy_last_accepting_cpos = yy_cp;
    			}
    		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
    			{
    			yy_current_state = (int) yy_def[yy_current_state];
    			if ( yy_current_state >= 1112 )
    				yy_c = yy_meta[(unsigned int) yy_c];
    			}
    		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
    		}
    
    	return yy_current_state;
    }
    
    /* yy_try_NUL_trans - try to make a transition on the NUL character
     *
     * synopsis
     *	next_state = yy_try_NUL_trans( current_state );
     */
        static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
    {
    	int yy_is_jam;
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
    	char *yy_cp = yyg->yy_c_buf_p;
    
    	YY_CHAR yy_c = 1;
    	if ( yy_accept[yy_current_state] )
    		{
    		yyg->yy_last_accepting_state = yy_current_state;
    		yyg->yy_last_accepting_cpos = yy_cp;
    		}
    	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
    		{
    		yy_current_state = (int) yy_def[yy_current_state];
    		if ( yy_current_state >= 1112 )
    			yy_c = yy_meta[(unsigned int) yy_c];
    		}
    	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
    	yy_is_jam = (yy_current_state == 1111);
    
        (void)yyg;
    	return yy_is_jam ? 0 : yy_current_state;
    }
    
    #ifndef YY_NO_INPUT
    #ifdef __cplusplus
        static int yyinput (yyscan_t yyscanner)
    #else
        static int input  (yyscan_t yyscanner)
    #endif
    
    {
    	int c;
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    
    	*yyg->yy_c_buf_p = yyg->yy_hold_char;
    
    	if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
    		{
    		/* yy_c_buf_p now points to the character we want to return.
    		 * If this occurs *before* the EOB characters, then it's a
    		 * valid NUL; if not, then we've hit the end of the buffer.
    		 */
    		if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
    			/* This was really a NUL. */
    			*yyg->yy_c_buf_p = '\0';
    
    		else
    			{ /* need more input */
    			yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
    			++yyg->yy_c_buf_p;
    
    			switch ( yy_get_next_buffer( yyscanner ) )
    				{
    				case EOB_ACT_LAST_MATCH:
    					/* This happens because yy_g_n_b()
    					 * sees that we've accumulated a
    					 * token and flags that we need to
    					 * try matching the token before
    					 * proceeding.  But for input(),
    					 * there's no matching to consider.
    					 * So convert the EOB_ACT_LAST_MATCH
    					 * to EOB_ACT_END_OF_FILE.
    					 */
    
    					/* Reset buffer status. */
    					_mesa_glsl_lexer_restart(yyin ,yyscanner);
    
    					/*FALLTHROUGH*/
    
    				case EOB_ACT_END_OF_FILE:
    					{
    					if ( _mesa_glsl_lexer_wrap(yyscanner ) )
    						return EOF;
    
    					if ( ! yyg->yy_did_buffer_switch_on_eof )
    						YY_NEW_FILE;
    #ifdef __cplusplus
    					return yyinput(yyscanner);
    #else
    					return input(yyscanner);
    #endif
    					}
    
    				case EOB_ACT_CONTINUE_SCAN:
    					yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
    					break;
    				}
    			}
    		}
    
    	c = *(unsigned char *) yyg->yy_c_buf_p;	/* cast for 8-bit char's */
    	*yyg->yy_c_buf_p = '\0';	/* preserve yytext */
    	yyg->yy_hold_char = *++yyg->yy_c_buf_p;
    
    	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
    
    	return c;
    }
    #endif	/* ifndef YY_NO_INPUT */
    
    /** Immediately switch to a different input stream.
     * @param input_file A readable stream.
     * @param yyscanner The scanner object.
     * @note This function does not reset the start condition to @c INITIAL .
     */
        void _mesa_glsl_lexer_restart  (FILE * input_file , yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    
    	if ( ! YY_CURRENT_BUFFER ){
            _mesa_glsl_lexer_ensure_buffer_stack (yyscanner);
    		YY_CURRENT_BUFFER_LVALUE =
                _mesa_glsl_lexer__create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
    	}
    
    	_mesa_glsl_lexer__init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
    	_mesa_glsl_lexer__load_buffer_state(yyscanner );
    }
    
    /** Switch to a different input buffer.
     * @param new_buffer The new input buffer.
     * @param yyscanner The scanner object.
     */
        void _mesa_glsl_lexer__switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    
    	/* TODO. We should be able to replace this entire function body
    	 * with
    	 *		_mesa_glsl_lexer_pop_buffer_state();
    	 *		_mesa_glsl_lexer_push_buffer_state(new_buffer);
         */
    	_mesa_glsl_lexer_ensure_buffer_stack (yyscanner);
    	if ( YY_CURRENT_BUFFER == new_buffer )
    		return;
    
    	if ( YY_CURRENT_BUFFER )
    		{
    		/* Flush out information for old buffer. */
    		*yyg->yy_c_buf_p = yyg->yy_hold_char;
    		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
    		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
    		}
    
    	YY_CURRENT_BUFFER_LVALUE = new_buffer;
    	_mesa_glsl_lexer__load_buffer_state(yyscanner );
    
    	/* We don't actually know whether we did this switch during
    	 * EOF (_mesa_glsl_lexer_wrap()) processing, but the only time this flag
    	 * is looked at is after _mesa_glsl_lexer_wrap() is called, so it's safe
    	 * to go ahead and always set it.
    	 */
    	yyg->yy_did_buffer_switch_on_eof = 1;
    }
    
    static void _mesa_glsl_lexer__load_buffer_state  (yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    	yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
    	yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
    	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
    	yyg->yy_hold_char = *yyg->yy_c_buf_p;
    }
    
    /** Allocate and initialize an input buffer state.
     * @param file A readable stream.
     * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
     * @param yyscanner The scanner object.
     * @return the allocated buffer state.
     */
        YY_BUFFER_STATE _mesa_glsl_lexer__create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
    {
    	YY_BUFFER_STATE b;
        
    	b = (YY_BUFFER_STATE) _mesa_glsl_lexer_alloc(sizeof( struct yy_buffer_state ) ,yyscanner );
    	if ( ! b )
    		YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl_lexer__create_buffer()" );
    
    	b->yy_buf_size = size;
    
    	/* yy_ch_buf has to be 2 characters longer than the size given because
    	 * we need to put in 2 end-of-buffer characters.
    	 */
    	b->yy_ch_buf = (char *) _mesa_glsl_lexer_alloc(b->yy_buf_size + 2 ,yyscanner );
    	if ( ! b->yy_ch_buf )
    		YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl_lexer__create_buffer()" );
    
    	b->yy_is_our_buffer = 1;
    
    	_mesa_glsl_lexer__init_buffer(b,file ,yyscanner);
    
    	return b;
    }
    
    /** Destroy the buffer.
     * @param b a buffer created with _mesa_glsl_lexer__create_buffer()
     * @param yyscanner The scanner object.
     */
        void _mesa_glsl_lexer__delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    
    	if ( ! b )
    		return;
    
    	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
    		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
    
    	if ( b->yy_is_our_buffer )
    		_mesa_glsl_lexer_free((void *) b->yy_ch_buf ,yyscanner );
    
    	_mesa_glsl_lexer_free((void *) b ,yyscanner );
    }
    
    /* Initializes or reinitializes a buffer.
     * This function is sometimes called more than once on the same buffer,
     * such as during a _mesa_glsl_lexer_restart() or at EOF.
     */
        static void _mesa_glsl_lexer__init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
    
    {
    	int oerrno = errno;
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    
    	_mesa_glsl_lexer__flush_buffer(b ,yyscanner);
    
    	b->yy_input_file = file;
    	b->yy_fill_buffer = 1;
    
        /* If b is the current buffer, then _mesa_glsl_lexer__init_buffer was _probably_
         * called from _mesa_glsl_lexer_restart() or through yy_get_next_buffer.
         * In that case, we don't want to reset the lineno or column.
         */
        if (b != YY_CURRENT_BUFFER){
            b->yy_bs_lineno = 1;
            b->yy_bs_column = 0;
        }
    
            b->yy_is_interactive = 0;
        
    	errno = oerrno;
    }
    
    /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
     * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
     * @param yyscanner The scanner object.
     */
        void _mesa_glsl_lexer__flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    	if ( ! b )
    		return;
    
    	b->yy_n_chars = 0;
    
    	/* We always need two end-of-buffer characters.  The first causes
    	 * a transition to the end-of-buffer state.  The second causes
    	 * a jam in that state.
    	 */
    	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
    	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
    
    	b->yy_buf_pos = &b->yy_ch_buf[0];
    
    	b->yy_at_bol = 1;
    	b->yy_buffer_status = YY_BUFFER_NEW;
    
    	if ( b == YY_CURRENT_BUFFER )
    		_mesa_glsl_lexer__load_buffer_state(yyscanner );
    }
    
    /** Pushes the new state onto the stack. The new state becomes
     *  the current state. This function will allocate the stack
     *  if necessary.
     *  @param new_buffer The new state.
     *  @param yyscanner The scanner object.
     */
    void _mesa_glsl_lexer_push_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    	if (new_buffer == NULL)
    		return;
    
    	_mesa_glsl_lexer_ensure_buffer_stack(yyscanner);
    
    	/* This block is copied from _mesa_glsl_lexer__switch_to_buffer. */
    	if ( YY_CURRENT_BUFFER )
    		{
    		/* Flush out information for old buffer. */
    		*yyg->yy_c_buf_p = yyg->yy_hold_char;
    		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
    		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
    		}
    
    	/* Only push if top exists. Otherwise, replace top. */
    	if (YY_CURRENT_BUFFER)
    		yyg->yy_buffer_stack_top++;
    	YY_CURRENT_BUFFER_LVALUE = new_buffer;
    
    	/* copied from _mesa_glsl_lexer__switch_to_buffer. */
    	_mesa_glsl_lexer__load_buffer_state(yyscanner );
    	yyg->yy_did_buffer_switch_on_eof = 1;
    }
    
    /** Removes and deletes the top of the stack, if present.
     *  The next element becomes the new top.
     *  @param yyscanner The scanner object.
     */
    void _mesa_glsl_lexer_pop_buffer_state (yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    	if (!YY_CURRENT_BUFFER)
    		return;
    
    	_mesa_glsl_lexer__delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
    	YY_CURRENT_BUFFER_LVALUE = NULL;
    	if (yyg->yy_buffer_stack_top > 0)
    		--yyg->yy_buffer_stack_top;
    
    	if (YY_CURRENT_BUFFER) {
    		_mesa_glsl_lexer__load_buffer_state(yyscanner );
    		yyg->yy_did_buffer_switch_on_eof = 1;
    	}
    }
    
    /* Allocates the stack if it does not exist.
     *  Guarantees space for at least one push.
     */
    static void _mesa_glsl_lexer_ensure_buffer_stack (yyscan_t yyscanner)
    {
    	yy_size_t num_to_alloc;
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    
    	if (!yyg->yy_buffer_stack) {
    
    		/* First allocation is just for 2 elements, since we don't know if this
    		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
    		 * immediate realloc on the next call.
             */
    		num_to_alloc = 1;
    		yyg->yy_buffer_stack = (struct yy_buffer_state**)_mesa_glsl_lexer_alloc
    								(num_to_alloc * sizeof(struct yy_buffer_state*)
    								, yyscanner);
    		if ( ! yyg->yy_buffer_stack )
    			YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl_lexer_ensure_buffer_stack()" );
    								  
    		memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
    				
    		yyg->yy_buffer_stack_max = num_to_alloc;
    		yyg->yy_buffer_stack_top = 0;
    		return;
    	}
    
    	if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
    
    		/* Increase the buffer to prepare for a possible push. */
    		int grow_size = 8 /* arbitrary grow size */;
    
    		num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
    		yyg->yy_buffer_stack = (struct yy_buffer_state**)_mesa_glsl_lexer_realloc
    								(yyg->yy_buffer_stack,
    								num_to_alloc * sizeof(struct yy_buffer_state*)
    								, yyscanner);
    		if ( ! yyg->yy_buffer_stack )
    			YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl_lexer_ensure_buffer_stack()" );
    
    		/* zero only the new slots.*/
    		memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
    		yyg->yy_buffer_stack_max = num_to_alloc;
    	}
    }
    
    /** Setup the input buffer state to scan directly from a user-specified character buffer.
     * @param base the character buffer
     * @param size the size in bytes of the character buffer
     * @param yyscanner The scanner object.
     * @return the newly allocated buffer state object. 
     */
    YY_BUFFER_STATE _mesa_glsl_lexer__scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
    {
    	YY_BUFFER_STATE b;
        
    	if ( size < 2 ||
    	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
    	     base[size-1] != YY_END_OF_BUFFER_CHAR )
    		/* They forgot to leave room for the EOB's. */
    		return 0;
    
    	b = (YY_BUFFER_STATE) _mesa_glsl_lexer_alloc(sizeof( struct yy_buffer_state ) ,yyscanner );
    	if ( ! b )
    		YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl_lexer__scan_buffer()" );
    
    	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
    	b->yy_buf_pos = b->yy_ch_buf = base;
    	b->yy_is_our_buffer = 0;
    	b->yy_input_file = 0;
    	b->yy_n_chars = b->yy_buf_size;
    	b->yy_is_interactive = 0;
    	b->yy_at_bol = 1;
    	b->yy_fill_buffer = 0;
    	b->yy_buffer_status = YY_BUFFER_NEW;
    
    	_mesa_glsl_lexer__switch_to_buffer(b ,yyscanner );
    
    	return b;
    }
    
    /** Setup the input buffer state to scan a string. The next call to _mesa_glsl_lexer_lex() will
     * scan from a @e copy of @a str.
     * @param yystr a NUL-terminated string to scan
     * @param yyscanner The scanner object.
     * @return the newly allocated buffer state object.
     * @note If you want to scan bytes that may contain NUL values, then use
     *       _mesa_glsl_lexer__scan_bytes() instead.
     */
    YY_BUFFER_STATE _mesa_glsl_lexer__scan_string (yyconst char * yystr , yyscan_t yyscanner)
    {
        
    	return _mesa_glsl_lexer__scan_bytes(yystr,strlen(yystr) ,yyscanner);
    }
    
    /** Setup the input buffer state to scan the given bytes. The next call to _mesa_glsl_lexer_lex() will
     * scan from a @e copy of @a bytes.
     * @param yybytes the byte buffer to scan
     * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
     * @param yyscanner The scanner object.
     * @return the newly allocated buffer state object.
     */
    YY_BUFFER_STATE _mesa_glsl_lexer__scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len , yyscan_t yyscanner)
    {
    	YY_BUFFER_STATE b;
    	char *buf;
    	yy_size_t n;
    	yy_size_t i;
        
    	/* Get memory for full buffer, including space for trailing EOB's. */
    	n = _yybytes_len + 2;
    	buf = (char *) _mesa_glsl_lexer_alloc(n ,yyscanner );
    	if ( ! buf )
    		YY_FATAL_ERROR( "out of dynamic memory in _mesa_glsl_lexer__scan_bytes()" );
    
    	for ( i = 0; i < _yybytes_len; ++i )
    		buf[i] = yybytes[i];
    
    	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
    
    	b = _mesa_glsl_lexer__scan_buffer(buf,n ,yyscanner);
    	if ( ! b )
    		YY_FATAL_ERROR( "bad buffer in _mesa_glsl_lexer__scan_bytes()" );
    
    	/* It's okay to grow etc. this buffer, and we should throw it
    	 * away when we're done.
    	 */
    	b->yy_is_our_buffer = 1;
    
    	return b;
    }
    
    #ifndef YY_EXIT_FAILURE
    #define YY_EXIT_FAILURE 2
    #endif
    
    static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
    {
        	(void) fprintf( stderr, "%s\n", msg );
    	exit( YY_EXIT_FAILURE );
    }
    
    /* Redefine yyless() so it works in section 3 code. */
    
    #undef yyless
    #define yyless(n) \
    	do \
    		{ \
    		/* Undo effects of setting up yytext. */ \
            int yyless_macro_arg = (n); \
            YY_LESS_LINENO(yyless_macro_arg);\
    		yytext[yyleng] = yyg->yy_hold_char; \
    		yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
    		yyg->yy_hold_char = *yyg->yy_c_buf_p; \
    		*yyg->yy_c_buf_p = '\0'; \
    		yyleng = yyless_macro_arg; \
    		} \
    	while ( 0 )
    
    /* Accessor  methods (get/set functions) to struct members. */
    
    /** Get the user-defined data for this scanner.
     * @param yyscanner The scanner object.
     */
    YY_EXTRA_TYPE _mesa_glsl_lexer_get_extra  (yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        return yyextra;
    }
    
    /** Get the current line number.
     * @param yyscanner The scanner object.
     */
    int _mesa_glsl_lexer_get_lineno  (yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        
            if (! YY_CURRENT_BUFFER)
                return 0;
        
        return yylineno;
    }
    
    /** Get the current column number.
     * @param yyscanner The scanner object.
     */
    int _mesa_glsl_lexer_get_column  (yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        
            if (! YY_CURRENT_BUFFER)
                return 0;
        
        return yycolumn;
    }
    
    /** Get the input stream.
     * @param yyscanner The scanner object.
     */
    FILE *_mesa_glsl_lexer_get_in  (yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        return yyin;
    }
    
    /** Get the output stream.
     * @param yyscanner The scanner object.
     */
    FILE *_mesa_glsl_lexer_get_out  (yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        return yyout;
    }
    
    /** Get the length of the current token.
     * @param yyscanner The scanner object.
     */
    yy_size_t _mesa_glsl_lexer_get_leng  (yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        return yyleng;
    }
    
    /** Get the current token.
     * @param yyscanner The scanner object.
     */
    
    char *_mesa_glsl_lexer_get_text  (yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        return yytext;
    }
    
    /** Set the user-defined data. This data is never touched by the scanner.
     * @param user_defined The data to be associated with this scanner.
     * @param yyscanner The scanner object.
     */
    void _mesa_glsl_lexer_set_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        yyextra = user_defined ;
    }
    
    /** Set the current line number.
     * @param line_number
     * @param yyscanner The scanner object.
     */
    void _mesa_glsl_lexer_set_lineno (int  line_number , yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    
            /* lineno is only valid if an input buffer exists. */
            if (! YY_CURRENT_BUFFER )
               YY_FATAL_ERROR( "_mesa_glsl_lexer_set_lineno called with no buffer" );
        
        yylineno = line_number;
    }
    
    /** Set the current column.
     * @param line_number
     * @param yyscanner The scanner object.
     */
    void _mesa_glsl_lexer_set_column (int  column_no , yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    
            /* column is only valid if an input buffer exists. */
            if (! YY_CURRENT_BUFFER )
               YY_FATAL_ERROR( "_mesa_glsl_lexer_set_column called with no buffer" );
        
        yycolumn = column_no;
    }
    
    /** Set the input stream. This does not discard the current
     * input buffer.
     * @param in_str A readable stream.
     * @param yyscanner The scanner object.
     * @see _mesa_glsl_lexer__switch_to_buffer
     */
    void _mesa_glsl_lexer_set_in (FILE *  in_str , yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        yyin = in_str ;
    }
    
    void _mesa_glsl_lexer_set_out (FILE *  out_str , yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        yyout = out_str ;
    }
    
    int _mesa_glsl_lexer_get_debug  (yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        return yy_flex_debug;
    }
    
    void _mesa_glsl_lexer_set_debug (int  bdebug , yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        yy_flex_debug = bdebug ;
    }
    
    /* Accessor methods for yylval and yylloc */
    
    YYSTYPE * _mesa_glsl_lexer_get_lval  (yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        return yylval;
    }
    
    void _mesa_glsl_lexer_set_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        yylval = yylval_param;
    }
    
    YYLTYPE *_mesa_glsl_lexer_get_lloc  (yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        return yylloc;
    }
        
    void _mesa_glsl_lexer_set_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        yylloc = yylloc_param;
    }
        
    /* User-visible API */
    
    /* _mesa_glsl_lexer_lex_init is special because it creates the scanner itself, so it is
     * the ONLY reentrant function that doesn't take the scanner as the last argument.
     * That's why we explicitly handle the declaration, instead of using our macros.
     */
    
    int _mesa_glsl_lexer_lex_init(yyscan_t* ptr_yy_globals)
    
    {
        if (ptr_yy_globals == NULL){
            errno = EINVAL;
            return 1;
        }
    
        *ptr_yy_globals = (yyscan_t) _mesa_glsl_lexer_alloc ( sizeof( struct yyguts_t ), NULL );
    
        if (*ptr_yy_globals == NULL){
            errno = ENOMEM;
            return 1;
        }
    
        /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
        memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
    
        return yy_init_globals ( *ptr_yy_globals );
    }
    
    /* _mesa_glsl_lexer_lex_init_extra has the same functionality as _mesa_glsl_lexer_lex_init, but follows the
     * convention of taking the scanner as the last argument. Note however, that
     * this is a *pointer* to a scanner, as it will be allocated by this call (and
     * is the reason, too, why this function also must handle its own declaration).
     * The user defined value in the first argument will be available to _mesa_glsl_lexer_alloc in
     * the yyextra field.
     */
    
    int _mesa_glsl_lexer_lex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
    
    {
        struct yyguts_t dummy_yyguts;
    
        _mesa_glsl_lexer_set_extra (yy_user_defined, &dummy_yyguts);
    
        if (ptr_yy_globals == NULL){
            errno = EINVAL;
            return 1;
        }
    	
        *ptr_yy_globals = (yyscan_t) _mesa_glsl_lexer_alloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
    	
        if (*ptr_yy_globals == NULL){
            errno = ENOMEM;
            return 1;
        }
        
        /* By setting to 0xAA, we expose bugs in
        yy_init_globals. Leave at 0x00 for releases. */
        memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
        
        _mesa_glsl_lexer_set_extra (yy_user_defined, *ptr_yy_globals);
        
        return yy_init_globals ( *ptr_yy_globals );
    }
    
    static int yy_init_globals (yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        /* Initialization is the same as for the non-reentrant scanner.
         * This function is called from _mesa_glsl_lexer_lex_destroy(), so don't allocate here.
         */
    
        yyg->yy_buffer_stack = 0;
        yyg->yy_buffer_stack_top = 0;
        yyg->yy_buffer_stack_max = 0;
        yyg->yy_c_buf_p = (char *) 0;
        yyg->yy_init = 0;
        yyg->yy_start = 0;
    
        yyg->yy_start_stack_ptr = 0;
        yyg->yy_start_stack_depth = 0;
        yyg->yy_start_stack =  NULL;
    
    /* Defined in main.c */
    #ifdef YY_STDINIT
        yyin = stdin;
        yyout = stdout;
    #else
        yyin = (FILE *) 0;
        yyout = (FILE *) 0;
    #endif
    
        /* For future reference: Set errno on error, since we are called by
         * _mesa_glsl_lexer_lex_init()
         */
        return 0;
    }
    
    /* _mesa_glsl_lexer_lex_destroy is for both reentrant and non-reentrant scanners. */
    int _mesa_glsl_lexer_lex_destroy  (yyscan_t yyscanner)
    {
        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    
        /* Pop the buffer stack, destroying each element. */
    	while(YY_CURRENT_BUFFER){
    		_mesa_glsl_lexer__delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
    		YY_CURRENT_BUFFER_LVALUE = NULL;
    		_mesa_glsl_lexer_pop_buffer_state(yyscanner);
    	}
    
    	/* Destroy the stack itself. */
    	_mesa_glsl_lexer_free(yyg->yy_buffer_stack ,yyscanner);
    	yyg->yy_buffer_stack = NULL;
    
        /* Destroy the start condition stack. */
            _mesa_glsl_lexer_free(yyg->yy_start_stack ,yyscanner );
            yyg->yy_start_stack = NULL;
    
        /* Reset the globals. This is important in a non-reentrant scanner so the next time
         * _mesa_glsl_lexer_lex() is called, initialization will occur. */
        yy_init_globals( yyscanner);
    
        /* Destroy the main struct (reentrant only). */
        _mesa_glsl_lexer_free ( yyscanner , yyscanner );
        yyscanner = NULL;
        return 0;
    }
    
    /*
     * Internal utility routines.
     */
    
    #ifndef yytext_ptr
    static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
    {
    	int i;
    	for ( i = 0; i < n; ++i )
    		s1[i] = s2[i];
    }
    #endif
    
    #ifdef YY_NEED_STRLEN
    static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
    {
    	int n;
    	for ( n = 0; s[n]; ++n )
    		;
    
    	return n;
    }
    #endif
    
    void *_mesa_glsl_lexer_alloc (yy_size_t  size , yyscan_t yyscanner)
    {
    	return (void *) malloc( size );
    }
    
    void *_mesa_glsl_lexer_realloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
    {
    	/* The cast to (char *) in the following accommodates both
    	 * implementations that use char* generic pointers, and those
    	 * that use void* generic pointers.  It works with the latter
    	 * because both ANSI C and C++ allow castless assignment from
    	 * any pointer type to void*, and deal with argument conversions
    	 * as though doing an assignment.
    	 */
    	return (void *) realloc( (char *) ptr, size );
    }
    
    void _mesa_glsl_lexer_free (void * ptr , yyscan_t yyscanner)
    {
    	free( (char *) ptr );	/* see _mesa_glsl_lexer_realloc() for (char *) cast */
    }
    
    #define YYTABLES_NAME "yytables"
    
    #line 758 "../src/compiler/glsl/glsl_lexer.ll"
    
    
    
    int
    classify_identifier(struct _mesa_glsl_parse_state *state, const char *name,
                        unsigned name_len, YYSTYPE *output)
    {
       /* We're not doing linear_strdup here, to avoid an implicit call on
        * strlen() for the length of the string, as this is already found by flex
        * and stored in yyleng
        */
       char *id = (char *) linear_alloc_child(state->linalloc, name_len + 1);
       memcpy(id, name, name_len + 1);
       output->identifier = id;
    
       if (state->is_field) {
          state->is_field = false;
          return FIELD_SELECTION;
       }
       if (state->symbols->get_variable(name) || state->symbols->get_function(name))
          return IDENTIFIER;
       else if (state->symbols->get_type(name))
          return TYPE_IDENTIFIER;
       else
          return NEW_IDENTIFIER;
    }
    
    void
    _mesa_glsl_lexer_ctor(struct _mesa_glsl_parse_state *state, const char *string)
    {
       _mesa_glsl_lexer_lex_init_extra(state,& state->scanner);
       _mesa_glsl_lexer__scan_string(string,state->scanner);
    }
    
    void
    _mesa_glsl_lexer_dtor(struct _mesa_glsl_parse_state *state)
    {
       _mesa_glsl_lexer_lex_destroy(state->scanner);
    }