gfx/angle/src/compiler/glslang_lex.cpp

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/gfx/angle/src/compiler/glslang_lex.cpp	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,2940 @@
     1.4 +#line 17 "./glslang.l"
     1.5 +//
     1.6 +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
     1.7 +// Use of this source code is governed by a BSD-style license that can be
     1.8 +// found in the LICENSE file.
     1.9 +//
    1.10 +
    1.11 +// This file is auto-generated by generate_parser.sh. DO NOT EDIT!
    1.12 +
    1.13 +// Ignore errors in auto-generated code.
    1.14 +#if defined(__GNUC__)
    1.15 +#pragma GCC diagnostic ignored "-Wunused-function"
    1.16 +#pragma GCC diagnostic ignored "-Wunused-variable"
    1.17 +#pragma GCC diagnostic ignored "-Wswitch-enum"
    1.18 +#elif defined(_MSC_VER)
    1.19 +#pragma warning(disable: 4065)
    1.20 +#pragma warning(disable: 4189)
    1.21 +#pragma warning(disable: 4505)
    1.22 +#pragma warning(disable: 4701)
    1.23 +#endif
    1.24 +
    1.25 +
    1.26 +
    1.27 +#line 25 "./glslang_lex.cpp"
    1.28 +
    1.29 +#define  YY_INT_ALIGNED short int
    1.30 +
    1.31 +/* A lexical scanner generated by flex */
    1.32 +
    1.33 +#define FLEX_SCANNER
    1.34 +#define YY_FLEX_MAJOR_VERSION 2
    1.35 +#define YY_FLEX_MINOR_VERSION 5
    1.36 +#define YY_FLEX_SUBMINOR_VERSION 35
    1.37 +#if YY_FLEX_SUBMINOR_VERSION > 0
    1.38 +#define FLEX_BETA
    1.39 +#endif
    1.40 +
    1.41 +/* First, we deal with  platform-specific or compiler-specific issues. */
    1.42 +
    1.43 +/* begin standard C headers. */
    1.44 +#include <stdio.h>
    1.45 +#include <string.h>
    1.46 +#include <errno.h>
    1.47 +#include <stdlib.h>
    1.48 +
    1.49 +/* end standard C headers. */
    1.50 +
    1.51 +/* flex integer type definitions */
    1.52 +
    1.53 +#ifndef FLEXINT_H
    1.54 +#define FLEXINT_H
    1.55 +
    1.56 +/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
    1.57 +
    1.58 +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    1.59 +
    1.60 +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
    1.61 + * if you want the limit (max/min) macros for int types. 
    1.62 + */
    1.63 +#ifndef __STDC_LIMIT_MACROS
    1.64 +#define __STDC_LIMIT_MACROS 1
    1.65 +#endif
    1.66 +
    1.67 +#include <inttypes.h>
    1.68 +typedef int8_t flex_int8_t;
    1.69 +typedef uint8_t flex_uint8_t;
    1.70 +typedef int16_t flex_int16_t;
    1.71 +typedef uint16_t flex_uint16_t;
    1.72 +typedef int32_t flex_int32_t;
    1.73 +typedef uint32_t flex_uint32_t;
    1.74 +typedef uint64_t flex_uint64_t;
    1.75 +#else
    1.76 +typedef signed char flex_int8_t;
    1.77 +typedef short int flex_int16_t;
    1.78 +typedef int flex_int32_t;
    1.79 +typedef unsigned char flex_uint8_t; 
    1.80 +typedef unsigned short int flex_uint16_t;
    1.81 +typedef unsigned int flex_uint32_t;
    1.82 +#endif /* ! C99 */
    1.83 +
    1.84 +/* Limits of integral types. */
    1.85 +#ifndef INT8_MIN
    1.86 +#define INT8_MIN               (-128)
    1.87 +#endif
    1.88 +#ifndef INT16_MIN
    1.89 +#define INT16_MIN              (-32767-1)
    1.90 +#endif
    1.91 +#ifndef INT32_MIN
    1.92 +#define INT32_MIN              (-2147483647-1)
    1.93 +#endif
    1.94 +#ifndef INT8_MAX
    1.95 +#define INT8_MAX               (127)
    1.96 +#endif
    1.97 +#ifndef INT16_MAX
    1.98 +#define INT16_MAX              (32767)
    1.99 +#endif
   1.100 +#ifndef INT32_MAX
   1.101 +#define INT32_MAX              (2147483647)
   1.102 +#endif
   1.103 +#ifndef UINT8_MAX
   1.104 +#define UINT8_MAX              (255U)
   1.105 +#endif
   1.106 +#ifndef UINT16_MAX
   1.107 +#define UINT16_MAX             (65535U)
   1.108 +#endif
   1.109 +#ifndef UINT32_MAX
   1.110 +#define UINT32_MAX             (4294967295U)
   1.111 +#endif
   1.112 +
   1.113 +#endif /* ! FLEXINT_H */
   1.114 +
   1.115 +#ifdef __cplusplus
   1.116 +
   1.117 +/* The "const" storage-class-modifier is valid. */
   1.118 +#define YY_USE_CONST
   1.119 +
   1.120 +#else	/* ! __cplusplus */
   1.121 +
   1.122 +/* C99 requires __STDC__ to be defined as 1. */
   1.123 +#if defined (__STDC__)
   1.124 +
   1.125 +#define YY_USE_CONST
   1.126 +
   1.127 +#endif	/* defined (__STDC__) */
   1.128 +#endif	/* ! __cplusplus */
   1.129 +
   1.130 +#ifdef YY_USE_CONST
   1.131 +#define yyconst const
   1.132 +#else
   1.133 +#define yyconst
   1.134 +#endif
   1.135 +
   1.136 +/* Returned upon end-of-file. */
   1.137 +#define YY_NULL 0
   1.138 +
   1.139 +/* Promotes a possibly negative, possibly signed char to an unsigned
   1.140 + * integer for use as an array index.  If the signed char is negative,
   1.141 + * we want to instead treat it as an 8-bit unsigned char, hence the
   1.142 + * double cast.
   1.143 + */
   1.144 +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
   1.145 +
   1.146 +/* An opaque pointer. */
   1.147 +#ifndef YY_TYPEDEF_YY_SCANNER_T
   1.148 +#define YY_TYPEDEF_YY_SCANNER_T
   1.149 +typedef void* yyscan_t;
   1.150 +#endif
   1.151 +
   1.152 +/* For convenience, these vars (plus the bison vars far below)
   1.153 +   are macros in the reentrant scanner. */
   1.154 +#define yyin yyg->yyin_r
   1.155 +#define yyout yyg->yyout_r
   1.156 +#define yyextra yyg->yyextra_r
   1.157 +#define yyleng yyg->yyleng_r
   1.158 +#define yytext yyg->yytext_r
   1.159 +#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
   1.160 +#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
   1.161 +#define yy_flex_debug yyg->yy_flex_debug_r
   1.162 +
   1.163 +/* Enter a start condition.  This macro really ought to take a parameter,
   1.164 + * but we do it the disgusting crufty way forced on us by the ()-less
   1.165 + * definition of BEGIN.
   1.166 + */
   1.167 +#define BEGIN yyg->yy_start = 1 + 2 *
   1.168 +
   1.169 +/* Translate the current start state into a value that can be later handed
   1.170 + * to BEGIN to return to the state.  The YYSTATE alias is for lex
   1.171 + * compatibility.
   1.172 + */
   1.173 +#define YY_START ((yyg->yy_start - 1) / 2)
   1.174 +#define YYSTATE YY_START
   1.175 +
   1.176 +/* Action number for EOF rule of a given start state. */
   1.177 +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
   1.178 +
   1.179 +/* Special action meaning "start processing a new file". */
   1.180 +#define YY_NEW_FILE yyrestart(yyin ,yyscanner )
   1.181 +
   1.182 +#define YY_END_OF_BUFFER_CHAR 0
   1.183 +
   1.184 +/* Size of default input buffer. */
   1.185 +#ifndef YY_BUF_SIZE
   1.186 +#define YY_BUF_SIZE 16384
   1.187 +#endif
   1.188 +
   1.189 +/* The state buf must be large enough to hold one state per character in the main buffer.
   1.190 + */
   1.191 +#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
   1.192 +
   1.193 +#ifndef YY_TYPEDEF_YY_BUFFER_STATE
   1.194 +#define YY_TYPEDEF_YY_BUFFER_STATE
   1.195 +typedef struct yy_buffer_state *YY_BUFFER_STATE;
   1.196 +#endif
   1.197 +
   1.198 +#ifndef YY_TYPEDEF_YY_SIZE_T
   1.199 +#define YY_TYPEDEF_YY_SIZE_T
   1.200 +typedef size_t yy_size_t;
   1.201 +#endif
   1.202 +
   1.203 +#define EOB_ACT_CONTINUE_SCAN 0
   1.204 +#define EOB_ACT_END_OF_FILE 1
   1.205 +#define EOB_ACT_LAST_MATCH 2
   1.206 +
   1.207 +    /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
   1.208 +     *       access to the local variable yy_act. Since yyless() is a macro, it would break
   1.209 +     *       existing scanners that call yyless() from OUTSIDE yylex. 
   1.210 +     *       One obvious solution it to make yy_act a global. I tried that, and saw
   1.211 +     *       a 5% performance hit in a non-yylineno scanner, because yy_act is
   1.212 +     *       normally declared as a register variable-- so it is not worth it.
   1.213 +     */
   1.214 +    #define  YY_LESS_LINENO(n) \
   1.215 +            do { \
   1.216 +                yy_size_t yyl;\
   1.217 +                for ( yyl = n; yyl < yyleng; ++yyl )\
   1.218 +                    if ( yytext[yyl] == '\n' )\
   1.219 +                        --yylineno;\
   1.220 +            }while(0)
   1.221 +    
   1.222 +/* Return all but the first "n" matched characters back to the input stream. */
   1.223 +#define yyless(n) \
   1.224 +	do \
   1.225 +		{ \
   1.226 +		/* Undo effects of setting up yytext. */ \
   1.227 +        int yyless_macro_arg = (n); \
   1.228 +        YY_LESS_LINENO(yyless_macro_arg);\
   1.229 +		*yy_cp = yyg->yy_hold_char; \
   1.230 +		YY_RESTORE_YY_MORE_OFFSET \
   1.231 +		yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
   1.232 +		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
   1.233 +		} \
   1.234 +	while ( 0 )
   1.235 +
   1.236 +#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
   1.237 +
   1.238 +#ifndef YY_STRUCT_YY_BUFFER_STATE
   1.239 +#define YY_STRUCT_YY_BUFFER_STATE
   1.240 +struct yy_buffer_state
   1.241 +	{
   1.242 +	FILE *yy_input_file;
   1.243 +
   1.244 +	char *yy_ch_buf;		/* input buffer */
   1.245 +	char *yy_buf_pos;		/* current position in input buffer */
   1.246 +
   1.247 +	/* Size of input buffer in bytes, not including room for EOB
   1.248 +	 * characters.
   1.249 +	 */
   1.250 +	yy_size_t yy_buf_size;
   1.251 +
   1.252 +	/* Number of characters read into yy_ch_buf, not including EOB
   1.253 +	 * characters.
   1.254 +	 */
   1.255 +	yy_size_t yy_n_chars;
   1.256 +
   1.257 +	/* Whether we "own" the buffer - i.e., we know we created it,
   1.258 +	 * and can realloc() it to grow it, and should free() it to
   1.259 +	 * delete it.
   1.260 +	 */
   1.261 +	int yy_is_our_buffer;
   1.262 +
   1.263 +	/* Whether this is an "interactive" input source; if so, and
   1.264 +	 * if we're using stdio for input, then we want to use getc()
   1.265 +	 * instead of fread(), to make sure we stop fetching input after
   1.266 +	 * each newline.
   1.267 +	 */
   1.268 +	int yy_is_interactive;
   1.269 +
   1.270 +	/* Whether we're considered to be at the beginning of a line.
   1.271 +	 * If so, '^' rules will be active on the next match, otherwise
   1.272 +	 * not.
   1.273 +	 */
   1.274 +	int yy_at_bol;
   1.275 +
   1.276 +    int yy_bs_lineno; /**< The line count. */
   1.277 +    int yy_bs_column; /**< The column count. */
   1.278 +    
   1.279 +	/* Whether to try to fill the input buffer when we reach the
   1.280 +	 * end of it.
   1.281 +	 */
   1.282 +	int yy_fill_buffer;
   1.283 +
   1.284 +	int yy_buffer_status;
   1.285 +
   1.286 +#define YY_BUFFER_NEW 0
   1.287 +#define YY_BUFFER_NORMAL 1
   1.288 +	/* When an EOF's been seen but there's still some text to process
   1.289 +	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
   1.290 +	 * shouldn't try reading from the input source any more.  We might
   1.291 +	 * still have a bunch of tokens to match, though, because of
   1.292 +	 * possible backing-up.
   1.293 +	 *
   1.294 +	 * When we actually see the EOF, we change the status to "new"
   1.295 +	 * (via yyrestart()), so that the user can continue scanning by
   1.296 +	 * just pointing yyin at a new input file.
   1.297 +	 */
   1.298 +#define YY_BUFFER_EOF_PENDING 2
   1.299 +
   1.300 +	};
   1.301 +#endif /* !YY_STRUCT_YY_BUFFER_STATE */
   1.302 +
   1.303 +/* We provide macros for accessing buffer states in case in the
   1.304 + * future we want to put the buffer states in a more general
   1.305 + * "scanner state".
   1.306 + *
   1.307 + * Returns the top of the stack, or NULL.
   1.308 + */
   1.309 +#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
   1.310 +                          ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
   1.311 +                          : NULL)
   1.312 +
   1.313 +/* Same as previous macro, but useful when we know that the buffer stack is not
   1.314 + * NULL or when we need an lvalue. For internal use only.
   1.315 + */
   1.316 +#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
   1.317 +
   1.318 +void yyrestart (FILE *input_file ,yyscan_t yyscanner );
   1.319 +void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
   1.320 +YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
   1.321 +void yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
   1.322 +void yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
   1.323 +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
   1.324 +void yypop_buffer_state (yyscan_t yyscanner );
   1.325 +
   1.326 +static void yyensure_buffer_stack (yyscan_t yyscanner );
   1.327 +static void yy_load_buffer_state (yyscan_t yyscanner );
   1.328 +static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
   1.329 +
   1.330 +#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
   1.331 +
   1.332 +YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
   1.333 +YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
   1.334 +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner );
   1.335 +
   1.336 +void *yyalloc (yy_size_t ,yyscan_t yyscanner );
   1.337 +void *yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
   1.338 +void yyfree (void * ,yyscan_t yyscanner );
   1.339 +
   1.340 +#define yy_new_buffer yy_create_buffer
   1.341 +
   1.342 +#define yy_set_interactive(is_interactive) \
   1.343 +	{ \
   1.344 +	if ( ! YY_CURRENT_BUFFER ){ \
   1.345 +        yyensure_buffer_stack (yyscanner); \
   1.346 +		YY_CURRENT_BUFFER_LVALUE =    \
   1.347 +            yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
   1.348 +	} \
   1.349 +	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
   1.350 +	}
   1.351 +
   1.352 +#define yy_set_bol(at_bol) \
   1.353 +	{ \
   1.354 +	if ( ! YY_CURRENT_BUFFER ){\
   1.355 +        yyensure_buffer_stack (yyscanner); \
   1.356 +		YY_CURRENT_BUFFER_LVALUE =    \
   1.357 +            yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
   1.358 +	} \
   1.359 +	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
   1.360 +	}
   1.361 +
   1.362 +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
   1.363 +
   1.364 +/* Begin user sect3 */
   1.365 +
   1.366 +#define yywrap(n) 1
   1.367 +#define YY_SKIP_YYWRAP
   1.368 +
   1.369 +typedef unsigned char YY_CHAR;
   1.370 +
   1.371 +typedef int yy_state_type;
   1.372 +
   1.373 +#define yytext_ptr yytext_r
   1.374 +
   1.375 +static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
   1.376 +static yy_state_type yy_try_NUL_trans (yy_state_type current_state  ,yyscan_t yyscanner);
   1.377 +static int yy_get_next_buffer (yyscan_t yyscanner );
   1.378 +static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
   1.379 +
   1.380 +/* Done after the current pattern has been matched and before the
   1.381 + * corresponding action - sets up yytext.
   1.382 + */
   1.383 +#define YY_DO_BEFORE_ACTION \
   1.384 +	yyg->yytext_ptr = yy_bp; \
   1.385 +	yyleng = (yy_size_t) (yy_cp - yy_bp); \
   1.386 +	yyg->yy_hold_char = *yy_cp; \
   1.387 +	*yy_cp = '\0'; \
   1.388 +	yyg->yy_c_buf_p = yy_cp;
   1.389 +
   1.390 +#define YY_NUM_RULES 147
   1.391 +#define YY_END_OF_BUFFER 148
   1.392 +/* This struct is not used in this scanner,
   1.393 +   but its presence is necessary. */
   1.394 +struct yy_trans_info
   1.395 +	{
   1.396 +	flex_int32_t yy_verify;
   1.397 +	flex_int32_t yy_nxt;
   1.398 +	};
   1.399 +static yyconst flex_int16_t yy_accept[443] =
   1.400 +    {   0,
   1.401 +        0,    0,  148,  146,  145,  145,  132,  138,  143,  127,
   1.402 +      128,  136,  135,  124,  133,  131,  137,   96,   96,  125,
   1.403 +      121,  139,  126,  140,  144,   93,  129,  130,  142,   93,
   1.404 +       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
   1.405 +       93,   93,   93,   93,   93,   93,   93,   93,   93,  122,
   1.406 +      141,  123,  134,  118,  104,  123,  112,  107,  102,  110,
   1.407 +      100,  111,  101,   99,  103,   98,   95,   96,    0,    0,
   1.408 +      130,  122,  129,  119,  115,  117,  116,  120,   93,  108,
   1.409 +      114,   93,   93,   93,   93,   93,   93,   93,   93,   93,
   1.410 +       93,   12,   93,   93,   93,   93,   93,   93,   93,   93,
   1.411 +
   1.412 +       93,   93,   93,   93,   93,   15,   17,   93,   93,   93,
   1.413 +       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
   1.414 +       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
   1.415 +       93,   93,   93,   93,  109,  113,    0,   98,    0,    0,
   1.416 +       97,   94,  105,  106,   45,   93,   93,   93,   93,   93,
   1.417 +       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
   1.418 +       93,   93,   93,   13,   93,   93,   93,   93,   93,   93,
   1.419 +       93,   93,   21,   93,   93,   93,   93,   93,   93,   93,
   1.420 +       93,   18,   93,   93,   93,   93,   93,   93,   93,   93,
   1.421 +       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
   1.422 +
   1.423 +       93,   93,   93,   93,   93,    0,   99,    0,   98,   93,
   1.424 +       23,   93,   93,   90,   93,   93,   93,   93,   93,   93,
   1.425 +       93,   16,   48,   93,   93,   93,   64,   93,   93,   53,
   1.426 +       68,   93,   93,   93,   93,   93,   93,   93,   93,   65,
   1.427 +        4,   28,   29,   30,   93,   93,   93,   93,   93,   93,
   1.428 +       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
   1.429 +       51,   24,   93,   93,   93,   93,   93,   93,   31,   32,
   1.430 +       33,   22,   93,   93,   93,   10,   37,   38,   39,   46,
   1.431 +        7,   93,   93,   93,   93,   77,   78,   79,   93,   25,
   1.432 +       69,   20,   80,   81,   82,    2,   74,   75,   76,   93,
   1.433 +
   1.434 +       19,   72,   93,   93,   34,   35,   36,   93,   93,   93,
   1.435 +       93,   93,   93,   93,   93,   93,   66,   93,   93,   93,
   1.436 +       93,   93,   93,   93,   93,   47,   93,   92,   93,   93,
   1.437 +       14,   93,   93,   93,   93,   67,   61,   56,   93,   93,
   1.438 +       93,   93,   93,   73,   52,   93,   59,   27,   93,   89,
   1.439 +       60,   44,   71,   54,   93,   93,   93,   93,   93,   93,
   1.440 +       93,   93,   55,   26,   93,   93,   93,    3,   93,   93,
   1.441 +       93,   93,   93,   49,    8,   93,    9,   93,   93,   11,
   1.442 +       62,   93,   93,   93,   57,   93,   93,   93,   93,   93,
   1.443 +       93,   50,   70,   58,    6,   63,    1,   91,    5,   83,
   1.444 +
   1.445 +       40,   84,   93,   93,   93,   93,   93,   93,   93,   93,
   1.446 +       93,   93,   93,   93,   41,   93,   93,   93,   93,   93,
   1.447 +       93,   93,   43,   93,   87,   93,   93,   93,   93,   93,
   1.448 +       85,   93,   86,   93,   93,   93,   93,   93,   93,   42,
   1.449 +       88,    0
   1.450 +    } ;
   1.451 +
   1.452 +static yyconst flex_int32_t yy_ec[256] =
   1.453 +    {   0,
   1.454 +        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
   1.455 +        2,    2,    2,    1,    1,    1,    1,    1,    1,    1,
   1.456 +        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
   1.457 +        1,    2,    4,    1,    1,    1,    5,    6,    1,    7,
   1.458 +        8,    9,   10,   11,   12,   13,   14,   15,   16,   17,
   1.459 +       18,   19,   20,   20,   20,   21,   21,   22,   23,   24,
   1.460 +       25,   26,   27,    1,   28,   28,   29,   30,   31,   28,
   1.461 +       32,   32,   32,   32,   32,   32,   32,   32,   33,   32,
   1.462 +       32,   34,   35,   32,   32,   32,   32,   36,   32,   32,
   1.463 +       37,    1,   38,   39,   32,    1,   40,   41,   42,   43,
   1.464 +
   1.465 +       44,   45,   46,   47,   48,   32,   49,   50,   51,   52,
   1.466 +       53,   54,   32,   55,   56,   57,   58,   59,   60,   61,
   1.467 +       62,   63,   64,   65,   66,   67,    1,    1,    1,    1,
   1.468 +        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
   1.469 +        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
   1.470 +        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
   1.471 +        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
   1.472 +        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
   1.473 +        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
   1.474 +        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
   1.475 +
   1.476 +        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
   1.477 +        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
   1.478 +        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
   1.479 +        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
   1.480 +        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
   1.481 +        1,    1,    1,    1,    1
   1.482 +    } ;
   1.483 +
   1.484 +static yyconst flex_int32_t yy_meta[68] =
   1.485 +    {   0,
   1.486 +        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
   1.487 +        1,    1,    1,    1,    2,    2,    2,    2,    2,    2,
   1.488 +        2,    1,    1,    1,    1,    1,    1,    2,    2,    2,
   1.489 +        2,    3,    3,    3,    3,    3,    1,    1,    1,    2,
   1.490 +        2,    2,    2,    2,    2,    3,    3,    3,    3,    3,
   1.491 +        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
   1.492 +        3,    3,    3,    1,    1,    1,    1
   1.493 +    } ;
   1.494 +
   1.495 +static yyconst flex_int16_t yy_base[445] =
   1.496 +    {   0,
   1.497 +        0,    0,  587,  588,  588,  588,  561,   43,   64,  588,
   1.498 +      588,  560,   61,  588,   60,   58,  559,   77,   86,  557,
   1.499 +      588,  104,  557,   55,  588,    0,  588,  588,   75,   26,
   1.500 +       57,   82,   83,   73,   93,  528,   97,   95,  527,   44,
   1.501 +       71,  521,  104,  534,  110,  116,   35,  111,  530,  588,
   1.502 +      114,  588,  588,  588,  588,  588,  588,  588,  588,  588,
   1.503 +      588,  588,  588,  165,  588,  172,  202,  211,  233,    0,
   1.504 +      588,  588,  588,  551,  588,  588,  588,  550,    0,  588,
   1.505 +      588,  523,  516,  519,  527,  526,  513,  528,  515,  521,
   1.506 +      509,  506,  519,  506,  503,  503,  509,  497,  108,  502,
   1.507 +
   1.508 +      512,  498,  504,  507,  508,    0,  145,  507,  113,  493,
   1.509 +      506,  497,  499,  489,  503,  500,  502,  485,  490,  487,
   1.510 +      476,  157,  484,  489,  485,  487,  476,  479,  118,  484,
   1.511 +      476,  488,   70,  481,  588,  588,  246,  253,  270,  219,
   1.512 +      283,    0,  588,  588,    0,  473,  477,  486,  483,  467,
   1.513 +      467,  119,  482,  479,  479,  477,  474,  466,  472,  459,
   1.514 +      470,  456,  472,    0,  469,  457,  464,  461,  465,  458,
   1.515 +      447,  446,  459,  462,  459,  454,  445,  188,  450,  453,
   1.516 +      444,  441,  445,  451,  442,  433,  436,  434,  444,  430,
   1.517 +      428,  441,  427,  429,  426,  437,  436,  124,  431,  426,
   1.518 +
   1.519 +      415,  258,  433,  435,  424,  290,  297,  304,  311,  425,
   1.520 +        0,  423,  275,    0,  415,  413,  421,  410,  427,  416,
   1.521 +      316,    0,    0,  410,  420,  420,    0,  405,  319,    0,
   1.522 +        0,  407,  322,  408,  402,  401,  402,  401,  325,    0,
   1.523 +        0,    0,    0,    0,  397,  398,  403,  394,  407,  402,
   1.524 +      401,  393,  397,  389,  392,  396,  401,  387,  399,  390,
   1.525 +        0,    0,  396,  385,  385,  390,  389,  386,    0,    0,
   1.526 +        0,    0,  376,  388,  390,    0,    0,    0,    0,    0,
   1.527 +        0,  378,  379,  373,  383,    0,    0,    0,  374,    0,
   1.528 +        0,    0,    0,    0,    0,    0,    0,    0,    0,  381,
   1.529 +
   1.530 +        0,    0,  379,  375,    0,    0,    0,  371,  367,  372,
   1.531 +      362,  375,  361,  374,  363,  370,    0,  368,  370,  354,
   1.532 +      356,  362,  368,  363,  351,    0,  353,    0,  352,  355,
   1.533 +        0,  344,  343,  343,  356,    0,  358,    0,  357,  356,
   1.534 +      341,  354,  341,    0,    0,  344,    0,    0,  336,    0,
   1.535 +        0,    0,    0,    0,  333,  344,  337,  343,  340,  335,
   1.536 +      327,  339,    0,    0,  332,  339,  328,    0,  337,  334,
   1.537 +      324,  329,  332,    0,    0,  332,    0,  330,  329,    0,
   1.538 +        0,  328,  314,  326,    0,  317,  338,  337,  336,  307,
   1.539 +      303,    0,    0,    0,    0,    0,    0,    0,    0,  328,
   1.540 +
   1.541 +      166,  325,  316,  299,  308,  310,  306,  308,  307,  306,
   1.542 +      309,  306,  256,  253,    0,  228,  238,  222,  235,  203,
   1.543 +      207,  204,  212,  191,    0,  201,  165,  167,  153,  161,
   1.544 +        0,  170,    0,  175,  151,  141,  100,  114,   59,    0,
   1.545 +        0,  588,  359,  113
   1.546 +    } ;
   1.547 +
   1.548 +static yyconst flex_int16_t yy_def[445] =
   1.549 +    {   0,
   1.550 +      442,    1,  442,  442,  442,  442,  442,  442,  442,  442,
   1.551 +      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
   1.552 +      442,  442,  442,  442,  442,  443,  442,  442,  442,  443,
   1.553 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.554 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  442,
   1.555 +      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
   1.556 +      442,  442,  442,  442,  442,  442,  442,  442,  442,  444,
   1.557 +      442,  442,  442,  442,  442,  442,  442,  442,  443,  442,
   1.558 +      442,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.559 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.560 +
   1.561 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.562 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.563 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.564 +      443,  443,  443,  443,  442,  442,  442,  442,  442,  442,
   1.565 +      442,  444,  442,  442,  443,  443,  443,  443,  443,  443,
   1.566 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.567 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.568 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.569 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.570 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.571 +
   1.572 +      443,  443,  443,  443,  443,  442,  442,  442,  442,  443,
   1.573 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.574 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.575 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.576 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.577 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.578 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.579 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.580 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.581 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.582 +
   1.583 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.584 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.585 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.586 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.587 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.588 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.589 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.590 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.591 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.592 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.593 +
   1.594 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.595 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.596 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.597 +      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
   1.598 +      443,    0,  442,  442
   1.599 +    } ;
   1.600 +
   1.601 +static yyconst flex_int16_t yy_nxt[656] =
   1.602 +    {   0,
   1.603 +        4,    5,    6,    7,    8,    9,   10,   11,   12,   13,
   1.604 +       14,   15,   16,   17,   18,   19,   19,   19,   19,   19,
   1.605 +       19,   20,   21,   22,   23,   24,   25,   26,   26,   26,
   1.606 +       26,   26,   26,   26,   26,   26,   27,   28,   29,   30,
   1.607 +       31,   32,   33,   34,   35,   36,   37,   38,   26,   39,
   1.608 +       40,   41,   42,   43,   44,   45,   46,   47,   48,   49,
   1.609 +       26,   26,   26,   50,   51,   52,   53,   55,   56,   57,
   1.610 +       60,   62,   64,   64,   64,   64,   64,   64,   64,   77,
   1.611 +       78,   82,   83,  110,   63,   61,  129,  111,   58,   66,
   1.612 +      130,   67,   67,   67,   67,   67,   67,   68,   66,   80,
   1.613 +
   1.614 +       68,   68,   68,   68,   68,   68,   68,   69,   72,   84,
   1.615 +      112,   85,   70,   81,  142,   86,   69,  203,  441,  204,
   1.616 +       69,   87,   94,  113,   95,   73,   90,   74,   75,   69,
   1.617 +       91,   88,   97,   96,   89,   92,  103,   70,  135,  106,
   1.618 +       98,   93,   99,  115,  104,  100,  107,  162,  440,  119,
   1.619 +      131,  101,  439,  108,  132,  105,  120,  121,  116,  125,
   1.620 +      163,  117,  126,  133,  176,  198,  122,  123,  264,  124,
   1.621 +      127,  438,  177,  199,  216,  217,  265,  128,  136,   64,
   1.622 +       64,   64,   64,   64,   64,   64,  138,  138,  138,  138,
   1.623 +      138,  138,  138,  437,  170,  137,  190,  171,  172,  406,
   1.624 +
   1.625 +      407,  173,  139,  174,  242,  243,  244,  436,  137,  435,
   1.626 +      434,  191,  433,  432,   66,  139,   67,   67,   67,   67,
   1.627 +       67,   67,   68,   66,  431,   68,   68,   68,   68,   68,
   1.628 +       68,   68,   69,  141,  141,  141,  141,  141,  141,  141,
   1.629 +      430,   69,  140,  429,  140,   69,  428,  141,  141,  141,
   1.630 +      141,  141,  141,  141,   69,  206,  427,  206,  426,  425,
   1.631 +      207,  207,  207,  207,  207,  207,  207,  138,  138,  138,
   1.632 +      138,  138,  138,  138,  269,  270,  271,  424,  423,  208,
   1.633 +      422,  208,  421,  139,  209,  209,  209,  209,  209,  209,
   1.634 +      209,  277,  278,  279,  420,  419,  139,  141,  141,  141,
   1.635 +
   1.636 +      141,  141,  141,  141,  207,  207,  207,  207,  207,  207,
   1.637 +      207,  207,  207,  207,  207,  207,  207,  207,  209,  209,
   1.638 +      209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
   1.639 +      209,  209,  286,  287,  288,  293,  294,  295,  297,  298,
   1.640 +      299,  305,  306,  307,  387,  388,  389,  418,  417,  416,
   1.641 +      415,  414,  413,  412,  411,  410,  409,  390,  408,  391,
   1.642 +       79,   79,  405,  404,  403,  402,  401,  400,  399,  398,
   1.643 +      397,  396,  395,  394,  393,  392,  386,  385,  384,  383,
   1.644 +      382,  381,  380,  379,  378,  377,  376,  375,  374,  373,
   1.645 +      372,  371,  370,  369,  368,  367,  366,  365,  364,  363,
   1.646 +
   1.647 +      362,  361,  360,  359,  358,  357,  356,  355,  354,  353,
   1.648 +      352,  351,  350,  349,  348,  347,  346,  345,  344,  343,
   1.649 +      342,  341,  340,  339,  338,  337,  336,  335,  334,  333,
   1.650 +      332,  331,  330,  329,  328,  327,  326,  325,  324,  323,
   1.651 +      322,  321,  320,  319,  318,  317,  316,  315,  314,  313,
   1.652 +      312,  311,  310,  309,  308,  304,  303,  302,  301,  300,
   1.653 +      296,  292,  291,  290,  289,  285,  284,  283,  282,  281,
   1.654 +      280,  276,  275,  274,  273,  272,  268,  267,  266,  263,
   1.655 +      262,  261,  260,  259,  258,  257,  256,  255,  254,  253,
   1.656 +      252,  251,  250,  249,  248,  247,  246,  245,  241,  240,
   1.657 +
   1.658 +      239,  238,  237,  236,  235,  234,  233,  232,  231,  230,
   1.659 +      229,  228,  227,  226,  225,  224,  223,  222,  221,  220,
   1.660 +      219,  218,  215,  214,  213,  212,  211,  210,  205,  202,
   1.661 +      201,  200,  197,  196,  195,  194,  193,  192,  189,  188,
   1.662 +      187,  186,  185,  184,  183,  182,  181,  180,  179,  178,
   1.663 +      175,  169,  168,  167,  166,  165,  164,  161,  160,  159,
   1.664 +      158,  157,  156,  155,  154,  153,  152,  151,  150,  149,
   1.665 +      148,  147,  146,  145,  144,  143,  134,  118,  114,  109,
   1.666 +      102,   76,   71,   65,   59,   54,  442,    3,  442,  442,
   1.667 +      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
   1.668 +
   1.669 +      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
   1.670 +      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
   1.671 +      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
   1.672 +      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
   1.673 +      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
   1.674 +      442,  442,  442,  442,  442
   1.675 +    } ;
   1.676 +
   1.677 +static yyconst flex_int16_t yy_chk[656] =
   1.678 +    {   0,
   1.679 +        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
   1.680 +        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
   1.681 +        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
   1.682 +        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
   1.683 +        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
   1.684 +        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
   1.685 +        1,    1,    1,    1,    1,    1,    1,    8,    8,    9,
   1.686 +       13,   15,   16,   16,   16,   16,   16,   16,   16,   24,
   1.687 +       24,   30,   30,   40,   15,   13,   47,   40,    9,   18,
   1.688 +       47,   18,   18,   18,   18,   18,   18,   18,   19,   29,
   1.689 +
   1.690 +       19,   19,   19,   19,   19,   19,   19,   18,   22,   31,
   1.691 +       41,   31,   18,   29,  444,   31,   19,  133,  439,  133,
   1.692 +       18,   32,   34,   41,   34,   22,   33,   22,   22,   19,
   1.693 +       33,   32,   35,   34,   32,   33,   37,   18,   51,   38,
   1.694 +       35,   33,   35,   43,   37,   35,   38,   99,  438,   45,
   1.695 +       48,   35,  437,   38,   48,   37,   45,   45,   43,   46,
   1.696 +       99,   43,   46,   48,  109,  129,   45,   45,  198,   45,
   1.697 +       46,  436,  109,  129,  152,  152,  198,   46,   51,   64,
   1.698 +       64,   64,   64,   64,   64,   64,   66,   66,   66,   66,
   1.699 +       66,   66,   66,  435,  107,   64,  122,  107,  107,  401,
   1.700 +
   1.701 +      401,  107,   66,  107,  178,  178,  178,  434,   64,  432,
   1.702 +      430,  122,  429,  428,   67,   66,   67,   67,   67,   67,
   1.703 +       67,   67,   67,   68,  427,   68,   68,   68,   68,   68,
   1.704 +       68,   68,   67,  140,  140,  140,  140,  140,  140,  140,
   1.705 +      426,   68,   69,  424,   69,   67,  423,   69,   69,   69,
   1.706 +       69,   69,   69,   69,   68,  137,  422,  137,  421,  420,
   1.707 +      137,  137,  137,  137,  137,  137,  137,  138,  138,  138,
   1.708 +      138,  138,  138,  138,  202,  202,  202,  419,  418,  139,
   1.709 +      417,  139,  416,  138,  139,  139,  139,  139,  139,  139,
   1.710 +      139,  213,  213,  213,  414,  413,  138,  141,  141,  141,
   1.711 +
   1.712 +      141,  141,  141,  141,  206,  206,  206,  206,  206,  206,
   1.713 +      206,  207,  207,  207,  207,  207,  207,  207,  208,  208,
   1.714 +      208,  208,  208,  208,  208,  209,  209,  209,  209,  209,
   1.715 +      209,  209,  221,  221,  221,  229,  229,  229,  233,  233,
   1.716 +      233,  239,  239,  239,  372,  372,  372,  412,  411,  410,
   1.717 +      409,  408,  407,  406,  405,  404,  403,  372,  402,  372,
   1.718 +      443,  443,  400,  391,  390,  389,  388,  387,  386,  384,
   1.719 +      383,  382,  379,  378,  376,  373,  371,  370,  369,  367,
   1.720 +      366,  365,  362,  361,  360,  359,  358,  357,  356,  355,
   1.721 +      349,  346,  343,  342,  341,  340,  339,  337,  335,  334,
   1.722 +
   1.723 +      333,  332,  330,  329,  327,  325,  324,  323,  322,  321,
   1.724 +      320,  319,  318,  316,  315,  314,  313,  312,  311,  310,
   1.725 +      309,  308,  304,  303,  300,  289,  285,  284,  283,  282,
   1.726 +      275,  274,  273,  268,  267,  266,  265,  264,  263,  260,
   1.727 +      259,  258,  257,  256,  255,  254,  253,  252,  251,  250,
   1.728 +      249,  248,  247,  246,  245,  238,  237,  236,  235,  234,
   1.729 +      232,  228,  226,  225,  224,  220,  219,  218,  217,  216,
   1.730 +      215,  212,  210,  205,  204,  203,  201,  200,  199,  197,
   1.731 +      196,  195,  194,  193,  192,  191,  190,  189,  188,  187,
   1.732 +      186,  185,  184,  183,  182,  181,  180,  179,  177,  176,
   1.733 +
   1.734 +      175,  174,  173,  172,  171,  170,  169,  168,  167,  166,
   1.735 +      165,  163,  162,  161,  160,  159,  158,  157,  156,  155,
   1.736 +      154,  153,  151,  150,  149,  148,  147,  146,  134,  132,
   1.737 +      131,  130,  128,  127,  126,  125,  124,  123,  121,  120,
   1.738 +      119,  118,  117,  116,  115,  114,  113,  112,  111,  110,
   1.739 +      108,  105,  104,  103,  102,  101,  100,   98,   97,   96,
   1.740 +       95,   94,   93,   92,   91,   90,   89,   88,   87,   86,
   1.741 +       85,   84,   83,   82,   78,   74,   49,   44,   42,   39,
   1.742 +       36,   23,   20,   17,   12,    7,    3,  442,  442,  442,
   1.743 +      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
   1.744 +
   1.745 +      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
   1.746 +      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
   1.747 +      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
   1.748 +      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
   1.749 +      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
   1.750 +      442,  442,  442,  442,  442
   1.751 +    } ;
   1.752 +
   1.753 +/* Table of booleans, true if rule could match eol. */
   1.754 +static yyconst flex_int32_t yy_rule_can_match_eol[148] =
   1.755 +    {   0,
   1.756 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   1.757 +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   1.758 +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   1.759 +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   1.760 +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   1.761 +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   1.762 +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   1.763 +    0, 0, 0, 0, 0, 1, 0, 0,     };
   1.764 +
   1.765 +/* The intent behind this definition is that it'll catch
   1.766 + * any uses of REJECT which flex missed.
   1.767 + */
   1.768 +#define REJECT reject_used_but_not_detected
   1.769 +#define yymore() yymore_used_but_not_detected
   1.770 +#define YY_MORE_ADJ 0
   1.771 +#define YY_RESTORE_YY_MORE_OFFSET
   1.772 +/*
   1.773 +//
   1.774 +// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
   1.775 +// Use of this source code is governed by a BSD-style license that can be
   1.776 +// found in the LICENSE file.
   1.777 +//
   1.778 +
   1.779 +This file contains the Lex specification for GLSL ES.
   1.780 +Based on ANSI C grammar, Lex specification:
   1.781 +http://www.lysator.liu.se/c/ANSI-C-grammar-l.html
   1.782 +
   1.783 +IF YOU MODIFY THIS FILE YOU ALSO NEED TO RUN generate_parser.sh,
   1.784 +WHICH GENERATES THE GLSL ES LEXER (glslang_lex.cpp).
   1.785 +*/
   1.786 +
   1.787 +#include "compiler/glslang.h"
   1.788 +#include "compiler/ParseHelper.h"
   1.789 +#include "compiler/preprocessor/Token.h"
   1.790 +#include "compiler/util.h"
   1.791 +#include "glslang_tab.h"
   1.792 +
   1.793 +/* windows only pragma */
   1.794 +#ifdef _MSC_VER
   1.795 +#pragma warning(disable : 4102)
   1.796 +#endif
   1.797 +
   1.798 +#define YY_USER_ACTION                                 \
   1.799 +    yylloc->first_file = yylloc->last_file = yycolumn; \
   1.800 +    yylloc->first_line = yylloc->last_line = yylineno;
   1.801 +
   1.802 +#define YY_INPUT(buf, result, max_size) \
   1.803 +    result = string_input(buf, max_size, yyscanner);
   1.804 +
   1.805 +static yy_size_t string_input(char* buf, yy_size_t max_size, yyscan_t yyscanner);
   1.806 +static int check_type(yyscan_t yyscanner);
   1.807 +static int reserved_word(yyscan_t yyscanner);
   1.808 +
   1.809 +#define INITIAL 0
   1.810 +
   1.811 +#define YY_EXTRA_TYPE TParseContext*
   1.812 +
   1.813 +/* Holds the entire state of the reentrant scanner. */
   1.814 +struct yyguts_t
   1.815 +    {
   1.816 +
   1.817 +    /* User-defined. Not touched by flex. */
   1.818 +    YY_EXTRA_TYPE yyextra_r;
   1.819 +
   1.820 +    /* The rest are the same as the globals declared in the non-reentrant scanner. */
   1.821 +    FILE *yyin_r, *yyout_r;
   1.822 +    size_t yy_buffer_stack_top; /**< index of top of stack. */
   1.823 +    size_t yy_buffer_stack_max; /**< capacity of stack. */
   1.824 +    YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
   1.825 +    char yy_hold_char;
   1.826 +    yy_size_t yy_n_chars;
   1.827 +    yy_size_t yyleng_r;
   1.828 +    char *yy_c_buf_p;
   1.829 +    int yy_init;
   1.830 +    int yy_start;
   1.831 +    int yy_did_buffer_switch_on_eof;
   1.832 +    int yy_start_stack_ptr;
   1.833 +    int yy_start_stack_depth;
   1.834 +    int *yy_start_stack;
   1.835 +    yy_state_type yy_last_accepting_state;
   1.836 +    char* yy_last_accepting_cpos;
   1.837 +
   1.838 +    int yylineno_r;
   1.839 +    int yy_flex_debug_r;
   1.840 +
   1.841 +    char *yytext_r;
   1.842 +    int yy_more_flag;
   1.843 +    int yy_more_len;
   1.844 +
   1.845 +    YYSTYPE * yylval_r;
   1.846 +
   1.847 +    YYLTYPE * yylloc_r;
   1.848 +
   1.849 +    }; /* end struct yyguts_t */
   1.850 +
   1.851 +static int yy_init_globals (yyscan_t yyscanner );
   1.852 +
   1.853 +    /* This must go here because YYSTYPE and YYLTYPE are included
   1.854 +     * from bison output in section 1.*/
   1.855 +    #    define yylval yyg->yylval_r
   1.856 +    
   1.857 +    #    define yylloc yyg->yylloc_r
   1.858 +    
   1.859 +int yylex_init (yyscan_t* scanner);
   1.860 +
   1.861 +int yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
   1.862 +
   1.863 +/* Accessor methods to globals.
   1.864 +   These are made visible to non-reentrant scanners for convenience. */
   1.865 +
   1.866 +int yylex_destroy (yyscan_t yyscanner );
   1.867 +
   1.868 +int yyget_debug (yyscan_t yyscanner );
   1.869 +
   1.870 +void yyset_debug (int debug_flag ,yyscan_t yyscanner );
   1.871 +
   1.872 +YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner );
   1.873 +
   1.874 +void yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
   1.875 +
   1.876 +FILE *yyget_in (yyscan_t yyscanner );
   1.877 +
   1.878 +void yyset_in  (FILE * in_str ,yyscan_t yyscanner );
   1.879 +
   1.880 +FILE *yyget_out (yyscan_t yyscanner );
   1.881 +
   1.882 +void yyset_out  (FILE * out_str ,yyscan_t yyscanner );
   1.883 +
   1.884 +yy_size_t yyget_leng (yyscan_t yyscanner );
   1.885 +
   1.886 +char *yyget_text (yyscan_t yyscanner );
   1.887 +
   1.888 +int yyget_lineno (yyscan_t yyscanner );
   1.889 +
   1.890 +void yyset_lineno (int line_number ,yyscan_t yyscanner );
   1.891 +
   1.892 +YYSTYPE * yyget_lval (yyscan_t yyscanner );
   1.893 +
   1.894 +void yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
   1.895 +
   1.896 +       YYLTYPE *yyget_lloc (yyscan_t yyscanner );
   1.897 +    
   1.898 +        void yyset_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
   1.899 +    
   1.900 +/* Macros after this point can all be overridden by user definitions in
   1.901 + * section 1.
   1.902 + */
   1.903 +
   1.904 +#ifndef YY_SKIP_YYWRAP
   1.905 +#ifdef __cplusplus
   1.906 +extern "C" int yywrap (yyscan_t yyscanner );
   1.907 +#else
   1.908 +extern int yywrap (yyscan_t yyscanner );
   1.909 +#endif
   1.910 +#endif
   1.911 +
   1.912 +#ifndef yytext_ptr
   1.913 +static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
   1.914 +#endif
   1.915 +
   1.916 +#ifdef YY_NEED_STRLEN
   1.917 +static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
   1.918 +#endif
   1.919 +
   1.920 +#ifndef YY_NO_INPUT
   1.921 +
   1.922 +#ifdef __cplusplus
   1.923 +static int yyinput (yyscan_t yyscanner );
   1.924 +#else
   1.925 +static int input (yyscan_t yyscanner );
   1.926 +#endif
   1.927 +
   1.928 +#endif
   1.929 +
   1.930 +/* Amount of stuff to slurp up with each read. */
   1.931 +#ifndef YY_READ_BUF_SIZE
   1.932 +#define YY_READ_BUF_SIZE 8192
   1.933 +#endif
   1.934 +
   1.935 +/* Copy whatever the last rule matched to the standard output. */
   1.936 +#ifndef ECHO
   1.937 +/* This used to be an fputs(), but since the string might contain NUL's,
   1.938 + * we now use fwrite().
   1.939 + */
   1.940 +#define ECHO fwrite( yytext, yyleng, 1, yyout )
   1.941 +#endif
   1.942 +
   1.943 +/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
   1.944 + * is returned in "result".
   1.945 + */
   1.946 +#ifndef YY_INPUT
   1.947 +#define YY_INPUT(buf,result,max_size) \
   1.948 +	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
   1.949 +		{ \
   1.950 +		int c = '*'; \
   1.951 +		yy_size_t n; \
   1.952 +		for ( n = 0; n < max_size && \
   1.953 +			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
   1.954 +			buf[n] = (char) c; \
   1.955 +		if ( c == '\n' ) \
   1.956 +			buf[n++] = (char) c; \
   1.957 +		if ( c == EOF && ferror( yyin ) ) \
   1.958 +			YY_FATAL_ERROR( "input in flex scanner failed" ); \
   1.959 +		result = n; \
   1.960 +		} \
   1.961 +	else \
   1.962 +		{ \
   1.963 +		errno=0; \
   1.964 +		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
   1.965 +			{ \
   1.966 +			if( errno != EINTR) \
   1.967 +				{ \
   1.968 +				YY_FATAL_ERROR( "input in flex scanner failed" ); \
   1.969 +				break; \
   1.970 +				} \
   1.971 +			errno=0; \
   1.972 +			clearerr(yyin); \
   1.973 +			} \
   1.974 +		}\
   1.975 +\
   1.976 +
   1.977 +#endif
   1.978 +
   1.979 +/* No semi-colon after return; correct usage is to write "yyterminate();" -
   1.980 + * we don't want an extra ';' after the "return" because that will cause
   1.981 + * some compilers to complain about unreachable statements.
   1.982 + */
   1.983 +#ifndef yyterminate
   1.984 +#define yyterminate() return YY_NULL
   1.985 +#endif
   1.986 +
   1.987 +/* Number of entries by which start-condition stack grows. */
   1.988 +#ifndef YY_START_STACK_INCR
   1.989 +#define YY_START_STACK_INCR 25
   1.990 +#endif
   1.991 +
   1.992 +/* Report a fatal error. */
   1.993 +#ifndef YY_FATAL_ERROR
   1.994 +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
   1.995 +#endif
   1.996 +
   1.997 +/* end tables serialization structures and prototypes */
   1.998 +
   1.999 +/* Default declaration of generated scanner - a define so the user can
  1.1000 + * easily add parameters.
  1.1001 + */
  1.1002 +#ifndef YY_DECL
  1.1003 +#define YY_DECL_IS_OURS 1
  1.1004 +
  1.1005 +extern int yylex \
  1.1006 +               (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
  1.1007 +
  1.1008 +#define YY_DECL int yylex \
  1.1009 +               (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
  1.1010 +#endif /* !YY_DECL */
  1.1011 +
  1.1012 +/* Code executed at the beginning of each rule, after yytext and yyleng
  1.1013 + * have been set up.
  1.1014 + */
  1.1015 +#ifndef YY_USER_ACTION
  1.1016 +#define YY_USER_ACTION
  1.1017 +#endif
  1.1018 +
  1.1019 +/* Code executed at the end of each rule. */
  1.1020 +#ifndef YY_BREAK
  1.1021 +#define YY_BREAK break;
  1.1022 +#endif
  1.1023 +
  1.1024 +#define YY_RULE_SETUP \
  1.1025 +	YY_USER_ACTION
  1.1026 +
  1.1027 +/** The main scanner function which does all the work.
  1.1028 + */
  1.1029 +YY_DECL
  1.1030 +{
  1.1031 +	register yy_state_type yy_current_state;
  1.1032 +	register char *yy_cp, *yy_bp;
  1.1033 +	register int yy_act;
  1.1034 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.1035 +
  1.1036 +    yylval = yylval_param;
  1.1037 +
  1.1038 +    yylloc = yylloc_param;
  1.1039 +
  1.1040 +	if ( !yyg->yy_init )
  1.1041 +		{
  1.1042 +		yyg->yy_init = 1;
  1.1043 +
  1.1044 +#ifdef YY_USER_INIT
  1.1045 +		YY_USER_INIT;
  1.1046 +#endif
  1.1047 +
  1.1048 +		if ( ! yyg->yy_start )
  1.1049 +			yyg->yy_start = 1;	/* first start state */
  1.1050 +
  1.1051 +		if ( ! yyin )
  1.1052 +			yyin = stdin;
  1.1053 +
  1.1054 +		if ( ! yyout )
  1.1055 +			yyout = stdout;
  1.1056 +
  1.1057 +		if ( ! YY_CURRENT_BUFFER ) {
  1.1058 +			yyensure_buffer_stack (yyscanner);
  1.1059 +			YY_CURRENT_BUFFER_LVALUE =
  1.1060 +				yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
  1.1061 +		}
  1.1062 +
  1.1063 +		yy_load_buffer_state(yyscanner );
  1.1064 +		}
  1.1065 +
  1.1066 +	while ( 1 )		/* loops until end-of-file is reached */
  1.1067 +		{
  1.1068 +		yy_cp = yyg->yy_c_buf_p;
  1.1069 +
  1.1070 +		/* Support of yytext. */
  1.1071 +		*yy_cp = yyg->yy_hold_char;
  1.1072 +
  1.1073 +		/* yy_bp points to the position in yy_ch_buf of the start of
  1.1074 +		 * the current run.
  1.1075 +		 */
  1.1076 +		yy_bp = yy_cp;
  1.1077 +
  1.1078 +		yy_current_state = yyg->yy_start;
  1.1079 +yy_match:
  1.1080 +		do
  1.1081 +			{
  1.1082 +			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
  1.1083 +			if ( yy_accept[yy_current_state] )
  1.1084 +				{
  1.1085 +				yyg->yy_last_accepting_state = yy_current_state;
  1.1086 +				yyg->yy_last_accepting_cpos = yy_cp;
  1.1087 +				}
  1.1088 +			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  1.1089 +				{
  1.1090 +				yy_current_state = (int) yy_def[yy_current_state];
  1.1091 +				if ( yy_current_state >= 443 )
  1.1092 +					yy_c = yy_meta[(unsigned int) yy_c];
  1.1093 +				}
  1.1094 +			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
  1.1095 +			++yy_cp;
  1.1096 +			}
  1.1097 +		while ( yy_current_state != 442 );
  1.1098 +		yy_cp = yyg->yy_last_accepting_cpos;
  1.1099 +		yy_current_state = yyg->yy_last_accepting_state;
  1.1100 +
  1.1101 +yy_find_action:
  1.1102 +		yy_act = yy_accept[yy_current_state];
  1.1103 +
  1.1104 +		YY_DO_BEFORE_ACTION;
  1.1105 +
  1.1106 +		if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
  1.1107 +			{
  1.1108 +			yy_size_t yyl;
  1.1109 +			for ( yyl = 0; yyl < yyleng; ++yyl )
  1.1110 +				if ( yytext[yyl] == '\n' )
  1.1111 +					   
  1.1112 +    do{ yylineno++;
  1.1113 +        yycolumn=0;
  1.1114 +    }while(0)
  1.1115 +;
  1.1116 +			}
  1.1117 +
  1.1118 +do_action:	/* This label is used only to access EOF actions. */
  1.1119 +
  1.1120 +		switch ( yy_act )
  1.1121 +	{ /* beginning of action switch */
  1.1122 +			case 0: /* must back up */
  1.1123 +			/* undo the effects of YY_DO_BEFORE_ACTION */
  1.1124 +			*yy_cp = yyg->yy_hold_char;
  1.1125 +			yy_cp = yyg->yy_last_accepting_cpos;
  1.1126 +			yy_current_state = yyg->yy_last_accepting_state;
  1.1127 +			goto yy_find_action;
  1.1128 +
  1.1129 +case 1:
  1.1130 +YY_RULE_SETUP
  1.1131 +{ return INVARIANT; }
  1.1132 +	YY_BREAK
  1.1133 +case 2:
  1.1134 +YY_RULE_SETUP
  1.1135 +{ return HIGH_PRECISION; }
  1.1136 +	YY_BREAK
  1.1137 +case 3:
  1.1138 +YY_RULE_SETUP
  1.1139 +{ return MEDIUM_PRECISION; }
  1.1140 +	YY_BREAK
  1.1141 +case 4:
  1.1142 +YY_RULE_SETUP
  1.1143 +{ return LOW_PRECISION; }
  1.1144 +	YY_BREAK
  1.1145 +case 5:
  1.1146 +YY_RULE_SETUP
  1.1147 +{ return PRECISION; }
  1.1148 +	YY_BREAK
  1.1149 +case 6:
  1.1150 +YY_RULE_SETUP
  1.1151 +{ return ATTRIBUTE; }
  1.1152 +	YY_BREAK
  1.1153 +case 7:
  1.1154 +YY_RULE_SETUP
  1.1155 +{ return CONST_QUAL; }
  1.1156 +	YY_BREAK
  1.1157 +case 8:
  1.1158 +YY_RULE_SETUP
  1.1159 +{ return UNIFORM; }
  1.1160 +	YY_BREAK
  1.1161 +case 9:
  1.1162 +YY_RULE_SETUP
  1.1163 +{ return VARYING; }
  1.1164 +	YY_BREAK
  1.1165 +case 10:
  1.1166 +YY_RULE_SETUP
  1.1167 +{ return BREAK; }
  1.1168 +	YY_BREAK
  1.1169 +case 11:
  1.1170 +YY_RULE_SETUP
  1.1171 +{ return CONTINUE; }
  1.1172 +	YY_BREAK
  1.1173 +case 12:
  1.1174 +YY_RULE_SETUP
  1.1175 +{ return DO; }
  1.1176 +	YY_BREAK
  1.1177 +case 13:
  1.1178 +YY_RULE_SETUP
  1.1179 +{ return FOR; }
  1.1180 +	YY_BREAK
  1.1181 +case 14:
  1.1182 +YY_RULE_SETUP
  1.1183 +{ return WHILE; }
  1.1184 +	YY_BREAK
  1.1185 +case 15:
  1.1186 +YY_RULE_SETUP
  1.1187 +{ return IF; }
  1.1188 +	YY_BREAK
  1.1189 +case 16:
  1.1190 +YY_RULE_SETUP
  1.1191 +{ return ELSE; }
  1.1192 +	YY_BREAK
  1.1193 +case 17:
  1.1194 +YY_RULE_SETUP
  1.1195 +{ return IN_QUAL; }
  1.1196 +	YY_BREAK
  1.1197 +case 18:
  1.1198 +YY_RULE_SETUP
  1.1199 +{ return OUT_QUAL; }
  1.1200 +	YY_BREAK
  1.1201 +case 19:
  1.1202 +YY_RULE_SETUP
  1.1203 +{ return INOUT_QUAL; }
  1.1204 +	YY_BREAK
  1.1205 +case 20:
  1.1206 +YY_RULE_SETUP
  1.1207 +{ return FLOAT_TYPE; }
  1.1208 +	YY_BREAK
  1.1209 +case 21:
  1.1210 +YY_RULE_SETUP
  1.1211 +{ return INT_TYPE; }
  1.1212 +	YY_BREAK
  1.1213 +case 22:
  1.1214 +YY_RULE_SETUP
  1.1215 +{ return VOID_TYPE; }
  1.1216 +	YY_BREAK
  1.1217 +case 23:
  1.1218 +YY_RULE_SETUP
  1.1219 +{ return BOOL_TYPE; }
  1.1220 +	YY_BREAK
  1.1221 +case 24:
  1.1222 +YY_RULE_SETUP
  1.1223 +{ yylval->lex.b = true;  return BOOLCONSTANT; }
  1.1224 +	YY_BREAK
  1.1225 +case 25:
  1.1226 +YY_RULE_SETUP
  1.1227 +{ yylval->lex.b = false; return BOOLCONSTANT; }
  1.1228 +	YY_BREAK
  1.1229 +case 26:
  1.1230 +YY_RULE_SETUP
  1.1231 +{ return DISCARD; }
  1.1232 +	YY_BREAK
  1.1233 +case 27:
  1.1234 +YY_RULE_SETUP
  1.1235 +{ return RETURN; }
  1.1236 +	YY_BREAK
  1.1237 +case 28:
  1.1238 +YY_RULE_SETUP
  1.1239 +{ return MATRIX2; }
  1.1240 +	YY_BREAK
  1.1241 +case 29:
  1.1242 +YY_RULE_SETUP
  1.1243 +{ return MATRIX3; }
  1.1244 +	YY_BREAK
  1.1245 +case 30:
  1.1246 +YY_RULE_SETUP
  1.1247 +{ return MATRIX4; }
  1.1248 +	YY_BREAK
  1.1249 +case 31:
  1.1250 +YY_RULE_SETUP
  1.1251 +{ return VEC2; }
  1.1252 +	YY_BREAK
  1.1253 +case 32:
  1.1254 +YY_RULE_SETUP
  1.1255 +{ return VEC3; }
  1.1256 +	YY_BREAK
  1.1257 +case 33:
  1.1258 +YY_RULE_SETUP
  1.1259 +{ return VEC4; }
  1.1260 +	YY_BREAK
  1.1261 +case 34:
  1.1262 +YY_RULE_SETUP
  1.1263 +{ return IVEC2; }
  1.1264 +	YY_BREAK
  1.1265 +case 35:
  1.1266 +YY_RULE_SETUP
  1.1267 +{ return IVEC3; }
  1.1268 +	YY_BREAK
  1.1269 +case 36:
  1.1270 +YY_RULE_SETUP
  1.1271 +{ return IVEC4; }
  1.1272 +	YY_BREAK
  1.1273 +case 37:
  1.1274 +YY_RULE_SETUP
  1.1275 +{ return BVEC2; }
  1.1276 +	YY_BREAK
  1.1277 +case 38:
  1.1278 +YY_RULE_SETUP
  1.1279 +{ return BVEC3; }
  1.1280 +	YY_BREAK
  1.1281 +case 39:
  1.1282 +YY_RULE_SETUP
  1.1283 +{ return BVEC4; }
  1.1284 +	YY_BREAK
  1.1285 +case 40:
  1.1286 +YY_RULE_SETUP
  1.1287 +{ return SAMPLER2D; }
  1.1288 +	YY_BREAK
  1.1289 +case 41:
  1.1290 +YY_RULE_SETUP
  1.1291 +{ return SAMPLERCUBE; }
  1.1292 +	YY_BREAK
  1.1293 +case 42:
  1.1294 +YY_RULE_SETUP
  1.1295 +{ return SAMPLER_EXTERNAL_OES; }
  1.1296 +	YY_BREAK
  1.1297 +case 43:
  1.1298 +YY_RULE_SETUP
  1.1299 +{ return SAMPLER2DRECT; }
  1.1300 +	YY_BREAK
  1.1301 +case 44:
  1.1302 +YY_RULE_SETUP
  1.1303 +{ return STRUCT; }
  1.1304 +	YY_BREAK
  1.1305 +case 45:
  1.1306 +YY_RULE_SETUP
  1.1307 +{ return reserved_word(yyscanner); }
  1.1308 +	YY_BREAK
  1.1309 +case 46:
  1.1310 +YY_RULE_SETUP
  1.1311 +{ return reserved_word(yyscanner); }
  1.1312 +	YY_BREAK
  1.1313 +case 47:
  1.1314 +YY_RULE_SETUP
  1.1315 +{ return reserved_word(yyscanner); }
  1.1316 +	YY_BREAK
  1.1317 +case 48:
  1.1318 +YY_RULE_SETUP
  1.1319 +{ return reserved_word(yyscanner); }
  1.1320 +	YY_BREAK
  1.1321 +case 49:
  1.1322 +YY_RULE_SETUP
  1.1323 +{ return reserved_word(yyscanner); }
  1.1324 +	YY_BREAK
  1.1325 +case 50:
  1.1326 +YY_RULE_SETUP
  1.1327 +{ return reserved_word(yyscanner); }
  1.1328 +	YY_BREAK
  1.1329 +case 51:
  1.1330 +YY_RULE_SETUP
  1.1331 +{ return reserved_word(yyscanner); }
  1.1332 +	YY_BREAK
  1.1333 +case 52:
  1.1334 +YY_RULE_SETUP
  1.1335 +{ return reserved_word(yyscanner); }
  1.1336 +	YY_BREAK
  1.1337 +case 53:
  1.1338 +YY_RULE_SETUP
  1.1339 +{ return reserved_word(yyscanner); }
  1.1340 +	YY_BREAK
  1.1341 +case 54:
  1.1342 +YY_RULE_SETUP
  1.1343 +{ return reserved_word(yyscanner); }
  1.1344 +	YY_BREAK
  1.1345 +case 55:
  1.1346 +YY_RULE_SETUP
  1.1347 +{ return reserved_word(yyscanner); }
  1.1348 +	YY_BREAK
  1.1349 +case 56:
  1.1350 +YY_RULE_SETUP
  1.1351 +{ return reserved_word(yyscanner); }
  1.1352 +	YY_BREAK
  1.1353 +case 57:
  1.1354 +YY_RULE_SETUP
  1.1355 +{ return reserved_word(yyscanner); }
  1.1356 +	YY_BREAK
  1.1357 +case 58:
  1.1358 +YY_RULE_SETUP
  1.1359 +{ return reserved_word(yyscanner); }
  1.1360 +	YY_BREAK
  1.1361 +case 59:
  1.1362 +YY_RULE_SETUP
  1.1363 +{ return reserved_word(yyscanner); }
  1.1364 +	YY_BREAK
  1.1365 +case 60:
  1.1366 +YY_RULE_SETUP
  1.1367 +{ return reserved_word(yyscanner); }
  1.1368 +	YY_BREAK
  1.1369 +case 61:
  1.1370 +YY_RULE_SETUP
  1.1371 +{ return reserved_word(yyscanner); }
  1.1372 +	YY_BREAK
  1.1373 +case 62:
  1.1374 +YY_RULE_SETUP
  1.1375 +{ return reserved_word(yyscanner); }
  1.1376 +	YY_BREAK
  1.1377 +case 63:
  1.1378 +YY_RULE_SETUP
  1.1379 +{ return reserved_word(yyscanner); }
  1.1380 +	YY_BREAK
  1.1381 +case 64:
  1.1382 +YY_RULE_SETUP
  1.1383 +{ return reserved_word(yyscanner); }
  1.1384 +	YY_BREAK
  1.1385 +case 65:
  1.1386 +YY_RULE_SETUP
  1.1387 +{ return reserved_word(yyscanner); }
  1.1388 +	YY_BREAK
  1.1389 +case 66:
  1.1390 +YY_RULE_SETUP
  1.1391 +{ return reserved_word(yyscanner); }
  1.1392 +	YY_BREAK
  1.1393 +case 67:
  1.1394 +YY_RULE_SETUP
  1.1395 +{ return reserved_word(yyscanner); }
  1.1396 +	YY_BREAK
  1.1397 +case 68:
  1.1398 +YY_RULE_SETUP
  1.1399 +{ return reserved_word(yyscanner); }
  1.1400 +	YY_BREAK
  1.1401 +case 69:
  1.1402 +YY_RULE_SETUP
  1.1403 +{ return reserved_word(yyscanner); }
  1.1404 +	YY_BREAK
  1.1405 +case 70:
  1.1406 +YY_RULE_SETUP
  1.1407 +{ return reserved_word(yyscanner); }
  1.1408 +	YY_BREAK
  1.1409 +case 71:
  1.1410 +YY_RULE_SETUP
  1.1411 +{ return reserved_word(yyscanner); }
  1.1412 +	YY_BREAK
  1.1413 +case 72:
  1.1414 +YY_RULE_SETUP
  1.1415 +{ return reserved_word(yyscanner); }
  1.1416 +	YY_BREAK
  1.1417 +case 73:
  1.1418 +YY_RULE_SETUP
  1.1419 +{ return reserved_word(yyscanner); }
  1.1420 +	YY_BREAK
  1.1421 +case 74:
  1.1422 +YY_RULE_SETUP
  1.1423 +{ return reserved_word(yyscanner); }
  1.1424 +	YY_BREAK
  1.1425 +case 75:
  1.1426 +YY_RULE_SETUP
  1.1427 +{ return reserved_word(yyscanner); }
  1.1428 +	YY_BREAK
  1.1429 +case 76:
  1.1430 +YY_RULE_SETUP
  1.1431 +{ return reserved_word(yyscanner); }
  1.1432 +	YY_BREAK
  1.1433 +case 77:
  1.1434 +YY_RULE_SETUP
  1.1435 +{ return reserved_word(yyscanner); }
  1.1436 +	YY_BREAK
  1.1437 +case 78:
  1.1438 +YY_RULE_SETUP
  1.1439 +{ return reserved_word(yyscanner); }
  1.1440 +	YY_BREAK
  1.1441 +case 79:
  1.1442 +YY_RULE_SETUP
  1.1443 +{ return reserved_word(yyscanner); }
  1.1444 +	YY_BREAK
  1.1445 +case 80:
  1.1446 +YY_RULE_SETUP
  1.1447 +{ return reserved_word(yyscanner); }
  1.1448 +	YY_BREAK
  1.1449 +case 81:
  1.1450 +YY_RULE_SETUP
  1.1451 +{ return reserved_word(yyscanner); }
  1.1452 +	YY_BREAK
  1.1453 +case 82:
  1.1454 +YY_RULE_SETUP
  1.1455 +{ return reserved_word(yyscanner); }
  1.1456 +	YY_BREAK
  1.1457 +case 83:
  1.1458 +YY_RULE_SETUP
  1.1459 +{ return reserved_word(yyscanner); }
  1.1460 +	YY_BREAK
  1.1461 +case 84:
  1.1462 +YY_RULE_SETUP
  1.1463 +{ return reserved_word(yyscanner); }
  1.1464 +	YY_BREAK
  1.1465 +case 85:
  1.1466 +YY_RULE_SETUP
  1.1467 +{ return reserved_word(yyscanner); }
  1.1468 +	YY_BREAK
  1.1469 +case 86:
  1.1470 +YY_RULE_SETUP
  1.1471 +{ return reserved_word(yyscanner); }
  1.1472 +	YY_BREAK
  1.1473 +case 87:
  1.1474 +YY_RULE_SETUP
  1.1475 +{ return reserved_word(yyscanner); }
  1.1476 +	YY_BREAK
  1.1477 +case 88:
  1.1478 +YY_RULE_SETUP
  1.1479 +{ return reserved_word(yyscanner); }
  1.1480 +	YY_BREAK
  1.1481 +case 89:
  1.1482 +YY_RULE_SETUP
  1.1483 +{ return reserved_word(yyscanner); }
  1.1484 +	YY_BREAK
  1.1485 +case 90:
  1.1486 +YY_RULE_SETUP
  1.1487 +{ return reserved_word(yyscanner); }
  1.1488 +	YY_BREAK
  1.1489 +case 91:
  1.1490 +YY_RULE_SETUP
  1.1491 +{ return reserved_word(yyscanner); }
  1.1492 +	YY_BREAK
  1.1493 +case 92:
  1.1494 +YY_RULE_SETUP
  1.1495 +{ return reserved_word(yyscanner); }
  1.1496 +	YY_BREAK
  1.1497 +case 93:
  1.1498 +YY_RULE_SETUP
  1.1499 +{
  1.1500 +   yylval->lex.string = NewPoolTString(yytext); 
  1.1501 +   return check_type(yyscanner);
  1.1502 +}
  1.1503 +	YY_BREAK
  1.1504 +case 94:
  1.1505 +YY_RULE_SETUP
  1.1506 +{ yylval->lex.i = static_cast<int>(strtol(yytext, 0, 0)); return INTCONSTANT; }
  1.1507 +	YY_BREAK
  1.1508 +case 95:
  1.1509 +YY_RULE_SETUP
  1.1510 +{ yylval->lex.i = static_cast<int>(strtol(yytext, 0, 0)); return INTCONSTANT; }
  1.1511 +	YY_BREAK
  1.1512 +case 96:
  1.1513 +YY_RULE_SETUP
  1.1514 +{ yylval->lex.i = static_cast<int>(strtol(yytext, 0, 0)); return INTCONSTANT; }
  1.1515 +	YY_BREAK
  1.1516 +case 97:
  1.1517 +YY_RULE_SETUP
  1.1518 +{ yylval->lex.f = static_cast<float>(atof_dot(yytext)); return FLOATCONSTANT; }
  1.1519 +	YY_BREAK
  1.1520 +case 98:
  1.1521 +YY_RULE_SETUP
  1.1522 +{ yylval->lex.f = static_cast<float>(atof_dot(yytext)); return FLOATCONSTANT; }
  1.1523 +	YY_BREAK
  1.1524 +case 99:
  1.1525 +YY_RULE_SETUP
  1.1526 +{ yylval->lex.f = static_cast<float>(atof_dot(yytext)); return FLOATCONSTANT; }
  1.1527 +	YY_BREAK
  1.1528 +case 100:
  1.1529 +YY_RULE_SETUP
  1.1530 +{ return ADD_ASSIGN; }
  1.1531 +	YY_BREAK
  1.1532 +case 101:
  1.1533 +YY_RULE_SETUP
  1.1534 +{ return SUB_ASSIGN; }
  1.1535 +	YY_BREAK
  1.1536 +case 102:
  1.1537 +YY_RULE_SETUP
  1.1538 +{ return MUL_ASSIGN; }
  1.1539 +	YY_BREAK
  1.1540 +case 103:
  1.1541 +YY_RULE_SETUP
  1.1542 +{ return DIV_ASSIGN; }
  1.1543 +	YY_BREAK
  1.1544 +case 104:
  1.1545 +YY_RULE_SETUP
  1.1546 +{ return MOD_ASSIGN; }
  1.1547 +	YY_BREAK
  1.1548 +case 105:
  1.1549 +YY_RULE_SETUP
  1.1550 +{ return LEFT_ASSIGN; }
  1.1551 +	YY_BREAK
  1.1552 +case 106:
  1.1553 +YY_RULE_SETUP
  1.1554 +{ return RIGHT_ASSIGN; }
  1.1555 +	YY_BREAK
  1.1556 +case 107:
  1.1557 +YY_RULE_SETUP
  1.1558 +{ return AND_ASSIGN; }
  1.1559 +	YY_BREAK
  1.1560 +case 108:
  1.1561 +YY_RULE_SETUP
  1.1562 +{ return XOR_ASSIGN; }
  1.1563 +	YY_BREAK
  1.1564 +case 109:
  1.1565 +YY_RULE_SETUP
  1.1566 +{ return OR_ASSIGN; }
  1.1567 +	YY_BREAK
  1.1568 +case 110:
  1.1569 +YY_RULE_SETUP
  1.1570 +{ return INC_OP; }
  1.1571 +	YY_BREAK
  1.1572 +case 111:
  1.1573 +YY_RULE_SETUP
  1.1574 +{ return DEC_OP; }
  1.1575 +	YY_BREAK
  1.1576 +case 112:
  1.1577 +YY_RULE_SETUP
  1.1578 +{ return AND_OP; }
  1.1579 +	YY_BREAK
  1.1580 +case 113:
  1.1581 +YY_RULE_SETUP
  1.1582 +{ return OR_OP; }
  1.1583 +	YY_BREAK
  1.1584 +case 114:
  1.1585 +YY_RULE_SETUP
  1.1586 +{ return XOR_OP; }
  1.1587 +	YY_BREAK
  1.1588 +case 115:
  1.1589 +YY_RULE_SETUP
  1.1590 +{ return LE_OP; }
  1.1591 +	YY_BREAK
  1.1592 +case 116:
  1.1593 +YY_RULE_SETUP
  1.1594 +{ return GE_OP; }
  1.1595 +	YY_BREAK
  1.1596 +case 117:
  1.1597 +YY_RULE_SETUP
  1.1598 +{ return EQ_OP; }
  1.1599 +	YY_BREAK
  1.1600 +case 118:
  1.1601 +YY_RULE_SETUP
  1.1602 +{ return NE_OP; }
  1.1603 +	YY_BREAK
  1.1604 +case 119:
  1.1605 +YY_RULE_SETUP
  1.1606 +{ return LEFT_OP; }
  1.1607 +	YY_BREAK
  1.1608 +case 120:
  1.1609 +YY_RULE_SETUP
  1.1610 +{ return RIGHT_OP; }
  1.1611 +	YY_BREAK
  1.1612 +case 121:
  1.1613 +YY_RULE_SETUP
  1.1614 +{ return SEMICOLON; }
  1.1615 +	YY_BREAK
  1.1616 +case 122:
  1.1617 +YY_RULE_SETUP
  1.1618 +{ return LEFT_BRACE; }
  1.1619 +	YY_BREAK
  1.1620 +case 123:
  1.1621 +YY_RULE_SETUP
  1.1622 +{ return RIGHT_BRACE; }
  1.1623 +	YY_BREAK
  1.1624 +case 124:
  1.1625 +YY_RULE_SETUP
  1.1626 +{ return COMMA; }
  1.1627 +	YY_BREAK
  1.1628 +case 125:
  1.1629 +YY_RULE_SETUP
  1.1630 +{ return COLON; }
  1.1631 +	YY_BREAK
  1.1632 +case 126:
  1.1633 +YY_RULE_SETUP
  1.1634 +{ return EQUAL; }
  1.1635 +	YY_BREAK
  1.1636 +case 127:
  1.1637 +YY_RULE_SETUP
  1.1638 +{ return LEFT_PAREN; }
  1.1639 +	YY_BREAK
  1.1640 +case 128:
  1.1641 +YY_RULE_SETUP
  1.1642 +{ return RIGHT_PAREN; }
  1.1643 +	YY_BREAK
  1.1644 +case 129:
  1.1645 +YY_RULE_SETUP
  1.1646 +{ return LEFT_BRACKET; }
  1.1647 +	YY_BREAK
  1.1648 +case 130:
  1.1649 +YY_RULE_SETUP
  1.1650 +{ return RIGHT_BRACKET; }
  1.1651 +	YY_BREAK
  1.1652 +case 131:
  1.1653 +YY_RULE_SETUP
  1.1654 +{ return DOT; }
  1.1655 +	YY_BREAK
  1.1656 +case 132:
  1.1657 +YY_RULE_SETUP
  1.1658 +{ return BANG; }
  1.1659 +	YY_BREAK
  1.1660 +case 133:
  1.1661 +YY_RULE_SETUP
  1.1662 +{ return DASH; }
  1.1663 +	YY_BREAK
  1.1664 +case 134:
  1.1665 +YY_RULE_SETUP
  1.1666 +{ return TILDE; }
  1.1667 +	YY_BREAK
  1.1668 +case 135:
  1.1669 +YY_RULE_SETUP
  1.1670 +{ return PLUS; }
  1.1671 +	YY_BREAK
  1.1672 +case 136:
  1.1673 +YY_RULE_SETUP
  1.1674 +{ return STAR; }
  1.1675 +	YY_BREAK
  1.1676 +case 137:
  1.1677 +YY_RULE_SETUP
  1.1678 +{ return SLASH; }
  1.1679 +	YY_BREAK
  1.1680 +case 138:
  1.1681 +YY_RULE_SETUP
  1.1682 +{ return PERCENT; }
  1.1683 +	YY_BREAK
  1.1684 +case 139:
  1.1685 +YY_RULE_SETUP
  1.1686 +{ return LEFT_ANGLE; }
  1.1687 +	YY_BREAK
  1.1688 +case 140:
  1.1689 +YY_RULE_SETUP
  1.1690 +{ return RIGHT_ANGLE; }
  1.1691 +	YY_BREAK
  1.1692 +case 141:
  1.1693 +YY_RULE_SETUP
  1.1694 +{ return VERTICAL_BAR; }
  1.1695 +	YY_BREAK
  1.1696 +case 142:
  1.1697 +YY_RULE_SETUP
  1.1698 +{ return CARET; }
  1.1699 +	YY_BREAK
  1.1700 +case 143:
  1.1701 +YY_RULE_SETUP
  1.1702 +{ return AMPERSAND; }
  1.1703 +	YY_BREAK
  1.1704 +case 144:
  1.1705 +YY_RULE_SETUP
  1.1706 +{ return QUESTION; }
  1.1707 +	YY_BREAK
  1.1708 +case 145:
  1.1709 +/* rule 145 can match eol */
  1.1710 +YY_RULE_SETUP
  1.1711 +{ }
  1.1712 +	YY_BREAK
  1.1713 +case YY_STATE_EOF(INITIAL):
  1.1714 +{ yyterminate(); }
  1.1715 +	YY_BREAK
  1.1716 +case 146:
  1.1717 +YY_RULE_SETUP
  1.1718 +{ assert(false); return 0; }
  1.1719 +	YY_BREAK
  1.1720 +case 147:
  1.1721 +YY_RULE_SETUP
  1.1722 +ECHO;
  1.1723 +	YY_BREAK
  1.1724 +
  1.1725 +	case YY_END_OF_BUFFER:
  1.1726 +		{
  1.1727 +		/* Amount of text matched not including the EOB char. */
  1.1728 +		int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
  1.1729 +
  1.1730 +		/* Undo the effects of YY_DO_BEFORE_ACTION. */
  1.1731 +		*yy_cp = yyg->yy_hold_char;
  1.1732 +		YY_RESTORE_YY_MORE_OFFSET
  1.1733 +
  1.1734 +		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
  1.1735 +			{
  1.1736 +			/* We're scanning a new file or input source.  It's
  1.1737 +			 * possible that this happened because the user
  1.1738 +			 * just pointed yyin at a new source and called
  1.1739 +			 * yylex().  If so, then we have to assure
  1.1740 +			 * consistency between YY_CURRENT_BUFFER and our
  1.1741 +			 * globals.  Here is the right place to do so, because
  1.1742 +			 * this is the first action (other than possibly a
  1.1743 +			 * back-up) that will match for the new input source.
  1.1744 +			 */
  1.1745 +			yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
  1.1746 +			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
  1.1747 +			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
  1.1748 +			}
  1.1749 +
  1.1750 +		/* Note that here we test for yy_c_buf_p "<=" to the position
  1.1751 +		 * of the first EOB in the buffer, since yy_c_buf_p will
  1.1752 +		 * already have been incremented past the NUL character
  1.1753 +		 * (since all states make transitions on EOB to the
  1.1754 +		 * end-of-buffer state).  Contrast this with the test
  1.1755 +		 * in input().
  1.1756 +		 */
  1.1757 +		if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
  1.1758 +			{ /* This was really a NUL. */
  1.1759 +			yy_state_type yy_next_state;
  1.1760 +
  1.1761 +			yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
  1.1762 +
  1.1763 +			yy_current_state = yy_get_previous_state( yyscanner );
  1.1764 +
  1.1765 +			/* Okay, we're now positioned to make the NUL
  1.1766 +			 * transition.  We couldn't have
  1.1767 +			 * yy_get_previous_state() go ahead and do it
  1.1768 +			 * for us because it doesn't know how to deal
  1.1769 +			 * with the possibility of jamming (and we don't
  1.1770 +			 * want to build jamming into it because then it
  1.1771 +			 * will run more slowly).
  1.1772 +			 */
  1.1773 +
  1.1774 +			yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
  1.1775 +
  1.1776 +			yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
  1.1777 +
  1.1778 +			if ( yy_next_state )
  1.1779 +				{
  1.1780 +				/* Consume the NUL. */
  1.1781 +				yy_cp = ++yyg->yy_c_buf_p;
  1.1782 +				yy_current_state = yy_next_state;
  1.1783 +				goto yy_match;
  1.1784 +				}
  1.1785 +
  1.1786 +			else
  1.1787 +				{
  1.1788 +				yy_cp = yyg->yy_last_accepting_cpos;
  1.1789 +				yy_current_state = yyg->yy_last_accepting_state;
  1.1790 +				goto yy_find_action;
  1.1791 +				}
  1.1792 +			}
  1.1793 +
  1.1794 +		else switch ( yy_get_next_buffer( yyscanner ) )
  1.1795 +			{
  1.1796 +			case EOB_ACT_END_OF_FILE:
  1.1797 +				{
  1.1798 +				yyg->yy_did_buffer_switch_on_eof = 0;
  1.1799 +
  1.1800 +				if ( yywrap(yyscanner ) )
  1.1801 +					{
  1.1802 +					/* Note: because we've taken care in
  1.1803 +					 * yy_get_next_buffer() to have set up
  1.1804 +					 * yytext, we can now set up
  1.1805 +					 * yy_c_buf_p so that if some total
  1.1806 +					 * hoser (like flex itself) wants to
  1.1807 +					 * call the scanner after we return the
  1.1808 +					 * YY_NULL, it'll still work - another
  1.1809 +					 * YY_NULL will get returned.
  1.1810 +					 */
  1.1811 +					yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
  1.1812 +
  1.1813 +					yy_act = YY_STATE_EOF(YY_START);
  1.1814 +					goto do_action;
  1.1815 +					}
  1.1816 +
  1.1817 +				else
  1.1818 +					{
  1.1819 +					if ( ! yyg->yy_did_buffer_switch_on_eof )
  1.1820 +						YY_NEW_FILE;
  1.1821 +					}
  1.1822 +				break;
  1.1823 +				}
  1.1824 +
  1.1825 +			case EOB_ACT_CONTINUE_SCAN:
  1.1826 +				yyg->yy_c_buf_p =
  1.1827 +					yyg->yytext_ptr + yy_amount_of_matched_text;
  1.1828 +
  1.1829 +				yy_current_state = yy_get_previous_state( yyscanner );
  1.1830 +
  1.1831 +				yy_cp = yyg->yy_c_buf_p;
  1.1832 +				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
  1.1833 +				goto yy_match;
  1.1834 +
  1.1835 +			case EOB_ACT_LAST_MATCH:
  1.1836 +				yyg->yy_c_buf_p =
  1.1837 +				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
  1.1838 +
  1.1839 +				yy_current_state = yy_get_previous_state( yyscanner );
  1.1840 +
  1.1841 +				yy_cp = yyg->yy_c_buf_p;
  1.1842 +				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
  1.1843 +				goto yy_find_action;
  1.1844 +			}
  1.1845 +		break;
  1.1846 +		}
  1.1847 +
  1.1848 +	default:
  1.1849 +		YY_FATAL_ERROR(
  1.1850 +			"fatal flex scanner internal error--no action found" );
  1.1851 +	} /* end of action switch */
  1.1852 +		} /* end of scanning one token */
  1.1853 +} /* end of yylex */
  1.1854 +
  1.1855 +/* yy_get_next_buffer - try to read in a new buffer
  1.1856 + *
  1.1857 + * Returns a code representing an action:
  1.1858 + *	EOB_ACT_LAST_MATCH -
  1.1859 + *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
  1.1860 + *	EOB_ACT_END_OF_FILE - end of file
  1.1861 + */
  1.1862 +static int yy_get_next_buffer (yyscan_t yyscanner)
  1.1863 +{
  1.1864 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.1865 +	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
  1.1866 +	register char *source = yyg->yytext_ptr;
  1.1867 +	register int number_to_move, i;
  1.1868 +	int ret_val;
  1.1869 +
  1.1870 +	if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
  1.1871 +		YY_FATAL_ERROR(
  1.1872 +		"fatal flex scanner internal error--end of buffer missed" );
  1.1873 +
  1.1874 +	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
  1.1875 +		{ /* Don't try to fill the buffer, so this is an EOF. */
  1.1876 +		if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
  1.1877 +			{
  1.1878 +			/* We matched a single character, the EOB, so
  1.1879 +			 * treat this as a final EOF.
  1.1880 +			 */
  1.1881 +			return EOB_ACT_END_OF_FILE;
  1.1882 +			}
  1.1883 +
  1.1884 +		else
  1.1885 +			{
  1.1886 +			/* We matched some text prior to the EOB, first
  1.1887 +			 * process it.
  1.1888 +			 */
  1.1889 +			return EOB_ACT_LAST_MATCH;
  1.1890 +			}
  1.1891 +		}
  1.1892 +
  1.1893 +	/* Try to read more data. */
  1.1894 +
  1.1895 +	/* First move last chars to start of buffer. */
  1.1896 +	number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
  1.1897 +
  1.1898 +	for ( i = 0; i < number_to_move; ++i )
  1.1899 +		*(dest++) = *(source++);
  1.1900 +
  1.1901 +	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
  1.1902 +		/* don't do the read, it's not guaranteed to return an EOF,
  1.1903 +		 * just force an EOF
  1.1904 +		 */
  1.1905 +		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
  1.1906 +
  1.1907 +	else
  1.1908 +		{
  1.1909 +			yy_size_t num_to_read =
  1.1910 +			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
  1.1911 +
  1.1912 +		while ( num_to_read <= 0 )
  1.1913 +			{ /* Not enough room in the buffer - grow it. */
  1.1914 +
  1.1915 +			/* just a shorter name for the current buffer */
  1.1916 +			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
  1.1917 +
  1.1918 +			int yy_c_buf_p_offset =
  1.1919 +				(int) (yyg->yy_c_buf_p - b->yy_ch_buf);
  1.1920 +
  1.1921 +			if ( b->yy_is_our_buffer )
  1.1922 +				{
  1.1923 +				yy_size_t new_size = b->yy_buf_size * 2;
  1.1924 +
  1.1925 +				if ( new_size <= 0 )
  1.1926 +					b->yy_buf_size += b->yy_buf_size / 8;
  1.1927 +				else
  1.1928 +					b->yy_buf_size *= 2;
  1.1929 +
  1.1930 +				b->yy_ch_buf = (char *)
  1.1931 +					/* Include room in for 2 EOB chars. */
  1.1932 +					yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
  1.1933 +				}
  1.1934 +			else
  1.1935 +				/* Can't grow it, we don't own it. */
  1.1936 +				b->yy_ch_buf = 0;
  1.1937 +
  1.1938 +			if ( ! b->yy_ch_buf )
  1.1939 +				YY_FATAL_ERROR(
  1.1940 +				"fatal error - scanner input buffer overflow" );
  1.1941 +
  1.1942 +			yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
  1.1943 +
  1.1944 +			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
  1.1945 +						number_to_move - 1;
  1.1946 +
  1.1947 +			}
  1.1948 +
  1.1949 +		if ( num_to_read > YY_READ_BUF_SIZE )
  1.1950 +			num_to_read = YY_READ_BUF_SIZE;
  1.1951 +
  1.1952 +		/* Read in more data. */
  1.1953 +		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
  1.1954 +			yyg->yy_n_chars, num_to_read );
  1.1955 +
  1.1956 +		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
  1.1957 +		}
  1.1958 +
  1.1959 +	if ( yyg->yy_n_chars == 0 )
  1.1960 +		{
  1.1961 +		if ( number_to_move == YY_MORE_ADJ )
  1.1962 +			{
  1.1963 +			ret_val = EOB_ACT_END_OF_FILE;
  1.1964 +			yyrestart(yyin  ,yyscanner);
  1.1965 +			}
  1.1966 +
  1.1967 +		else
  1.1968 +			{
  1.1969 +			ret_val = EOB_ACT_LAST_MATCH;
  1.1970 +			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
  1.1971 +				YY_BUFFER_EOF_PENDING;
  1.1972 +			}
  1.1973 +		}
  1.1974 +
  1.1975 +	else
  1.1976 +		ret_val = EOB_ACT_CONTINUE_SCAN;
  1.1977 +
  1.1978 +	if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
  1.1979 +		/* Extend the array by 50%, plus the number we really need. */
  1.1980 +		yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
  1.1981 +		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
  1.1982 +		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
  1.1983 +			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
  1.1984 +	}
  1.1985 +
  1.1986 +	yyg->yy_n_chars += number_to_move;
  1.1987 +	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
  1.1988 +	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
  1.1989 +
  1.1990 +	yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
  1.1991 +
  1.1992 +	return ret_val;
  1.1993 +}
  1.1994 +
  1.1995 +/* yy_get_previous_state - get the state just before the EOB char was reached */
  1.1996 +
  1.1997 +    static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
  1.1998 +{
  1.1999 +	register yy_state_type yy_current_state;
  1.2000 +	register char *yy_cp;
  1.2001 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2002 +
  1.2003 +	yy_current_state = yyg->yy_start;
  1.2004 +
  1.2005 +	for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
  1.2006 +		{
  1.2007 +		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
  1.2008 +		if ( yy_accept[yy_current_state] )
  1.2009 +			{
  1.2010 +			yyg->yy_last_accepting_state = yy_current_state;
  1.2011 +			yyg->yy_last_accepting_cpos = yy_cp;
  1.2012 +			}
  1.2013 +		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  1.2014 +			{
  1.2015 +			yy_current_state = (int) yy_def[yy_current_state];
  1.2016 +			if ( yy_current_state >= 443 )
  1.2017 +				yy_c = yy_meta[(unsigned int) yy_c];
  1.2018 +			}
  1.2019 +		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
  1.2020 +		}
  1.2021 +
  1.2022 +	return yy_current_state;
  1.2023 +}
  1.2024 +
  1.2025 +/* yy_try_NUL_trans - try to make a transition on the NUL character
  1.2026 + *
  1.2027 + * synopsis
  1.2028 + *	next_state = yy_try_NUL_trans( current_state );
  1.2029 + */
  1.2030 +    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
  1.2031 +{
  1.2032 +	register int yy_is_jam;
  1.2033 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
  1.2034 +	register char *yy_cp = yyg->yy_c_buf_p;
  1.2035 +
  1.2036 +	register YY_CHAR yy_c = 1;
  1.2037 +	if ( yy_accept[yy_current_state] )
  1.2038 +		{
  1.2039 +		yyg->yy_last_accepting_state = yy_current_state;
  1.2040 +		yyg->yy_last_accepting_cpos = yy_cp;
  1.2041 +		}
  1.2042 +	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  1.2043 +		{
  1.2044 +		yy_current_state = (int) yy_def[yy_current_state];
  1.2045 +		if ( yy_current_state >= 443 )
  1.2046 +			yy_c = yy_meta[(unsigned int) yy_c];
  1.2047 +		}
  1.2048 +	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
  1.2049 +	yy_is_jam = (yy_current_state == 442);
  1.2050 +
  1.2051 +	return yy_is_jam ? 0 : yy_current_state;
  1.2052 +}
  1.2053 +
  1.2054 +#ifndef YY_NO_INPUT
  1.2055 +#ifdef __cplusplus
  1.2056 +    static int yyinput (yyscan_t yyscanner)
  1.2057 +#else
  1.2058 +    static int input  (yyscan_t yyscanner)
  1.2059 +#endif
  1.2060 +
  1.2061 +{
  1.2062 +	int c;
  1.2063 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2064 +
  1.2065 +	*yyg->yy_c_buf_p = yyg->yy_hold_char;
  1.2066 +
  1.2067 +	if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
  1.2068 +		{
  1.2069 +		/* yy_c_buf_p now points to the character we want to return.
  1.2070 +		 * If this occurs *before* the EOB characters, then it's a
  1.2071 +		 * valid NUL; if not, then we've hit the end of the buffer.
  1.2072 +		 */
  1.2073 +		if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
  1.2074 +			/* This was really a NUL. */
  1.2075 +			*yyg->yy_c_buf_p = '\0';
  1.2076 +
  1.2077 +		else
  1.2078 +			{ /* need more input */
  1.2079 +			yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
  1.2080 +			++yyg->yy_c_buf_p;
  1.2081 +
  1.2082 +			switch ( yy_get_next_buffer( yyscanner ) )
  1.2083 +				{
  1.2084 +				case EOB_ACT_LAST_MATCH:
  1.2085 +					/* This happens because yy_g_n_b()
  1.2086 +					 * sees that we've accumulated a
  1.2087 +					 * token and flags that we need to
  1.2088 +					 * try matching the token before
  1.2089 +					 * proceeding.  But for input(),
  1.2090 +					 * there's no matching to consider.
  1.2091 +					 * So convert the EOB_ACT_LAST_MATCH
  1.2092 +					 * to EOB_ACT_END_OF_FILE.
  1.2093 +					 */
  1.2094 +
  1.2095 +					/* Reset buffer status. */
  1.2096 +					yyrestart(yyin ,yyscanner);
  1.2097 +
  1.2098 +					/*FALLTHROUGH*/
  1.2099 +
  1.2100 +				case EOB_ACT_END_OF_FILE:
  1.2101 +					{
  1.2102 +					if ( yywrap(yyscanner ) )
  1.2103 +						return EOF;
  1.2104 +
  1.2105 +					if ( ! yyg->yy_did_buffer_switch_on_eof )
  1.2106 +						YY_NEW_FILE;
  1.2107 +#ifdef __cplusplus
  1.2108 +					return yyinput(yyscanner);
  1.2109 +#else
  1.2110 +					return input(yyscanner);
  1.2111 +#endif
  1.2112 +					}
  1.2113 +
  1.2114 +				case EOB_ACT_CONTINUE_SCAN:
  1.2115 +					yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
  1.2116 +					break;
  1.2117 +				}
  1.2118 +			}
  1.2119 +		}
  1.2120 +
  1.2121 +	c = *(unsigned char *) yyg->yy_c_buf_p;	/* cast for 8-bit char's */
  1.2122 +	*yyg->yy_c_buf_p = '\0';	/* preserve yytext */
  1.2123 +	yyg->yy_hold_char = *++yyg->yy_c_buf_p;
  1.2124 +
  1.2125 +	if ( c == '\n' )
  1.2126 +		   
  1.2127 +    do{ yylineno++;
  1.2128 +        yycolumn=0;
  1.2129 +    }while(0)
  1.2130 +;
  1.2131 +
  1.2132 +	return c;
  1.2133 +}
  1.2134 +#endif	/* ifndef YY_NO_INPUT */
  1.2135 +
  1.2136 +/** Immediately switch to a different input stream.
  1.2137 + * @param input_file A readable stream.
  1.2138 + * @param yyscanner The scanner object.
  1.2139 + * @note This function does not reset the start condition to @c INITIAL .
  1.2140 + */
  1.2141 +    void yyrestart  (FILE * input_file , yyscan_t yyscanner)
  1.2142 +{
  1.2143 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2144 +
  1.2145 +	if ( ! YY_CURRENT_BUFFER ){
  1.2146 +        yyensure_buffer_stack (yyscanner);
  1.2147 +		YY_CURRENT_BUFFER_LVALUE =
  1.2148 +            yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
  1.2149 +	}
  1.2150 +
  1.2151 +	yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
  1.2152 +	yy_load_buffer_state(yyscanner );
  1.2153 +}
  1.2154 +
  1.2155 +/** Switch to a different input buffer.
  1.2156 + * @param new_buffer The new input buffer.
  1.2157 + * @param yyscanner The scanner object.
  1.2158 + */
  1.2159 +    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
  1.2160 +{
  1.2161 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2162 +
  1.2163 +	/* TODO. We should be able to replace this entire function body
  1.2164 +	 * with
  1.2165 +	 *		yypop_buffer_state();
  1.2166 +	 *		yypush_buffer_state(new_buffer);
  1.2167 +     */
  1.2168 +	yyensure_buffer_stack (yyscanner);
  1.2169 +	if ( YY_CURRENT_BUFFER == new_buffer )
  1.2170 +		return;
  1.2171 +
  1.2172 +	if ( YY_CURRENT_BUFFER )
  1.2173 +		{
  1.2174 +		/* Flush out information for old buffer. */
  1.2175 +		*yyg->yy_c_buf_p = yyg->yy_hold_char;
  1.2176 +		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
  1.2177 +		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
  1.2178 +		}
  1.2179 +
  1.2180 +	YY_CURRENT_BUFFER_LVALUE = new_buffer;
  1.2181 +	yy_load_buffer_state(yyscanner );
  1.2182 +
  1.2183 +	/* We don't actually know whether we did this switch during
  1.2184 +	 * EOF (yywrap()) processing, but the only time this flag
  1.2185 +	 * is looked at is after yywrap() is called, so it's safe
  1.2186 +	 * to go ahead and always set it.
  1.2187 +	 */
  1.2188 +	yyg->yy_did_buffer_switch_on_eof = 1;
  1.2189 +}
  1.2190 +
  1.2191 +static void yy_load_buffer_state  (yyscan_t yyscanner)
  1.2192 +{
  1.2193 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2194 +	yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
  1.2195 +	yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
  1.2196 +	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
  1.2197 +	yyg->yy_hold_char = *yyg->yy_c_buf_p;
  1.2198 +}
  1.2199 +
  1.2200 +/** Allocate and initialize an input buffer state.
  1.2201 + * @param file A readable stream.
  1.2202 + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
  1.2203 + * @param yyscanner The scanner object.
  1.2204 + * @return the allocated buffer state.
  1.2205 + */
  1.2206 +    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
  1.2207 +{
  1.2208 +	YY_BUFFER_STATE b;
  1.2209 +    
  1.2210 +	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
  1.2211 +	if ( ! b )
  1.2212 +		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
  1.2213 +
  1.2214 +	b->yy_buf_size = size;
  1.2215 +
  1.2216 +	/* yy_ch_buf has to be 2 characters longer than the size given because
  1.2217 +	 * we need to put in 2 end-of-buffer characters.
  1.2218 +	 */
  1.2219 +	b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ,yyscanner );
  1.2220 +	if ( ! b->yy_ch_buf )
  1.2221 +		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
  1.2222 +
  1.2223 +	b->yy_is_our_buffer = 1;
  1.2224 +
  1.2225 +	yy_init_buffer(b,file ,yyscanner);
  1.2226 +
  1.2227 +	return b;
  1.2228 +}
  1.2229 +
  1.2230 +/** Destroy the buffer.
  1.2231 + * @param b a buffer created with yy_create_buffer()
  1.2232 + * @param yyscanner The scanner object.
  1.2233 + */
  1.2234 +    void yy_delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
  1.2235 +{
  1.2236 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2237 +
  1.2238 +	if ( ! b )
  1.2239 +		return;
  1.2240 +
  1.2241 +	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
  1.2242 +		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
  1.2243 +
  1.2244 +	if ( b->yy_is_our_buffer )
  1.2245 +		yyfree((void *) b->yy_ch_buf ,yyscanner );
  1.2246 +
  1.2247 +	yyfree((void *) b ,yyscanner );
  1.2248 +}
  1.2249 +
  1.2250 +/* Initializes or reinitializes a buffer.
  1.2251 + * This function is sometimes called more than once on the same buffer,
  1.2252 + * such as during a yyrestart() or at EOF.
  1.2253 + */
  1.2254 +    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
  1.2255 +
  1.2256 +{
  1.2257 +	int oerrno = errno;
  1.2258 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2259 +
  1.2260 +	yy_flush_buffer(b ,yyscanner);
  1.2261 +
  1.2262 +	b->yy_input_file = file;
  1.2263 +	b->yy_fill_buffer = 1;
  1.2264 +
  1.2265 +    /* If b is the current buffer, then yy_init_buffer was _probably_
  1.2266 +     * called from yyrestart() or through yy_get_next_buffer.
  1.2267 +     * In that case, we don't want to reset the lineno or column.
  1.2268 +     */
  1.2269 +    if (b != YY_CURRENT_BUFFER){
  1.2270 +        b->yy_bs_lineno = 1;
  1.2271 +        b->yy_bs_column = 0;
  1.2272 +    }
  1.2273 +
  1.2274 +        b->yy_is_interactive = 0;
  1.2275 +    
  1.2276 +	errno = oerrno;
  1.2277 +}
  1.2278 +
  1.2279 +/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
  1.2280 + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
  1.2281 + * @param yyscanner The scanner object.
  1.2282 + */
  1.2283 +    void yy_flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
  1.2284 +{
  1.2285 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2286 +	if ( ! b )
  1.2287 +		return;
  1.2288 +
  1.2289 +	b->yy_n_chars = 0;
  1.2290 +
  1.2291 +	/* We always need two end-of-buffer characters.  The first causes
  1.2292 +	 * a transition to the end-of-buffer state.  The second causes
  1.2293 +	 * a jam in that state.
  1.2294 +	 */
  1.2295 +	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
  1.2296 +	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
  1.2297 +
  1.2298 +	b->yy_buf_pos = &b->yy_ch_buf[0];
  1.2299 +
  1.2300 +	b->yy_at_bol = 1;
  1.2301 +	b->yy_buffer_status = YY_BUFFER_NEW;
  1.2302 +
  1.2303 +	if ( b == YY_CURRENT_BUFFER )
  1.2304 +		yy_load_buffer_state(yyscanner );
  1.2305 +}
  1.2306 +
  1.2307 +/** Pushes the new state onto the stack. The new state becomes
  1.2308 + *  the current state. This function will allocate the stack
  1.2309 + *  if necessary.
  1.2310 + *  @param new_buffer The new state.
  1.2311 + *  @param yyscanner The scanner object.
  1.2312 + */
  1.2313 +void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
  1.2314 +{
  1.2315 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2316 +	if (new_buffer == NULL)
  1.2317 +		return;
  1.2318 +
  1.2319 +	yyensure_buffer_stack(yyscanner);
  1.2320 +
  1.2321 +	/* This block is copied from yy_switch_to_buffer. */
  1.2322 +	if ( YY_CURRENT_BUFFER )
  1.2323 +		{
  1.2324 +		/* Flush out information for old buffer. */
  1.2325 +		*yyg->yy_c_buf_p = yyg->yy_hold_char;
  1.2326 +		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
  1.2327 +		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
  1.2328 +		}
  1.2329 +
  1.2330 +	/* Only push if top exists. Otherwise, replace top. */
  1.2331 +	if (YY_CURRENT_BUFFER)
  1.2332 +		yyg->yy_buffer_stack_top++;
  1.2333 +	YY_CURRENT_BUFFER_LVALUE = new_buffer;
  1.2334 +
  1.2335 +	/* copied from yy_switch_to_buffer. */
  1.2336 +	yy_load_buffer_state(yyscanner );
  1.2337 +	yyg->yy_did_buffer_switch_on_eof = 1;
  1.2338 +}
  1.2339 +
  1.2340 +/** Removes and deletes the top of the stack, if present.
  1.2341 + *  The next element becomes the new top.
  1.2342 + *  @param yyscanner The scanner object.
  1.2343 + */
  1.2344 +void yypop_buffer_state (yyscan_t yyscanner)
  1.2345 +{
  1.2346 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2347 +	if (!YY_CURRENT_BUFFER)
  1.2348 +		return;
  1.2349 +
  1.2350 +	yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
  1.2351 +	YY_CURRENT_BUFFER_LVALUE = NULL;
  1.2352 +	if (yyg->yy_buffer_stack_top > 0)
  1.2353 +		--yyg->yy_buffer_stack_top;
  1.2354 +
  1.2355 +	if (YY_CURRENT_BUFFER) {
  1.2356 +		yy_load_buffer_state(yyscanner );
  1.2357 +		yyg->yy_did_buffer_switch_on_eof = 1;
  1.2358 +	}
  1.2359 +}
  1.2360 +
  1.2361 +/* Allocates the stack if it does not exist.
  1.2362 + *  Guarantees space for at least one push.
  1.2363 + */
  1.2364 +static void yyensure_buffer_stack (yyscan_t yyscanner)
  1.2365 +{
  1.2366 +	yy_size_t num_to_alloc;
  1.2367 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2368 +
  1.2369 +	if (!yyg->yy_buffer_stack) {
  1.2370 +
  1.2371 +		/* First allocation is just for 2 elements, since we don't know if this
  1.2372 +		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
  1.2373 +		 * immediate realloc on the next call.
  1.2374 +         */
  1.2375 +		num_to_alloc = 1;
  1.2376 +		yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc
  1.2377 +								(num_to_alloc * sizeof(struct yy_buffer_state*)
  1.2378 +								, yyscanner);
  1.2379 +		if ( ! yyg->yy_buffer_stack )
  1.2380 +			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
  1.2381 +								  
  1.2382 +		memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
  1.2383 +				
  1.2384 +		yyg->yy_buffer_stack_max = num_to_alloc;
  1.2385 +		yyg->yy_buffer_stack_top = 0;
  1.2386 +		return;
  1.2387 +	}
  1.2388 +
  1.2389 +	if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
  1.2390 +
  1.2391 +		/* Increase the buffer to prepare for a possible push. */
  1.2392 +		int grow_size = 8 /* arbitrary grow size */;
  1.2393 +
  1.2394 +		num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
  1.2395 +		yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc
  1.2396 +								(yyg->yy_buffer_stack,
  1.2397 +								num_to_alloc * sizeof(struct yy_buffer_state*)
  1.2398 +								, yyscanner);
  1.2399 +		if ( ! yyg->yy_buffer_stack )
  1.2400 +			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
  1.2401 +
  1.2402 +		/* zero only the new slots.*/
  1.2403 +		memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
  1.2404 +		yyg->yy_buffer_stack_max = num_to_alloc;
  1.2405 +	}
  1.2406 +}
  1.2407 +
  1.2408 +/** Setup the input buffer state to scan directly from a user-specified character buffer.
  1.2409 + * @param base the character buffer
  1.2410 + * @param size the size in bytes of the character buffer
  1.2411 + * @param yyscanner The scanner object.
  1.2412 + * @return the newly allocated buffer state object. 
  1.2413 + */
  1.2414 +YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
  1.2415 +{
  1.2416 +	YY_BUFFER_STATE b;
  1.2417 +    
  1.2418 +	if ( size < 2 ||
  1.2419 +	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
  1.2420 +	     base[size-1] != YY_END_OF_BUFFER_CHAR )
  1.2421 +		/* They forgot to leave room for the EOB's. */
  1.2422 +		return 0;
  1.2423 +
  1.2424 +	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
  1.2425 +	if ( ! b )
  1.2426 +		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
  1.2427 +
  1.2428 +	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
  1.2429 +	b->yy_buf_pos = b->yy_ch_buf = base;
  1.2430 +	b->yy_is_our_buffer = 0;
  1.2431 +	b->yy_input_file = 0;
  1.2432 +	b->yy_n_chars = b->yy_buf_size;
  1.2433 +	b->yy_is_interactive = 0;
  1.2434 +	b->yy_at_bol = 1;
  1.2435 +	b->yy_fill_buffer = 0;
  1.2436 +	b->yy_buffer_status = YY_BUFFER_NEW;
  1.2437 +
  1.2438 +	yy_switch_to_buffer(b ,yyscanner );
  1.2439 +
  1.2440 +	return b;
  1.2441 +}
  1.2442 +
  1.2443 +/** Setup the input buffer state to scan a string. The next call to yylex() will
  1.2444 + * scan from a @e copy of @a str.
  1.2445 + * @param yystr a NUL-terminated string to scan
  1.2446 + * @param yyscanner The scanner object.
  1.2447 + * @return the newly allocated buffer state object.
  1.2448 + * @note If you want to scan bytes that may contain NUL values, then use
  1.2449 + *       yy_scan_bytes() instead.
  1.2450 + */
  1.2451 +YY_BUFFER_STATE yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
  1.2452 +{
  1.2453 +    
  1.2454 +	return yy_scan_bytes(yystr,strlen(yystr) ,yyscanner);
  1.2455 +}
  1.2456 +
  1.2457 +/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
  1.2458 + * scan from a @e copy of @a bytes.
  1.2459 + * @param bytes the byte buffer to scan
  1.2460 + * @param len the number of bytes in the buffer pointed to by @a bytes.
  1.2461 + * @param yyscanner The scanner object.
  1.2462 + * @return the newly allocated buffer state object.
  1.2463 + */
  1.2464 +YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len , yyscan_t yyscanner)
  1.2465 +{
  1.2466 +	YY_BUFFER_STATE b;
  1.2467 +	char *buf;
  1.2468 +	yy_size_t n, i;
  1.2469 +    
  1.2470 +	/* Get memory for full buffer, including space for trailing EOB's. */
  1.2471 +	n = _yybytes_len + 2;
  1.2472 +	buf = (char *) yyalloc(n ,yyscanner );
  1.2473 +	if ( ! buf )
  1.2474 +		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
  1.2475 +
  1.2476 +	for ( i = 0; i < _yybytes_len; ++i )
  1.2477 +		buf[i] = yybytes[i];
  1.2478 +
  1.2479 +	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
  1.2480 +
  1.2481 +	b = yy_scan_buffer(buf,n ,yyscanner);
  1.2482 +	if ( ! b )
  1.2483 +		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
  1.2484 +
  1.2485 +	/* It's okay to grow etc. this buffer, and we should throw it
  1.2486 +	 * away when we're done.
  1.2487 +	 */
  1.2488 +	b->yy_is_our_buffer = 1;
  1.2489 +
  1.2490 +	return b;
  1.2491 +}
  1.2492 +
  1.2493 +#ifndef YY_EXIT_FAILURE
  1.2494 +#define YY_EXIT_FAILURE 2
  1.2495 +#endif
  1.2496 +
  1.2497 +static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
  1.2498 +{
  1.2499 +    	(void) fprintf( stderr, "%s\n", msg );
  1.2500 +	exit( YY_EXIT_FAILURE );
  1.2501 +}
  1.2502 +
  1.2503 +/* Redefine yyless() so it works in section 3 code. */
  1.2504 +
  1.2505 +#undef yyless
  1.2506 +#define yyless(n) \
  1.2507 +	do \
  1.2508 +		{ \
  1.2509 +		/* Undo effects of setting up yytext. */ \
  1.2510 +        int yyless_macro_arg = (n); \
  1.2511 +        YY_LESS_LINENO(yyless_macro_arg);\
  1.2512 +		yytext[yyleng] = yyg->yy_hold_char; \
  1.2513 +		yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
  1.2514 +		yyg->yy_hold_char = *yyg->yy_c_buf_p; \
  1.2515 +		*yyg->yy_c_buf_p = '\0'; \
  1.2516 +		yyleng = yyless_macro_arg; \
  1.2517 +		} \
  1.2518 +	while ( 0 )
  1.2519 +
  1.2520 +/* Accessor  methods (get/set functions) to struct members. */
  1.2521 +
  1.2522 +/** Get the user-defined data for this scanner.
  1.2523 + * @param yyscanner The scanner object.
  1.2524 + */
  1.2525 +YY_EXTRA_TYPE yyget_extra  (yyscan_t yyscanner)
  1.2526 +{
  1.2527 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2528 +    return yyextra;
  1.2529 +}
  1.2530 +
  1.2531 +/** Get the current line number.
  1.2532 + * @param yyscanner The scanner object.
  1.2533 + */
  1.2534 +int yyget_lineno  (yyscan_t yyscanner)
  1.2535 +{
  1.2536 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2537 +    
  1.2538 +        if (! YY_CURRENT_BUFFER)
  1.2539 +            return 0;
  1.2540 +    
  1.2541 +    return yylineno;
  1.2542 +}
  1.2543 +
  1.2544 +/** Get the current column number.
  1.2545 + * @param yyscanner The scanner object.
  1.2546 + */
  1.2547 +int yyget_column  (yyscan_t yyscanner)
  1.2548 +{
  1.2549 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2550 +    
  1.2551 +        if (! YY_CURRENT_BUFFER)
  1.2552 +            return 0;
  1.2553 +    
  1.2554 +    return yycolumn;
  1.2555 +}
  1.2556 +
  1.2557 +/** Get the input stream.
  1.2558 + * @param yyscanner The scanner object.
  1.2559 + */
  1.2560 +FILE *yyget_in  (yyscan_t yyscanner)
  1.2561 +{
  1.2562 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2563 +    return yyin;
  1.2564 +}
  1.2565 +
  1.2566 +/** Get the output stream.
  1.2567 + * @param yyscanner The scanner object.
  1.2568 + */
  1.2569 +FILE *yyget_out  (yyscan_t yyscanner)
  1.2570 +{
  1.2571 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2572 +    return yyout;
  1.2573 +}
  1.2574 +
  1.2575 +/** Get the length of the current token.
  1.2576 + * @param yyscanner The scanner object.
  1.2577 + */
  1.2578 +yy_size_t yyget_leng  (yyscan_t yyscanner)
  1.2579 +{
  1.2580 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2581 +    return yyleng;
  1.2582 +}
  1.2583 +
  1.2584 +/** Get the current token.
  1.2585 + * @param yyscanner The scanner object.
  1.2586 + */
  1.2587 +
  1.2588 +char *yyget_text  (yyscan_t yyscanner)
  1.2589 +{
  1.2590 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2591 +    return yytext;
  1.2592 +}
  1.2593 +
  1.2594 +/** Set the user-defined data. This data is never touched by the scanner.
  1.2595 + * @param user_defined The data to be associated with this scanner.
  1.2596 + * @param yyscanner The scanner object.
  1.2597 + */
  1.2598 +void yyset_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
  1.2599 +{
  1.2600 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2601 +    yyextra = user_defined ;
  1.2602 +}
  1.2603 +
  1.2604 +/** Set the current line number.
  1.2605 + * @param line_number
  1.2606 + * @param yyscanner The scanner object.
  1.2607 + */
  1.2608 +void yyset_lineno (int  line_number , yyscan_t yyscanner)
  1.2609 +{
  1.2610 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2611 +
  1.2612 +        /* lineno is only valid if an input buffer exists. */
  1.2613 +        if (! YY_CURRENT_BUFFER )
  1.2614 +           yy_fatal_error( "yyset_lineno called with no buffer" , yyscanner); 
  1.2615 +    
  1.2616 +    yylineno = line_number;
  1.2617 +}
  1.2618 +
  1.2619 +/** Set the current column.
  1.2620 + * @param line_number
  1.2621 + * @param yyscanner The scanner object.
  1.2622 + */
  1.2623 +void yyset_column (int  column_no , yyscan_t yyscanner)
  1.2624 +{
  1.2625 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2626 +
  1.2627 +        /* column is only valid if an input buffer exists. */
  1.2628 +        if (! YY_CURRENT_BUFFER )
  1.2629 +           yy_fatal_error( "yyset_column called with no buffer" , yyscanner); 
  1.2630 +    
  1.2631 +    yycolumn = column_no;
  1.2632 +}
  1.2633 +
  1.2634 +/** Set the input stream. This does not discard the current
  1.2635 + * input buffer.
  1.2636 + * @param in_str A readable stream.
  1.2637 + * @param yyscanner The scanner object.
  1.2638 + * @see yy_switch_to_buffer
  1.2639 + */
  1.2640 +void yyset_in (FILE *  in_str , yyscan_t yyscanner)
  1.2641 +{
  1.2642 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2643 +    yyin = in_str ;
  1.2644 +}
  1.2645 +
  1.2646 +void yyset_out (FILE *  out_str , yyscan_t yyscanner)
  1.2647 +{
  1.2648 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2649 +    yyout = out_str ;
  1.2650 +}
  1.2651 +
  1.2652 +int yyget_debug  (yyscan_t yyscanner)
  1.2653 +{
  1.2654 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2655 +    return yy_flex_debug;
  1.2656 +}
  1.2657 +
  1.2658 +void yyset_debug (int  bdebug , yyscan_t yyscanner)
  1.2659 +{
  1.2660 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2661 +    yy_flex_debug = bdebug ;
  1.2662 +}
  1.2663 +
  1.2664 +/* Accessor methods for yylval and yylloc */
  1.2665 +
  1.2666 +YYSTYPE * yyget_lval  (yyscan_t yyscanner)
  1.2667 +{
  1.2668 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2669 +    return yylval;
  1.2670 +}
  1.2671 +
  1.2672 +void yyset_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
  1.2673 +{
  1.2674 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2675 +    yylval = yylval_param;
  1.2676 +}
  1.2677 +
  1.2678 +YYLTYPE *yyget_lloc  (yyscan_t yyscanner)
  1.2679 +{
  1.2680 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2681 +    return yylloc;
  1.2682 +}
  1.2683 +    
  1.2684 +void yyset_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
  1.2685 +{
  1.2686 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2687 +    yylloc = yylloc_param;
  1.2688 +}
  1.2689 +    
  1.2690 +/* User-visible API */
  1.2691 +
  1.2692 +/* yylex_init is special because it creates the scanner itself, so it is
  1.2693 + * the ONLY reentrant function that doesn't take the scanner as the last argument.
  1.2694 + * That's why we explicitly handle the declaration, instead of using our macros.
  1.2695 + */
  1.2696 +
  1.2697 +int yylex_init(yyscan_t* ptr_yy_globals)
  1.2698 +
  1.2699 +{
  1.2700 +    if (ptr_yy_globals == NULL){
  1.2701 +        errno = EINVAL;
  1.2702 +        return 1;
  1.2703 +    }
  1.2704 +
  1.2705 +    *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );
  1.2706 +
  1.2707 +    if (*ptr_yy_globals == NULL){
  1.2708 +        errno = ENOMEM;
  1.2709 +        return 1;
  1.2710 +    }
  1.2711 +
  1.2712 +    /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
  1.2713 +    memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
  1.2714 +
  1.2715 +    return yy_init_globals ( *ptr_yy_globals );
  1.2716 +}
  1.2717 +
  1.2718 +/* yylex_init_extra has the same functionality as yylex_init, but follows the
  1.2719 + * convention of taking the scanner as the last argument. Note however, that
  1.2720 + * this is a *pointer* to a scanner, as it will be allocated by this call (and
  1.2721 + * is the reason, too, why this function also must handle its own declaration).
  1.2722 + * The user defined value in the first argument will be available to yyalloc in
  1.2723 + * the yyextra field.
  1.2724 + */
  1.2725 +
  1.2726 +int yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
  1.2727 +
  1.2728 +{
  1.2729 +    struct yyguts_t dummy_yyguts;
  1.2730 +
  1.2731 +    yyset_extra (yy_user_defined, &dummy_yyguts);
  1.2732 +
  1.2733 +    if (ptr_yy_globals == NULL){
  1.2734 +        errno = EINVAL;
  1.2735 +        return 1;
  1.2736 +    }
  1.2737 +	
  1.2738 +    *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
  1.2739 +	
  1.2740 +    if (*ptr_yy_globals == NULL){
  1.2741 +        errno = ENOMEM;
  1.2742 +        return 1;
  1.2743 +    }
  1.2744 +    
  1.2745 +    /* By setting to 0xAA, we expose bugs in
  1.2746 +    yy_init_globals. Leave at 0x00 for releases. */
  1.2747 +    memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
  1.2748 +    
  1.2749 +    yyset_extra (yy_user_defined, *ptr_yy_globals);
  1.2750 +    
  1.2751 +    return yy_init_globals ( *ptr_yy_globals );
  1.2752 +}
  1.2753 +
  1.2754 +static int yy_init_globals (yyscan_t yyscanner)
  1.2755 +{
  1.2756 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2757 +    /* Initialization is the same as for the non-reentrant scanner.
  1.2758 +     * This function is called from yylex_destroy(), so don't allocate here.
  1.2759 +     */
  1.2760 +
  1.2761 +    yyg->yy_buffer_stack = 0;
  1.2762 +    yyg->yy_buffer_stack_top = 0;
  1.2763 +    yyg->yy_buffer_stack_max = 0;
  1.2764 +    yyg->yy_c_buf_p = (char *) 0;
  1.2765 +    yyg->yy_init = 0;
  1.2766 +    yyg->yy_start = 0;
  1.2767 +
  1.2768 +    yyg->yy_start_stack_ptr = 0;
  1.2769 +    yyg->yy_start_stack_depth = 0;
  1.2770 +    yyg->yy_start_stack =  NULL;
  1.2771 +
  1.2772 +/* Defined in main.c */
  1.2773 +#ifdef YY_STDINIT
  1.2774 +    yyin = stdin;
  1.2775 +    yyout = stdout;
  1.2776 +#else
  1.2777 +    yyin = (FILE *) 0;
  1.2778 +    yyout = (FILE *) 0;
  1.2779 +#endif
  1.2780 +
  1.2781 +    /* For future reference: Set errno on error, since we are called by
  1.2782 +     * yylex_init()
  1.2783 +     */
  1.2784 +    return 0;
  1.2785 +}
  1.2786 +
  1.2787 +/* yylex_destroy is for both reentrant and non-reentrant scanners. */
  1.2788 +int yylex_destroy  (yyscan_t yyscanner)
  1.2789 +{
  1.2790 +    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  1.2791 +
  1.2792 +    /* Pop the buffer stack, destroying each element. */
  1.2793 +	while(YY_CURRENT_BUFFER){
  1.2794 +		yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
  1.2795 +		YY_CURRENT_BUFFER_LVALUE = NULL;
  1.2796 +		yypop_buffer_state(yyscanner);
  1.2797 +	}
  1.2798 +
  1.2799 +	/* Destroy the stack itself. */
  1.2800 +	yyfree(yyg->yy_buffer_stack ,yyscanner);
  1.2801 +	yyg->yy_buffer_stack = NULL;
  1.2802 +
  1.2803 +    /* Destroy the start condition stack. */
  1.2804 +        yyfree(yyg->yy_start_stack ,yyscanner );
  1.2805 +        yyg->yy_start_stack = NULL;
  1.2806 +
  1.2807 +    /* Reset the globals. This is important in a non-reentrant scanner so the next time
  1.2808 +     * yylex() is called, initialization will occur. */
  1.2809 +    yy_init_globals( yyscanner);
  1.2810 +
  1.2811 +    /* Destroy the main struct (reentrant only). */
  1.2812 +    yyfree ( yyscanner , yyscanner );
  1.2813 +    yyscanner = NULL;
  1.2814 +    return 0;
  1.2815 +}
  1.2816 +
  1.2817 +/*
  1.2818 + * Internal utility routines.
  1.2819 + */
  1.2820 +
  1.2821 +#ifndef yytext_ptr
  1.2822 +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
  1.2823 +{
  1.2824 +	register int i;
  1.2825 +	for ( i = 0; i < n; ++i )
  1.2826 +		s1[i] = s2[i];
  1.2827 +}
  1.2828 +#endif
  1.2829 +
  1.2830 +#ifdef YY_NEED_STRLEN
  1.2831 +static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
  1.2832 +{
  1.2833 +	register int n;
  1.2834 +	for ( n = 0; s[n]; ++n )
  1.2835 +		;
  1.2836 +
  1.2837 +	return n;
  1.2838 +}
  1.2839 +#endif
  1.2840 +
  1.2841 +void *yyalloc (yy_size_t  size , yyscan_t yyscanner)
  1.2842 +{
  1.2843 +	return (void *) malloc( size );
  1.2844 +}
  1.2845 +
  1.2846 +void *yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
  1.2847 +{
  1.2848 +	/* The cast to (char *) in the following accommodates both
  1.2849 +	 * implementations that use char* generic pointers, and those
  1.2850 +	 * that use void* generic pointers.  It works with the latter
  1.2851 +	 * because both ANSI C and C++ allow castless assignment from
  1.2852 +	 * any pointer type to void*, and deal with argument conversions
  1.2853 +	 * as though doing an assignment.
  1.2854 +	 */
  1.2855 +	return (void *) realloc( (char *) ptr, size );
  1.2856 +}
  1.2857 +
  1.2858 +void yyfree (void * ptr , yyscan_t yyscanner)
  1.2859 +{
  1.2860 +	free( (char *) ptr );	/* see yyrealloc() for (char *) cast */
  1.2861 +}
  1.2862 +
  1.2863 +#define YYTABLES_NAME "yytables"
  1.2864 +
  1.2865 +yy_size_t string_input(char* buf, yy_size_t max_size, yyscan_t yyscanner) {
  1.2866 +    pp::Token token;
  1.2867 +    yyget_extra(yyscanner)->preprocessor.lex(&token);
  1.2868 +    yy_size_t len = token.type == pp::Token::LAST ? 0 : token.text.size();
  1.2869 +    if (len < max_size)
  1.2870 +        memcpy(buf, token.text.c_str(), len);
  1.2871 +    yyset_column(token.location.file,yyscanner);
  1.2872 +    yyset_lineno(token.location.line,yyscanner);
  1.2873 +
  1.2874 +    if (len >= max_size)
  1.2875 +        YY_FATAL_ERROR("Input buffer overflow");
  1.2876 +    else if (len > 0)
  1.2877 +        buf[len++] = ' ';
  1.2878 +    return len;
  1.2879 +}
  1.2880 +
  1.2881 +int check_type(yyscan_t yyscanner) {
  1.2882 +    struct yyguts_t* yyg = (struct yyguts_t*) yyscanner;
  1.2883 +    
  1.2884 +    int token = IDENTIFIER;
  1.2885 +    TSymbol* symbol = yyextra->symbolTable.find(yytext);
  1.2886 +    if (symbol && symbol->isVariable()) {
  1.2887 +        TVariable* variable = static_cast<TVariable*>(symbol);
  1.2888 +        if (variable->isUserType())
  1.2889 +            token = TYPE_NAME;
  1.2890 +    }
  1.2891 +    yylval->lex.symbol = symbol;
  1.2892 +    return token;
  1.2893 +}
  1.2894 +
  1.2895 +int reserved_word(yyscan_t yyscanner) {
  1.2896 +    struct yyguts_t* yyg = (struct yyguts_t*) yyscanner;
  1.2897 +
  1.2898 +    yyextra->error(*yylloc, "Illegal use of reserved word", yytext, "");
  1.2899 +    yyextra->recover();
  1.2900 +    return 0;
  1.2901 +}
  1.2902 +
  1.2903 +int glslang_initialize(TParseContext* context) {
  1.2904 +    yyscan_t scanner = NULL;
  1.2905 +    if (yylex_init_extra(context,&scanner))
  1.2906 +        return 1;
  1.2907 +
  1.2908 +    context->scanner = scanner;
  1.2909 +    return 0;
  1.2910 +}
  1.2911 +
  1.2912 +int glslang_finalize(TParseContext* context) {
  1.2913 +    yyscan_t scanner = context->scanner;
  1.2914 +    if (scanner == NULL) return 0;
  1.2915 +    
  1.2916 +    context->scanner = NULL;
  1.2917 +    yylex_destroy(scanner);
  1.2918 +
  1.2919 +    return 0;
  1.2920 +}
  1.2921 +
  1.2922 +int glslang_scan(size_t count, const char* const string[], const int length[],
  1.2923 +                 TParseContext* context) {
  1.2924 +    yyrestart(NULL,context->scanner);
  1.2925 +    yyset_column(0,context->scanner);
  1.2926 +    yyset_lineno(1,context->scanner);
  1.2927 +
  1.2928 +    // Initialize preprocessor.
  1.2929 +    if (!context->preprocessor.init(count, string, length))
  1.2930 +        return 1;
  1.2931 +
  1.2932 +    // Define extension macros.
  1.2933 +    const TExtensionBehavior& extBehavior = context->extensionBehavior();
  1.2934 +    for (TExtensionBehavior::const_iterator iter = extBehavior.begin();
  1.2935 +         iter != extBehavior.end(); ++iter) {
  1.2936 +        context->preprocessor.predefineMacro(iter->first.c_str(), 1);
  1.2937 +    }
  1.2938 +    if (context->fragmentPrecisionHigh)
  1.2939 +        context->preprocessor.predefineMacro("GL_FRAGMENT_PRECISION_HIGH", 1);
  1.2940 +
  1.2941 +    return 0;
  1.2942 +}
  1.2943 +

mercurial