/* A lexical scanner generated by flex */

/* Scanner skeleton version:
 * $Header$
 */

#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2
#define YY_FLEX_MINOR_VERSION 5

#include <stdio.h>
#include <errno.h>

/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
#ifdef c_plusplus
#ifndef __cplusplus
#define __cplusplus
#endif
#endif


#ifdef __cplusplus

#include <stdlib.h>
#ifndef _WIN32
#include <unistd.h>
#endif

/* Use prototypes in function declarations. */
#define YY_USE_PROTOS

/* The "const" storage-class-modifier is valid. */
#define YY_USE_CONST

#else	/* ! __cplusplus */

#if __STDC__

#define YY_USE_PROTOS
#define YY_USE_CONST

#endif	/* __STDC__ */
#endif	/* ! __cplusplus */

#ifdef __TURBOC__
 #pragma warn -rch
 #pragma warn -use
#include <io.h>
#include <stdlib.h>
#define YY_USE_CONST
#define YY_USE_PROTOS
#endif

#ifdef YY_USE_CONST
#define yyconst const
#else
#define yyconst
#endif


#ifdef YY_USE_PROTOS
#define YY_PROTO(proto) proto
#else
#define YY_PROTO(proto) ()
#endif


/* Returned upon end-of-file. */
#define YY_NULL 0

/* Promotes a possibly negative, possibly signed char to an unsigned
 * integer for use as an array index.  If the signed char is negative,
 * we want to instead treat it as an 8-bit unsigned char, hence the
 * double cast.
 */
#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)

/* Enter a start condition.  This macro really ought to take a parameter,
 * but we do it the disgusting crufty way forced on us by the ()-less
 * definition of BEGIN.
 */
#define BEGIN yy_start = 1 + 2 *

/* Translate the current start state into a value that can be later handed
 * to BEGIN to return to the state.  The YYSTATE alias is for lex
 * compatibility.
 */
#define YY_START ((yy_start - 1) / 2)
#define YYSTATE YY_START

/* Action number for EOF rule of a given start state. */
#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)

/* Special action meaning "start processing a new file". */
#define YY_NEW_FILE yyrestart( yyin )

#define YY_END_OF_BUFFER_CHAR 0

/* Size of default input buffer. */
#define YY_BUF_SIZE 16384

typedef struct yy_buffer_state *YY_BUFFER_STATE;

extern int yyleng;
extern FILE *yyin, *yyout;

#define EOB_ACT_CONTINUE_SCAN 0
#define EOB_ACT_END_OF_FILE 1
#define EOB_ACT_LAST_MATCH 2

/* The funky do-while in the following #define is used to turn the definition
 * int a single C statement (which needs a semi-colon terminator).  This
 * avoids problems with code like:
 *
 * 	if ( condition_holds )
 *		yyless( 5 );
 *	else
 *		do_something_else();
 *
 * Prior to using the do-while the compiler would get upset at the
 * "else" because it interpreted the "if" statement as being all
 * done when it reached the ';' after the yyless() call.
 */

/* Return all but the first 'n' matched characters back to the input stream. */

#define yyless(n) \
	do \
		{ \
		/* Undo effects of setting up yytext. */ \
		*yy_cp = yy_hold_char; \
		YY_RESTORE_YY_MORE_OFFSET \
		yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
		} \
	while ( 0 )

#define unput(c) yyunput( c, yytext_ptr )

/* The following is because we cannot portably get our hands on size_t
 * (without autoconf's help, which isn't available because we want
 * flex-generated scanners to compile on their own).
 */
typedef unsigned int yy_size_t;


struct yy_buffer_state
	{
	FILE *yy_input_file;

	char *yy_ch_buf;		/* input buffer */
	char *yy_buf_pos;		/* current position in input buffer */

	/* Size of input buffer in bytes, not including room for EOB
	 * characters.
	 */
	yy_size_t yy_buf_size;

	/* Number of characters read into yy_ch_buf, not including EOB
	 * characters.
	 */
	int yy_n_chars;

	/* Whether we "own" the buffer - i.e., we know we created it,
	 * and can realloc() it to grow it, and should free() it to
	 * delete it.
	 */
	int yy_is_our_buffer;

	/* Whether this is an "interactive" input source; if so, and
	 * if we're using stdio for input, then we want to use getc()
	 * instead of fread(), to make sure we stop fetching input after
	 * each newline.
	 */
	int yy_is_interactive;

	/* Whether we're considered to be at the beginning of a line.
	 * If so, '^' rules will be active on the next match, otherwise
	 * not.
	 */
	int yy_at_bol;

	/* Whether to try to fill the input buffer when we reach the
	 * end of it.
	 */
	int yy_fill_buffer;

	int yy_buffer_status;
#define YY_BUFFER_NEW 0
#define YY_BUFFER_NORMAL 1
	/* When an EOF's been seen but there's still some text to process
	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
	 * shouldn't try reading from the input source any more.  We might
	 * still have a bunch of tokens to match, though, because of
	 * possible backing-up.
	 *
	 * When we actually see the EOF, we change the status to "new"
	 * (via yyrestart()), so that the user can continue scanning by
	 * just pointing yyin at a new input file.
	 */
#define YY_BUFFER_EOF_PENDING 2
	};

static YY_BUFFER_STATE yy_current_buffer = 0;

/* We provide macros for accessing buffer states in case in the
 * future we want to put the buffer states in a more general
 * "scanner state".
 */
#define YY_CURRENT_BUFFER yy_current_buffer


/* yy_hold_char holds the character lost when yytext is formed. */
static char yy_hold_char;

static int yy_n_chars;		/* number of characters read into yy_ch_buf */


int yyleng;

/* Points to current character in buffer. */
static char *yy_c_buf_p = (char *) 0;
static int yy_init = 1;		/* whether we need to initialize */
static int yy_start = 0;	/* start state number */

/* Flag which is used to allow yywrap()'s to do buffer switches
 * instead of setting up a fresh yyin.  A bit of a hack ...
 */
static int yy_did_buffer_switch_on_eof;

void yyrestart YY_PROTO(( FILE *input_file ));

void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
void yy_load_buffer_state YY_PROTO(( void ));
YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )

YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));

static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
static void yy_flex_free YY_PROTO(( void * ));

#define yy_new_buffer yy_create_buffer

#define yy_set_interactive(is_interactive) \
	{ \
	if ( ! yy_current_buffer ) \
		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
	yy_current_buffer->yy_is_interactive = is_interactive; \
	}

#define yy_set_bol(at_bol) \
	{ \
	if ( ! yy_current_buffer ) \
		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
	yy_current_buffer->yy_at_bol = at_bol; \
	}

#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)

typedef unsigned char YY_CHAR;
FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
typedef int yy_state_type;
extern char *yytext;
#define yytext_ptr yytext

static yy_state_type yy_get_previous_state YY_PROTO(( void ));
static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
static int yy_get_next_buffer YY_PROTO(( void ));
static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));

/* Done after the current pattern has been matched and before the
 * corresponding action - sets up yytext.
 */
#define YY_DO_BEFORE_ACTION \
	yytext_ptr = yy_bp; \
	yyleng = (int) (yy_cp - yy_bp); \
	yy_hold_char = *yy_cp; \
	*yy_cp = '\0'; \
	yy_c_buf_p = yy_cp;

#define YY_NUM_RULES 182
#define YY_END_OF_BUFFER 183
static yyconst short int yy_accept[1301] =
    {   0,
        0,    0,  162,  162,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,  183,  182,
      180,  165,  164,   32,  180,  162,   38,   29,   44,   43,
       34,   35,   28,   36,  162,   37,    8,    8,   45,   46,
       39,   40,   27,   33,  162,  162,  162,  162,  162,  162,
      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
      162,  162,  162,   10,    9,  162,  110,  108,  162,   42,
       30,   41,   31,  181,  165,   32,  181,  160,   38,   29,
       44,   43,   34,   35,   28,   36,  160,   37,    8,    8,
       45,   46,   39,   40,   27,   33,  160,  160,  160,  160,

      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
      160,   10,    9,  160,  160,   42,   30,   41,   31,  160,
        8,    8,  160,  160,  160,  160,  160,  160,  160,  160,
      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
      110,  108,    4,    3,    2,    4,    5,  121,  120,  159,
       34,   35,   28,   36,  159,   37,    8,    8,   45,   46,
       40,   33,  159,  159,  159,  159,  159,  159,  159,  159,
      159,  159,  159,  159,   10,    9,  159,  159,  159,  159,
      159,  159,  159,  159,  159,  159,  159,   31,  179,  177,
      178,  180,  172,  171,  166,  173,  174,  170,  170,  170,

      170,  175,  176,  165,   15,    0,  163,  162,    8,   26,
       24,   22,   20,   21,    1,   23,    8,    8,  162,   18,
       17,   14,   16,   19,  162,  162,  162,  162,  114,  162,
      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
      162,  162,  162,  162,   25,   13,  160,    6,   22,   20,
       21,    0,    1,   23,    8,    0,    7,    7,    8,    7,
       14,  160,    7,    7,    7,  160,  160,  114,    7,  160,

      160,    7,  160,  160,  160,    7,  160,  160,  160,  160,
      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
      160,  160,  160,    7,  160,    8,    8,    0,  160,  160,
      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
      160,    4,    4,  120,  120,  159,    6,  122,   22,   23,
      123,  159,    7,    7,    7,  159,  159,  159,    7,  159,
        7,    7,  159,  159,  159,  159,  159,  159,  159,  159,
        7,  159,  159,  159,    7,  159,    7,    7,  159,  159,

      159,  159,  159,  159,  159,  159,  179,  178,  171,  170,
        0,  170,  170,  170,   11,   12,  162,  162,  162,  162,
      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
      162,  162,  162,  162,  162,  162,   86,  162,  162,  162,
      162,  162,  162,  162,  162,   68,  162,  162,  162,  162,
      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
      162,  162,  111,  109,  162,    8,  161,    8,  160,    7,
      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
      160,  160,  160,  160,  160,   59,   60,  160,  160,  160,

      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
       86,  160,  160,  160,  160,   68,  160,  160,  160,  160,
      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
      160,  111,  109,    4,    8,  159,  159,  159,  159,  159,
      124,  159,  159,  159,  159,  159,  159,  159,  159,  159,
      159,  159,  159,  159,  159,  159,  141,  159,  159,  159,
      159,  159,  159,  159,  159,  159,  159,  170,  170,  170,
      162,   57,  162,  162,   51,  162,   93,  162,  102,  162,
      162,  162,  162,  162,  162,  162,   82,  162,  162,  162,

      162,  103,  162,  162,  118,  162,  162,   91,  162,   64,
      162,  162,  162,  162,  162,  162,  162,  162,  162,   89,
      162,  162,  162,  162,  162,   99,  162,  162,  162,  162,
      162,  162,  162,  162,  162,  160,   57,  160,  160,  160,
       51,  160,  102,  160,  160,  160,  160,  160,  103,  118,
      160,  160,   64,  160,  160,  160,  160,  160,  160,  160,
      160,  160,  160,  160,  160,   93,  160,  160,  160,  160,
       82,  160,  160,  160,  160,  160,   91,  160,  160,  160,
      160,  160,   89,  160,  160,  160,   99,  160,  160,  160,
      160,  160,  159,  159,  159,  128,  136,  127,  159,  159,

      138,  131,  134,  159,  159,  139,  159,  159,  159,  159,
      159,  145,  153,  144,  159,  159,  156,  148,  151,  159,
      159,  157,  159,  159,  170,  170,  170,  162,   53,  162,
       50,  162,  162,  162,  162,  101,   62,  162,  162,   88,
      162,   74,  162,  162,   73,  162,  162,  162,  162,  162,
      162,  162,  162,  162,  162,  113,  162,  162,  162,  162,
       92,  162,  162,  162,   90,  162,  162,  162,  162,  162,
      162,  162,  160,   53,  160,  160,   50,  160,  160,  101,
      160,   74,  160,  160,  160,  160,  160,  160,  160,  160,
      160,  160,  160,  160,  160,  160,  160,  160,   62,  160,

       88,  160,  160,  160,   73,  160,  160,  160,  160,  113,
      160,  160,   92,  160,   90,  160,  160,  160,  160,  159,
      129,  126,  159,  159,  138,  138,  133,  159,  137,  159,
      159,  146,  143,  159,  159,  156,  156,  150,  159,  155,
      159,  170,  170,  168,  162,  162,  162,  162,  162,  162,
      162,   63,  162,  162,  162,   52,  162,   47,  162,  162,
      100,  162,   48,   72,  162,  162,  162,  162,  162,   69,
      162,  162,  162,  162,   87,   70,  162,  162,  162,  160,
       61,  160,  160,  160,  160,   52,  160,  160,  100,  160,
       48,  160,  160,  160,   69,  160,  160,  160,  160,  160,

      160,   63,  160,  160,  160,   47,  160,   72,  160,  160,
      160,  160,  160,   87,   70,  160,  159,  159,   63,  135,
      132,  159,  159,  159,  154,  152,  149,  159,  169,  167,
      162,  162,  162,  162,  162,   76,  162,  162,  112,  162,
      162,  162,   94,  162,  162,   96,  116,  162,  162,  162,
      162,  162,  107,   83,  162,   49,  162,  162,  160,  160,
      160,   76,  160,  160,  160,  160,  104,  116,  160,  160,
      107,  160,  160,  160,  160,  160,  160,  112,  160,   94,
      160,   96,  160,  160,  160,   83,   49,  159,  159,  159,
      159,  159,  159,  140,  162,  162,  162,  162,  162,  162,

      162,   58,  162,  162,  162,  162,  162,  162,   81,  162,
      162,  162,  115,  158,  162,  140,  160,  160,  160,   58,
      160,  160,  160,  160,  160,  115,  158,  160,  160,  160,
      160,  160,  160,  160,  160,   81,  160,  140,  125,  130,
      158,  142,  147,   75,  162,  162,  162,  162,  162,  162,
      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
      162,   75,  160,  160,  160,  160,  160,  160,  160,  160,
      160,  160,  160,  160,  160,  160,  160,  160,  160,  162,
      162,  162,  162,  162,  162,  162,  105,  106,  162,  162,
      162,   71,  162,  162,  162,  162,  162,  160,  160,  160,

      105,  106,  160,  160,  160,  160,  160,  160,  160,  160,
      160,  160,   71,  160,  160,  162,  162,  162,  162,  162,
      162,   95,   85,  162,  162,  162,  162,  162,  162,  162,
      160,  160,   95,  160,  160,  160,  160,  160,  160,  160,
      160,   85,  160,  160,  160,   78,  162,  162,  119,  162,
      162,  162,  162,  162,  162,  162,   97,  162,  160,  119,
      160,  160,  160,  160,   78,  160,  160,  160,  160,  160,
       97,  162,  162,  162,  162,   84,  162,   67,  162,  162,
      162,  160,  160,   67,  160,  160,  160,  160,  160,   84,
      160,  162,  162,  162,  162,  162,  162,  117,   66,  162,

       65,  160,  160,  160,  117,   66,   65,  160,  160,  160,
      160,  162,  162,  162,  162,  162,  162,  162,  160,  160,
      160,  160,  160,  160,  160,  162,  162,   56,  162,  162,
      162,  162,  160,   56,  160,  160,  160,  160,  160,  162,
      162,  162,  162,  162,   98,  160,  160,  160,  160,  160,
       98,  162,   54,  162,  162,  162,   54,  160,  160,  160,
      160,  162,  162,  162,  162,  160,  160,  160,  160,  162,
      162,  162,  162,  160,  160,  160,  160,   77,  162,  162,
      162,  160,   77,  160,  160,   55,  162,  162,   55,  160,
      160,   79,  162,   79,  160,  162,  160,   80,   80,    0

    } ;

static yyconst int yy_ec[256] =
    {   0,
        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
        1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    2,    4,    5,    6,    7,    8,    9,    1,   10,
       11,   12,   13,   14,   15,   16,   17,   18,   19,   19,
       19,   19,   19,   19,   19,   19,   19,   20,   21,   22,
       23,   24,   25,    1,   26,   27,   28,   29,   30,   31,
       32,   33,   34,   35,   36,   37,   38,   39,   40,   41,
       42,   43,   44,   45,   46,   47,   48,   49,   50,   51,
       52,   53,   54,   55,   56,    1,   57,   58,   59,   60,

       61,   62,   63,   64,   65,   16,   66,   67,   68,   69,
       70,   71,   16,   72,   73,   74,   75,   16,   16,   76,
       16,   77,   78,   79,   80,   81,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,

        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1
    } ;

static yyconst int yy_meta[82] =
    {   0,
        1,    1,    2,    3,    1,    1,    4,    1,    1,    1,
        1,    5,    6,    7,    8,    9,   10,   11,   11,    8,
        1,    1,    7,    1,    5,   11,   11,   11,   11,   11,
       11,    9,    9,    9,    9,    9,    9,    9,    9,    9,
        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
        9,    8,    4,    8,    3,    9,   11,   11,   11,   11,
       11,   11,    9,    9,    9,    9,    9,    9,    9,    9,
        9,    9,    9,    9,    9,    9,    9,    1,    1,    1,
       10
    } ;

static yyconst short int yy_base[1323] =
    {   0,
        0,    0,    0,    0,   81,    0,  156,    0,  226,  306,
      386,    0,  164,  174,  467,  548,  629,  710, 2217, 2218,
     2218, 2214, 2218, 2192, 2209,  774, 2218,  155, 2218, 2218,
     2190, 2189,    0, 2188,    0,  156,  304,  235,    0, 2218,
      149, 2187,  181,    0,  230,  172,  159,  181,  171,  221,
     2166, 2171, 2168, 2176,  226,  139,  230,  240,  229, 2159,
      304, 2178, 2173,    0,    0, 2144, 2140, 2128, 2134, 2218,
      185, 2218,    0, 2218, 2196, 2174, 2191,  819, 2218,  254,
     2218, 2218, 2172, 2171, 2218,  198,    0,  270,  864,  143,
     2218, 2218,  246, 2170,  261, 2218,  923,  330,  466,  470,

      489,  498, 2149, 2152, 2160,  258,  263,  260,  252, 2146,
      302, 2218, 2218,  547, 2123, 2218,  273, 2218,    0,  982,
      638,  717,  550,  328,  323,  325,  253,  339, 2150, 2147,
      341,  468,  483,  462,  496, 2139,  574, 2158, 2153, 2124,
     2120, 2108, 1027, 2218, 2218,    0, 2218, 2218, 2176, 1072,
     2155, 2154, 2218, 2153,    0, 2152,    0,  292, 2218,    0,
     2151, 2218, 1117,  504,  556,  548,  572,  585,  299, 2147,
     2129, 2125,  143, 2127, 2218, 2218,  596,  553,  618,  668,
      631,  312, 2112, 2096, 2092,  443, 2094,    0, 2163, 2218,
        0, 2152, 2218,    0, 2218, 2218, 2218, 2143,  512,  577,

      454, 2218, 2218, 2160, 2218, 2156, 2218,    0, 1176, 2218,
     2218,    0,    0,    0,    0,    0,  728,    0,  623, 2137,
     2218,    0, 2218, 2136, 2114, 2128, 2122, 2099,    0, 2115,
     2113, 2107,  557, 2121, 2105, 2118, 2118, 2102,  536, 2109,
     2105, 2101, 2103, 2105,  636, 2111, 2101,  634, 2098, 2100,
     2088,  634, 2099, 2101, 2089, 2103, 2103, 2091, 2104,  652,
     2089, 2077, 2084, 2096, 2079, 2098, 2096, 2078, 2078, 2077,
     2046, 2049, 2054, 2039, 2218, 2218,    0, 1227, 2218, 2218,
     2218,    0, 2218,    0,  307,  731,    0, 2218, 2218,    0,
     2218,  714,  779,  782,    0, 2081,  168,    0,  785, 2075,

     2073, 2071,  814,  825, 2081, 2082, 2069, 2077, 2077, 2067,
     2079, 2055, 2064, 2053,  500, 2064, 2066, 2069, 2058, 2065,
     2045, 2065, 2067,  828, 2016,  634,  848,    0, 2048, 2062,
     2045,  640, 2059, 2043, 2056, 2041,  638, 2048, 2044, 2040,
     2045,  729,  659,  495, 2043,  666, 2035, 2049, 2049, 2051,
      746, 2036, 2032, 2028, 2047, 2028, 2028, 2027, 1996, 1999,
     2004,    0, 1278, 2063, 2218,    0, 1329,    0,    0, 2218,
        0,  711,  738,  715,    0, 2031,  861,  862, 2030, 2034,
     2017, 2018, 2016, 2033, 2020, 2028, 2029, 2027, 2028, 2007,
      788, 1987,  791,  882, 1986, 1990, 1975, 1976, 1974, 1989,

     1977, 1984, 1985, 1983, 1984, 1965, 2037,    0,    0, 2018,
     2017,  666,  566,  558, 2218, 2218, 1996, 1992, 2002, 1994,
     2003, 2003, 2000, 1985, 1978, 2001, 2000, 1991, 1996, 1980,
     1985, 1991, 1983, 1993, 1990, 1971,    0, 1979, 1975, 1980,
     1967, 1971, 1979, 1981, 1977,    0, 1968, 1962, 1963, 1968,
     1964, 1953, 1970, 1960, 1957, 1956, 1951, 1968, 1953, 1950,
     1956, 1950, 1962, 1946, 1962, 1963, 1945, 1961, 1949, 1953,
     1940, 1913,    0,    0, 1921,    0,    0,  718, 1941,  900,
     1948, 1949, 1939, 1948, 1948, 1925, 1948,  932, 1945, 1935,
     1925, 1930, 1928, 1936, 1938,    0,    0, 1921, 1922, 1924,

     1913, 1930, 1918, 1913, 1921, 1928, 1929, 1930, 1885, 1893,
     1910, 1922, 1907, 1924, 1915, 1905, 1917, 1909, 1919, 1916,
        0, 1906, 1908, 1895, 1908,    0, 1899, 1901, 1896, 1893,
     1892, 1905, 1890, 1887, 1888, 1885, 1903, 1885, 1890, 1894,
     1881,    0,    0,    0,    0, 1884,  667, 1884, 1873, 1851,
        0, 1851, 1835, 1825, 1838, 1836, 1831, 1813, 1794, 1785,
     1783, 1750,  682, 1743, 1742, 1731,    0, 1740, 1725, 1640,
     1653, 1651, 1650, 1643, 1635, 1636, 1638,  274,  668,  741,
     1669,    0, 1666, 1674,    0, 1667,    0, 1657,    0, 1656,
     1644, 1660, 1653, 1647, 1650, 1652,    0, 1649, 1663, 1650,

     1644,    0, 1662, 1643,    0, 1642, 1660,    0, 1642,    0,
     1644, 1643, 1656, 1625, 1646, 1633, 1641, 1633, 1642,    0,
     1647, 1640, 1643, 1627, 1631, 1614, 1635, 1639, 1622, 1629,
     1631, 1634, 1629, 1590, 1586, 1618,    0, 1615, 1610, 1622,
        0, 1614,    0, 1588, 1601, 1589, 1587, 1591,    0,    0,
     1586, 1604,    0, 1589, 1602, 1571, 1592, 1588, 1590, 1593,
     1582, 1587, 1583, 1552, 1548,    0, 1572, 1571, 1565, 1571,
        0, 1568, 1581, 1564, 1582, 1563,    0, 1564, 1566, 1559,
     1567, 1559,    0, 1574, 1567, 1555, 1543, 1569, 1552, 1562,
     1565, 1560, 1556, 1548, 1552,    0,    0,    0, 1547, 1563,

     1397,    0,    0, 1545, 1553,    0, 1541, 1557, 1517, 1510,
     1508,    0,    0,    0, 1504, 1518, 1477,    0,    0, 1502,
     1508,    0, 1498, 1511,  748,  756,  743, 1518,    0, 1530,
        0, 1511, 1523, 1508, 1521,    0,    0, 1521, 1510,    0,
     1492,    0, 1518, 1512,    0, 1512, 1515, 1493, 1498, 1515,
     1511, 1505, 1499, 1492, 1510,    0, 1506, 1501, 1493, 1492,
        0, 1499, 1502, 1502,    0, 1481, 1492, 1498, 1479, 1483,
     1447, 1459, 1474,    0, 1474, 1488,    0, 1473, 1486,    0,
     1486,    0, 1481, 1484, 1468, 1482, 1476, 1470, 1482, 1478,
     1467, 1474, 1478, 1469, 1422, 1434, 1452, 1464,    0, 1454,

        0, 1436, 1461, 1450,    0, 1430, 1448, 1428, 1446,    0,
     1438, 1430,    0, 1442,    0,  197,  249,  302,  443,  466,
        0,  502,  516,  561,    0, 1557,    0,  585,    0,  592,
      566,    0,  649,  653,  651,    0, 1637,    0,  720,    0,
      724,  775,  801,  767,  772,  810,  794,  786,  823,  831,
      833,    0,  843,  844,  830,    0,  856,    0,  843,  851,
        0,  872,    0,  851,  858,  880,  855,  873,  870,  861,
      868,  883,  890,  901,    0,    0,  896,  862,  882,  894,
        0,  917,  917,  919,  927,    0,  929,  918,    0,  933,
        0,  915,  940,  926,  917,  937,  943,  904,  923,  940,

      932,    0,  961,  960,  946,    0,  947,  938,  945,  940,
      958,  948,  961,    0,    0,  964,  959,  965,    0,    0,
        0,  961,  933,  944,    0,    0,    0,  941,  996,  997,
      988,  989,  992,  981,  990,    0,  967,  984,    0,  969,
      983,  984,    0,  972, 1003,    0,  974, 1002,  988,  977,
     1002,  980,    0,    0,  998,    0,  977,  983, 1018, 1019,
     1018,    0,  995, 1009, 1016, 1004,    0, 1005, 1006, 1030,
        0, 1025, 1004, 1002, 1039, 1028, 1029,    0, 1014,    0,
     1045,    0, 1043, 1029, 1018,    0,    0, 1045, 1048, 1048,
     1018, 1020, 1020,    0, 1053, 1038, 1065, 1055, 1063, 1057,

     1068,    0, 1067, 1061, 1062, 1066, 1074, 1074,    0, 1065,
     1080, 1085,    0,    0, 1051,    0, 1084, 1076, 1084,    0,
     1086, 1074, 1085, 1075, 1090,    0,    0, 1060, 1077, 1096,
     1087, 1098, 1084, 1088, 1103,    0, 1112,    0,    0,    0,
        0,    0,    0,    0, 1099, 1105, 1111, 1108, 1111, 1112,
     1122, 1115, 1128, 1115, 1125, 1117, 1116, 1136, 1127, 1139,
     1110,    0, 1138, 1135, 1139, 1132, 1137, 1128, 1156, 1126,
     1144, 1150, 1148, 1148, 1161, 1147, 1148, 1155, 1170, 1154,
     1168, 1160, 1163, 1161, 1170, 1165,    0,    0, 1177, 1173,
     1184,    0, 1189, 1187, 1183, 1180, 1159, 1181, 1184, 1178,

        0,    0, 1194, 1198, 1196, 1166, 1184, 1198, 1189, 1192,
     1198, 1194,    0, 1205, 1202, 1197, 1215, 1202, 1218, 1210,
     1212,    0,    0, 1225, 1223, 1216, 1230, 1229, 1232, 1203,
     1221, 1237,    0, 1239, 1226, 1240, 1210, 1228, 1245, 1235,
     1237,    0, 1250, 1245, 1248,    0, 1234, 1224,    0, 1225,
     1242, 1238, 1260, 1246, 1249, 1255,    0, 1226, 1243,    0,
     1270, 1256, 1259, 1231,    0, 1265, 1255, 1272, 1268, 1276,
        0, 1261, 1298, 1292, 1280,    0, 1281,    0, 1277, 1284,
     1250, 1299, 1287,    0, 1283, 1257, 1275, 1306, 1294,    0,
     1296, 1299, 1308, 1310, 1320, 1314, 1296,    0,    0, 1323,

        0, 1317, 1322, 1332,    0,    0,    0, 1319, 1327, 1310,
     1338, 1319, 1336, 1342, 1335, 1336, 1348, 1336, 1342, 1348,
     1341, 1329, 1343, 1355, 1343, 1345, 1352,    0, 1342, 1352,
     1356, 1349, 1364,    0, 1357, 1366, 1370, 1375, 1368, 1387,
     1376, 1376, 1389, 1386,    0, 1385, 1385, 1399, 1399, 1391,
        0, 1389,    0, 1374, 1405, 1392,    0, 1377, 1394, 1409,
     1396, 1400, 1408, 1394, 1412, 1411, 1405, 1398, 1416, 1401,
     1407, 1413, 1422, 1410, 1406, 1417, 1427,    0, 1425, 1415,
     1411, 1428,    0, 1418, 1414,    0, 1421, 1427,    0, 1423,
     1429,    0, 1424,    0, 1425, 1427, 1428,    0,    0, 2218,

     1717, 1728, 1739, 1750, 1761, 1772, 1780, 1788, 1796, 1807,
     1815, 1826, 1837, 1848, 1851, 1860, 1868, 1457, 1879, 1890,
     1901, 1912
    } ;

static yyconst short int yy_def[1323] =
    {   0,
     1301, 1301, 1300,    3, 1300,    5,    5,    7, 1302, 1302,
     1300,   11, 1303, 1303, 1304, 1304, 1305, 1305, 1300, 1300,
     1300, 1300, 1300, 1300, 1306, 1307, 1300, 1300, 1300, 1300,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1300,
     1300, 1307, 1300, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1300,
     1300, 1300, 1307, 1300, 1300, 1300, 1306, 1308, 1300, 1300,
     1300, 1300, 1300, 1300, 1300, 1300, 1308, 1308, 1300,   89,
     1300, 1300, 1300, 1300, 1300, 1300, 1308,   97,   97,   97,

       97,   97, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1300, 1300,   97, 1308, 1300, 1300, 1300, 1308, 1308,
     1300, 1300, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1309, 1300, 1300, 1309, 1300, 1300, 1310, 1311,
     1312, 1300, 1300, 1300, 1311, 1311,   89,   89, 1300, 1313,
     1300, 1300, 1311,  163,  163,  163,  163,  163, 1311, 1311,
     1311, 1311, 1311, 1311, 1300, 1300,  163,  163,  163,  163,
      163, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1300, 1300,
     1314, 1300, 1300, 1315, 1300, 1300, 1300, 1316, 1316, 1316,

     1316, 1300, 1300, 1300, 1300, 1306, 1300, 1307, 1307, 1300,
     1300, 1307, 1307, 1307, 1307, 1307, 1307, 1307,  209, 1300,
     1300, 1307, 1300, 1300, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1300, 1300, 1308, 1308, 1300, 1300,
     1300, 1317, 1300, 1308,   89,   89,  286, 1300, 1300, 1318,
     1300,   97,   97,   97, 1308, 1308, 1308, 1308,   97, 1308,

     1308, 1308,   97,   97, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308,   97, 1308,  120, 1300, 1318, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1309, 1309, 1310, 1300, 1311, 1311, 1312, 1312, 1300,
     1313,  163,  163,  163, 1311, 1311,  163,  163, 1311, 1311,
     1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311,
      163, 1311,  163,  163, 1311, 1311, 1311, 1311, 1311, 1311,

     1311, 1311, 1311, 1311, 1311, 1311, 1300, 1314, 1315, 1316,
     1300, 1316, 1316, 1316, 1300, 1300, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1308, 1317, 1318, 1308,   97,
     1308, 1308, 1308, 1308, 1308, 1308, 1308,   97, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,

     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1309, 1311, 1311, 1311, 1311, 1311, 1311,
     1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311,
     1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311,
     1311, 1311, 1311, 1311, 1311, 1311, 1311, 1316, 1316, 1316,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,

     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311,

     1319, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311,
     1311, 1311, 1311, 1311, 1311, 1311, 1320, 1311, 1311, 1311,
     1311, 1311, 1311, 1311, 1316, 1316, 1316, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,

     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1311,
     1311, 1311, 1311, 1311, 1321, 1319, 1311, 1311, 1311, 1311,
     1311, 1311, 1311, 1311, 1311, 1322, 1320, 1311, 1311, 1311,
     1311, 1316, 1316, 1316, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,

     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1311, 1311, 1311, 1311,
     1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1316, 1316,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1311, 1311, 1311,
     1311, 1311, 1311, 1307, 1307, 1307, 1307, 1307, 1307, 1307,

     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1311, 1311, 1311,
     1311, 1311, 1311, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1308, 1308, 1308,

     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,

     1307, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
     1308, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1308, 1308,
     1308, 1308, 1308, 1308, 1308, 1307, 1307, 1307, 1307, 1307,
     1307, 1307, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1307,
     1307, 1307, 1307, 1307, 1307, 1308, 1308, 1308, 1308, 1308,
     1308, 1307, 1307, 1307, 1307, 1307, 1308, 1308, 1308, 1308,
     1308, 1307, 1307, 1307, 1307, 1308, 1308, 1308, 1308, 1307,
     1307, 1307, 1307, 1308, 1308, 1308, 1308, 1307, 1307, 1307,
     1307, 1308, 1308, 1308, 1308, 1307, 1307, 1307, 1308, 1308,
     1308, 1307, 1307, 1308, 1308, 1307, 1308, 1307, 1308,    0,

     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
     1300, 1300
    } ;

static yyconst short int yy_nxt[2300] =
    {   0,
       21,   22,   23,   24,   25,   21,   26,   27,   28,   29,
       30,   31,   32,   33,   34,   35,   36,   37,   38,   39,
       40,   41,   42,   43,   44,   45,   46,   47,   48,   49,
       50,   51,   52,   53,   35,   54,   55,   56,   57,   58,
       59,   60,   35,   61,   62,   35,   63,   35,   35,   35,
       35,   64,   35,   65,   21,   35,   66,   35,   35,   35,
       35,   35,   35,   35,   35,   35,   67,   35,   35,   68,
       35,   35,   69,   35,   35,   35,   35,   70,   71,   72,
       73,   74,   75,   23,   76,   77,   74,   78,   79,   80,
       81,   82,   83,   84,   85,   86,   87,   88,   89,   90,

       91,   92,   93,   94,   95,   96,   97,   98,   99,  100,
      101,  102,  103,   87,  104,   87,  105,  106,  107,  108,
      109,  110,   87,   87,  111,   87,   87,   87,   87,   87,
       87,   87,  112,   87,  113,   74,   87,  114,  102,  102,
      102,  102,  102,   87,   87,   87,   87,   87,   87,   87,
       87,   87,   87,  115,   87,   87,   87,   87,  116,  117,
      118,  119,  120,  210,  249,  189,  190,  215,  250,  191,
      220,  221,  388,  121,  122,  189,  190,  211,  216,  191,
      192,  123,  124,  125,  126,  127,  128,  389,  129,  130,
      192,  288,  131,  132,  133,  134,  135,  136,  233,  137,

      138,  234,  139,  223,  224,  230,  235,  275,  231,  238,
      236,  482,  140,   87,   87,   87,   87,   87,  288,  239,
      281,  232,  141,  483,  237,  142,   74,   74,   20,   74,
       74,   74,  143,   74,   74,   74,   74,   74,  144,   74,
      145,  193,  913,  121,  122,   74,   74,   74,  147,   74,
       74,  193,  217,  217,  240,  247,  225,  241,  226,  251,
      242,  257,  210,  276,  282,  248,  227,  220,  221,  252,
      218,  258,  218,  228,  229,  914,  211,   74,  253,   74,
       74,  283,  254,  223,  224,  255,  256,  310,  312,  314,
      316,  336,  284,  411,  317,  275,  313,  311,  318,  315,

      218,  337,  218,   74,   74,   74,   74,   74,   20,   74,
       74,   74,  143,   74,   74,   74,   74,   74,  144,   74,
      145,  217,  217,  121,  122,   74,   74,   74,  147,   74,
       74,  320,  383,  260,  725,  321,  261,  262,  384,  218,
      288,  218,  322,  263,  264,  265,  915,  323,  266,  267,
      334,  276,  219,  268,  335,  288,  299,   74,  299,   74,
       74,  300,  332,  300,  301,  333,  301,  288,  305,  218,
      310,  218,  338,  277,  277,  339,  399,  331,  340,  219,
      343,  400,  288,   74,   74,   74,   21,   22,  148,   24,
       21,  149,  150,   27,   28,   29,   30,  151,  152,  153,

      154,  155,  156,  157,  158,  159,  160,   41,  161,   43,
      162,  163,  164,  165,  166,  167,  168,  155,  155,  155,
      155,  155,  169,  155,  170,  171,  172,  155,  155,  173,
      174,  155,  155,  155,  155,  155,  155,  175,  155,  176,
       21,  155,  177,  178,  179,  166,  180,  181,  155,  155,
      155,  155,  182,  155,  183,  184,  185,  155,  186,  187,
      155,  155,  155,   70,   71,   72,  188,   21,  189,  190,
       21,   21,  191,  411,   21,   21,   21,   21,   21,   21,
      195,   21,  916,  192,   21,   21,  195,  195,   21,   21,
       21,   21,  299,  344,  299,  303,  299,  345,  299,  304,

      316,  313,  277,  404,  317,  302,  277,  347,  348,  277,
      277,  917,  314,  305,  277,  299,  405,  299,   21,   21,
       21,   21,  346,  414,  299,  277,  299,  499,  349,  377,
      374,  411,  277,  277,  277,  526,  500,  306,  319,  918,
      366,  277,  277,  496,  196,   21,  197,   21,   21,  189,
      190,   21,   21,  191,  919,   21,   21,   21,   21,   21,
       21,  195,   21,  431,  192,   21,   21,  195,  195,   21,
       21,   21,   21,  299,  374,  299,  329,  411,  330,  374,
      432,  378,  374,  277,  366,  411,  296,  412,  379,  366,
      277,  277,  366,  297,  298,  424,  411,  425,  374,   21,

       21,   21,   21,  351,  324,  920,  352,  321,  366,  393,
      380,  374,  921,  353,  322,  354,  580,  922,  355,  323,
      381,  366,  374,  356,  382,  196,   21,  197,   21,   21,
      189,  190,  366,   25,  191,  579,   21,   21,   21,   21,
      923,   21,  195,  413,  374,  192,   21,   21,  195,  195,
       21,   21,   21,  391,  366,  327,  327,  374,  208,  444,
      208,  449,  392,  438,  450,  490,  439,  366,  440,  476,
      451,  476,  445,  289,  394,  289,  441,  459,  513,  460,
      486,  395,  517,  461,  495,  411,  328,  411,  208,  199,
      208,  200,  694,  499,  374,  201,  528,  525,  695,  476,

      398,  476,  500,  289,  366,  289,  202,   21,  203,   21,
       21,  189,  190,  328,   25,  191,  924,   21,   21,   21,
       21,  925,   21,  195,  926,  726,  192,   21,   21,  195,
      195,   21,   21,   21,  327,  327,  396,  374,  710,  578,
      299,  374,  299,  397,  711,  217,  217,  366,  286,  286,
      277,  366,  289,  289,  289,  289,  522,  277,  277,  492,
      411,  523,  411,  218,  374,  218, 1300,  411, 1300,  524,
      199,  533,  200,  534,  366,  411,  201,  505,  927,  288,
      928,  546,  289,  289,  289,  289,  411,  202,   21,  203,
       21,  209,  209,  218,  411,  218, 1300,  727, 1300,  209,

      209,  209,  209,  209,  209,  299,  288,  299,  299,  844,
      480,  299,  843,  299,  374,  277,  931,  374,  277,  842,
      411,  277,  479,  277,  366,  277,  277,  366,  277,  277,
      209,  209,  209,  209,  209,  209,  278,  278,  932,  933,
      299,  934,  299,  929,  278,  278,  278,  278,  278,  278,
      277,  299,  935,  299,  299,  488,  299,  277,  487,  936,
      562,  277,  937,  564,  277,  327,  327,  930,  277,  277,
      938,  277,  277,  939,  940,  278,  278,  278,  278,  278,
      278,  285,  285,  289,  941,  289,  942,  374,  374,  286,
      287,  286,  287,  286,  286,  943,  288,  366,  366,  289,

      509,  289,  944,  288,  548,  549,  945,  946,  374,  947,
      948,  949,  290,  289,  950,  289,  951,  952,  366,  953,
      286,  287,  286,  287,  286,  286,  299,  288,  299,  289,
      954,  289,  955,  288,  956,  957,  277,  958,  959,  290,
      292,  292,  637,  277,  277,  960,  961,  962,  292,  293,
      292,  294,  292,  292,  565,  295,  963,  964,  299,  296,
      299,  965,  295,  966,  967,  645,  297,  298,  277,  968,
      969,  295,  970,  971,  972,  277,  277,  973,  974,  292,
      299,  292,  299,  292,  292,  975,  295,  976,  977,  978,
      979,  980,  295,  981,  982,  983,  984,  985,  295,  326,

      326,  986,  987,  988,  989,  990,  991,  326,  326,  326,
      326,  326,  326,  992,  993,  411,  411,  994,  995,  996,
      997,  998,  999, 1000, 1001, 1002, 1003, 1004, 1005, 1007,
     1008, 1009, 1010, 1006, 1011, 1012, 1013, 1014,  326,  326,
      326,  326,  326,  326,  363,  363, 1015, 1016, 1017, 1018,
     1019, 1020,  363,  363,  363,  363,  363,  363, 1021, 1022,
     1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032,
     1033, 1035, 1036, 1037, 1038, 1034, 1039, 1040, 1041, 1042,
     1043, 1044, 1045,  363,  363,  363,  363,  363,  363,  367,
      367, 1046, 1047, 1048, 1049, 1050, 1051,  367,  367,  367,

      367,  367,  367, 1052, 1053, 1054, 1055, 1056, 1057, 1058,
     1059, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,
     1070, 1071, 1072, 1060, 1073, 1074, 1075, 1076,  367,  367,
      367,  367,  367,  367,  372,  372, 1077, 1078, 1080, 1081,
     1082, 1083,  372,  373,  372,  374,  372,  372, 1084,  375,
     1079, 1085, 1086,  376, 1087, 1089,  375, 1090, 1091, 1092,
     1093, 1094, 1088, 1095, 1096,  375, 1097, 1098, 1099, 1100,
     1103, 1101, 1104,  372,  374,  372,  374,  372,  372, 1102,
      375, 1105, 1106, 1107, 1108, 1109,  375, 1110, 1111, 1112,
     1113, 1114,  375,  209,  209, 1115, 1116, 1117, 1118, 1119,

     1120,  209,  209,  209,  209,  209,  209, 1121, 1122, 1123,
     1124,  218, 1125,  218, 1126, 1127, 1128, 1129, 1130, 1131,
     1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141,
     1142, 1143,  209,  209,  209,  209,  209,  209, 1144, 1145,
     1146,  218, 1147,  218,  278,  278, 1148, 1149, 1150, 1151,
     1152, 1153,  278,  278,  278,  278,  278,  278, 1154, 1155,
     1156, 1157,  476, 1158,  476, 1159, 1160, 1161, 1162, 1163,
     1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173,
     1174, 1175, 1176,  278,  278,  278,  278,  278,  278, 1177,
     1178, 1179,  476, 1180,  476,  363,  363, 1181, 1182, 1183,

     1184, 1185, 1186,  363,  363,  363,  363,  363,  363, 1187,
     1188, 1189, 1190,  544, 1191,  544, 1192, 1196, 1197, 1198,
     1199, 1200, 1201, 1193, 1202, 1205, 1206, 1194, 1203, 1207,
     1208, 1209, 1210, 1211,  363,  363,  363,  363,  363,  363,
     1195, 1204, 1212,  544, 1213,  544,  367,  367, 1214, 1215,
     1216, 1217, 1218, 1219,  367,  367,  367,  367,  367,  367,
     1220, 1221, 1222, 1223,  545, 1224,  545, 1225, 1226, 1227,
     1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237,
     1238, 1239, 1240, 1241, 1242,  367,  367,  367,  367,  367,
      367, 1243, 1244, 1245,  545, 1246,  545,  825,  825, 1247,

      825,  825,  825, 1248,  825,  825,  825,  825,  825, 1249,
      825, 1250, 1251, 1252, 1253, 1254, 1255,  825,  825,  825,
      825,  825, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263,
     1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273,
     1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283,
     1284,  825, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292,
     1293, 1294, 1295, 1296, 1297, 1298, 1299,  478,  912,  911,
      910,  909,  908,  907,  825,  825,  825,  836,  836,  906,
      836,  836,  836,  905,  836,  836,  836,  836,  836,  904,
      836,  903,  902,  901,  900,  899,  898,  836,  836,  836,

      836,  836,  897,  896,  895,  894,  893,  892,  891,  890,
      889,  888,  887,  886,  885,  884,  883,  882,  881,  880,
      879,  878,  877,  876,  875,  874,  873,  872,  871,  870,
      869,  836,  868,  867,  866,  865,  864,  863,  862,  861,
      860,  859,  858,  857,  856,  855,  854,  853,  852,  851,
      850,  849,  848,  847,  836,  836,  836,  825,  825,  846,
      825,  825,  825,  845,  825,  825,  825,  825,  825,  841,
      825,  840,  839,  838,  835,  834,  833,  825,  825,  825,
      825,  825,  832,  831,  830,  829,  828,  827,  824,  823,
      822,  821,  820,  819,  818,  817,  816,  815,  814,  813,

      812,  811,  810,  809,  808,  807,  806,  805,  804,  803,
      802,  825,  801,  800,  799,  798,  797,  796,  795,  794,
      793,  792,  791,  790,  789,  788,  787,  786,  785,  784,
      783,  782,  781,  780,  825,  825,  825,  836,  836,  779,
      836,  836,  836,  778,  836,  836,  836,  836,  836,  777,
      836,  776,  775,  774,  773,  772,  771,  836,  836,  836,
      836,  836,  770,  769,  768,  767,  766,  765,  764,  763,
      762,  761,  760,  759,  758,  757,  756,  755,  754,  753,
      752,  751,  750,  749,  748,  747,  746,  745,  744,  743,
      742,  836,  741,  740,  739,  738,  737,  736,  735,  734,

      733,  732,  731,  730,  729,  728,  724,  723,  722,  721,
      720,  719,  718,  717,  836,  836,  836,   20,   20,   20,
       20,   20,   20,   20,   20,   20,   20,   20,  146,  146,
      146,  146,  146,  146,  146,  146,  146,  146,  146,   21,
       21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
      194,  198,  198,  198,  198,  198,  198,  198,  198,  198,
      198,  198,  206,  206,  206,  206,  206,  206,  206,  206,
      206,  206,  206,  208,  208,  208,  208,  208,  208,  208,
      208,  277,  716,  277,  277,  277,  277,  277,  277,  362,

      715,  714,  713,  712,  362,  362,  362,  364,  364,  364,
      364,  364,  364,  364,  364,  364,  364,  364,  366,  709,
      366,  708,  366,  366,  366,  366,  368,  707,  368,  368,
      368,  368,  368,  368,  368,  368,  368,  371,  706,  371,
      371,  371,  371,  371,  371,  371,  371,  371,  408,  705,
      408,  408,  408,  408,  408,  408,  408,  408,  408,  409,
      704,  409,  410,  410,  410,  703,  702,  410,  410,  701,
      410,  477,  700,  477,  477,  477,  477,  477,  477,  826,
      699,  826,  826,  826,  826,  826,  826,  826,  826,  826,
      837,  698,  837,  837,  837,  837,  837,  837,  837,  837,

      837,  825,  697,  825,  825,  825,  825,  825,  825,  825,
      825,  825,  836,  696,  836,  836,  836,  836,  836,  836,
      836,  836,  836,  693,  692,  691,  690,  689,  688,  687,
      686,  685,  684,  683,  682,  681,  680,  679,  678,  677,
      676,  675,  674,  673,  672,  671,  670,  669,  645,  668,
      667,  666,  637,  665,  664,  663,  662,  661,  660,  659,
      658,  657,  656,  655,  654,  653,  652,  651,  650,  649,
      648,  647,  646,  644,  643,  642,  641,  640,  639,  638,
      636,  635,  634,  633,  632,  631,  630,  629,  628,  627,
      626,  625,  624,  623,  622,  621,  620,  619,  618,  617,

      616,  615,  614,  613,  612,  611,  610,  609,  608,  607,
      606,  605,  604,  603,  602,  601,  600,  599,  598,  597,
      596,  595,  594,  593,  592,  591,  590,  589,  588,  587,
      586,  585,  584,  583,  582,  581,  410,  411,  407,  577,
      576,  575,  574,  573,  572,  571,  570,  569,  568,  567,
      566,  563,  561,  560,  559,  558,  557,  556,  555,  554,
      553,  552,  551,  550,  547,  365,  543,  542,  509,  541,
      540,  539,  538,  537,  536,  535,  532,  531,  530,  529,
      527,  521,  520,  519,  518,  516,  515,  487,  514,  512,
      511,  479,  510,  508,  507,  506,  505,  504,  503,  502,

      501,  498,  497,  496,  495,  494,  493,  492,  491,  490,
      489,  486,  485,  484,  481,  475,  474,  473,  472,  471,
      470,  469,  468,  467,  466,  465,  464,  463,  462,  458,
      457,  456,  455,  454,  453,  452,  448,  447,  446,  443,
      442,  437,  436,  435,  434,  433,  430,  429,  428,  427,
      426,  423,  422,  421,  420,  419,  418,  417,  416,  415,
      207,  204,  411,  283,  407,  406,  403,  402,  401,  390,
      387,  386,  385,  291,  370,  281,  280,  369,  365,  361,
      360,  359,  358,  357,  350,  342,  341,  325,  319,  309,
      308,  307,  291,  280,  279,  207,  205,  204,  274,  273,

      272,  271,  270,  269,  259,  246,  245,  244,  243,  222,
      214,  213,  212,  207,  205,  204, 1300,   19, 1300, 1300,
     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300

    } ;

static yyconst short int yy_chk[2300] =
    {   0,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    5,    5,    5,    5,    5,    5,    5,    5,    5,
        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,

        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
        5,    5,    7,   28,   56,   13,   13,   36,   56,   13,
       41,   41,  173,    7,    7,   14,   14,   28,   36,   14,
       13,    7,    7,    7,    7,    7,    7,  173,    7,    7,
       14,   90,    7,    7,    7,    7,    7,    7,   47,    7,

        7,   47,    7,   43,   43,   46,   48,   71,   46,   49,
       48,  297,    7,    7,    7,    7,    7,    7,   90,   49,
       86,   46,    7,  297,   48,    7,    9,    9,    9,    9,
        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
        9,   13,  816,    9,    9,    9,    9,    9,    9,    9,
        9,   14,   38,   38,   50,   55,   45,   50,   45,   57,
       50,   59,   80,   71,   86,   55,   45,   93,   93,   57,
       38,   59,   38,   45,   45,  817,   80,    9,   58,    9,
        9,   88,   58,   95,   95,   58,   58,  106,  107,  108,
      109,  127,   88,  578,  109,  117,  107,  106,  109,  108,

       38,  127,   38,    9,    9,    9,   10,   10,   10,   10,
       10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
       10,   37,   37,   10,   10,   10,   10,   10,   10,   10,
       10,  111,  169,   61,  578,  111,   61,   61,  169,   37,
      158,   37,  111,   61,   61,   61,  818,  111,   61,   61,
      126,  117,   37,   61,  126,  285,   98,   10,   98,   10,
       10,  124,  125,   98,  124,  125,   98,  158,  126,   37,
      131,   37,  128,   98,   98,  128,  182,  124,  128,   37,
      131,  182,  285,   10,   10,   10,   11,   11,   11,   11,
       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,

       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
       11,   11,   11,   11,   11,   11,   11,   15,   15,   15,
       15,   15,   15,  201,   15,   15,   15,   15,   15,   15,
       15,   15,  819,   15,   15,   15,   15,   15,   15,   15,
       15,   15,   99,  132,   99,  100,  100,  132,  100,  100,

      134,  132,   99,  186,  134,   99,  100,  134,  134,   99,
       99,  820,  133,  100,  100,  101,  186,  101,   15,   15,
       15,   15,  133,  201,  102,  101,  102,  315,  135,  164,
      164,  199,  101,  101,  102,  344,  315,  101,  135,  822,
      164,  102,  102,  344,   15,   15,   15,   15,   16,   16,
       16,   16,   16,   16,  823,   16,   16,   16,   16,   16,
       16,   16,   16,  239,   16,   16,   16,   16,   16,   16,
       16,   16,   16,  114,  166,  114,  123,  414,  123,  178,
      239,  165,  165,  114,  166,  413,  123,  199,  165,  178,
      114,  114,  165,  123,  123,  233,  200,  233,  167,   16,

       16,   16,   16,  137,  114,  824,  137,  137,  167,  178,
      167,  168,  828,  137,  137,  137,  414,  830,  137,  137,
      167,  168,  177,  137,  168,   16,   16,   16,   16,   17,
       17,   17,  177,   17,   17,  413,   17,   17,   17,   17,
      831,   17,   17,  200,  179,   17,   17,   17,   17,   17,
       17,   17,   17,  177,  179,  121,  121,  181,  219,  248,
      219,  252,  177,  245,  252,  337,  245,  181,  245,  326,
      252,  326,  248,  121,  179,  121,  245,  260,  332,  260,
      332,  179,  337,  260,  343,  412,  121,  579,  219,   17,
      219,   17,  547,  346,  180,   17,  346,  343,  547,  326,

      181,  326,  346,  121,  180,  121,   17,   17,   17,   17,
       18,   18,   18,  121,   18,   18,  833,   18,   18,   18,
       18,  834,   18,   18,  835,  579,   18,   18,   18,   18,
       18,   18,   18,   18,  122,  122,  180,  372,  563,  412,
      292,  374,  292,  180,  563,  217,  217,  372,  286,  286,
      292,  374,  122,  478,  122,  478,  342,  292,  292,  342,
      580,  342,  727,  217,  373,  217,  286,  725,  286,  342,
       18,  351,   18,  351,  373,  726,   18,  351,  839,  286,
      841,  373,  122,  478,  122,  478,  844,   18,   18,   18,
       18,   26,   26,  217,  842,  217,  286,  580,  286,   26,

       26,   26,   26,   26,   26,  293,  286,  293,  294,  727,
      294,  299,  726,  299,  391,  293,  845,  393,  294,  725,
      843,  299,  293,  293,  391,  294,  294,  393,  299,  299,
       26,   26,   26,   26,   26,   26,   78,   78,  846,  847,
      303,  848,  303,  842,   78,   78,   78,   78,   78,   78,
      303,  304,  849,  304,  324,  304,  324,  303,  303,  850,
      391,  304,  851,  393,  324,  327,  327,  843,  304,  304,
      853,  324,  324,  854,  855,   78,   78,   78,   78,   78,
       78,   89,   89,  327,  857,  327,  859,  377,  378,   89,
       89,   89,   89,   89,   89,  860,   89,  377,  378,   89,

      324,   89,  862,   89,  377,  378,  864,  865,  394,  866,
      867,  868,   89,  327,  869,  327,  870,  871,  394,  872,
       89,   89,   89,   89,   89,   89,  480,   89,  480,   89,
      873,   89,  874,   89,  877,  878,  480,  879,  880,   89,
       97,   97,  480,  480,  480,  882,  883,  884,   97,   97,
       97,   97,   97,   97,  394,   97,  885,  887,  488,   97,
      488,  888,   97,  890,  892,  488,   97,   97,  488,  893,
      894,   97,  895,  896,  897,  488,  488,  898,  899,   97,
       97,   97,   97,   97,   97,  900,   97,  901,  903,  904,
      905,  907,   97,  908,  909,  910,  911,  912,   97,  120,

      120,  913,  916,  917,  918,  922,  923,  120,  120,  120,
      120,  120,  120,  924,  928,  929,  930,  931,  932,  933,
      934,  935,  937,  938,  940,  941,  942,  944,  945,  947,
      948,  949,  950,  945,  951,  952,  955,  957,  120,  120,
      120,  120,  120,  120,  143,  143,  958,  959,  960,  961,
      963,  964,  143,  143,  143,  143,  143,  143,  965,  966,
      968,  969,  970,  972,  973,  974,  975,  976,  977,  979,
      981,  983,  984,  985,  988,  981,  989,  990,  991,  992,
      993,  995,  996,  143,  143,  143,  143,  143,  143,  150,
      150,  997,  998,  999, 1000, 1001, 1003,  150,  150,  150,

      150,  150,  150, 1004, 1005, 1006, 1007, 1008, 1010, 1011,
     1012, 1015, 1017, 1018, 1019, 1021, 1022, 1023, 1024, 1025,
     1028, 1029, 1030, 1012, 1031, 1032, 1033, 1034,  150,  150,
      150,  150,  150,  150,  163,  163, 1035, 1037, 1045, 1046,
     1047, 1048,  163,  163,  163,  163,  163,  163, 1049,  163,
     1037, 1050, 1051,  163, 1052, 1053,  163, 1054, 1055, 1056,
     1057, 1058, 1052, 1059, 1060,  163, 1061, 1063, 1064, 1065,
     1067, 1066, 1068,  163,  163,  163,  163,  163,  163, 1066,
      163, 1069, 1070, 1071, 1072, 1073,  163, 1074, 1075, 1076,
     1077, 1078,  163,  209,  209, 1079, 1080, 1081, 1082, 1083,

     1084,  209,  209,  209,  209,  209,  209, 1085, 1086, 1089,
     1090,  209, 1091,  209, 1093, 1094, 1095, 1096, 1097, 1098,
     1099, 1100, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110,
     1111, 1112,  209,  209,  209,  209,  209,  209, 1114, 1115,
     1116,  209, 1117,  209,  278,  278, 1118, 1119, 1120, 1121,
     1124, 1125,  278,  278,  278,  278,  278,  278, 1126, 1127,
     1128, 1129,  278, 1130,  278, 1131, 1132, 1134, 1135, 1136,
     1137, 1138, 1139, 1140, 1141, 1143, 1144, 1145, 1147, 1148,
     1150, 1151, 1152,  278,  278,  278,  278,  278,  278, 1153,
     1154, 1155,  278, 1156,  278,  363,  363, 1158, 1159, 1161,

     1162, 1163, 1164,  363,  363,  363,  363,  363,  363, 1166,
     1167, 1168, 1169,  363, 1170,  363, 1172, 1174, 1175, 1177,
     1179, 1180, 1181, 1173, 1182, 1183, 1185, 1173, 1182, 1186,
     1187, 1188, 1189, 1191,  363,  363,  363,  363,  363,  363,
     1173, 1182, 1192,  363, 1193,  363,  367,  367, 1194, 1195,
     1196, 1197, 1200, 1202,  367,  367,  367,  367,  367,  367,
     1203, 1204, 1208, 1209,  367, 1210,  367, 1211, 1212, 1213,
     1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223,
     1224, 1225, 1226, 1227, 1229,  367,  367,  367,  367,  367,
      367, 1230, 1231, 1232,  367, 1233,  367,  701,  701, 1235,

      701,  701,  701, 1236,  701,  701,  701,  701,  701, 1237,
      701, 1238, 1239, 1240, 1241, 1242, 1243,  701,  701,  701,
      701,  701, 1244, 1246, 1247, 1248, 1249, 1250, 1252, 1254,
     1255, 1256, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265,
     1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275,
     1276,  701, 1277, 1279, 1280, 1281, 1282, 1284, 1285, 1287,
     1288, 1290, 1291, 1293, 1295, 1296, 1297, 1318,  814,  812,
      811,  809,  808,  807,  701,  701,  701,  717,  717,  806,
      717,  717,  717,  804,  717,  717,  717,  717,  717,  803,
      717,  802,  800,  798,  797,  796,  795,  717,  717,  717,

      717,  717,  794,  793,  792,  791,  790,  789,  788,  787,
      786,  785,  784,  783,  781,  779,  778,  776,  775,  773,
      772,  771,  770,  769,  768,  767,  766,  764,  763,  762,
      760,  717,  759,  758,  757,  755,  754,  753,  752,  751,
      750,  749,  748,  747,  746,  744,  743,  741,  739,  738,
      735,  734,  733,  732,  717,  717,  717,  826,  826,  730,
      826,  826,  826,  728,  826,  826,  826,  826,  826,  724,
      826,  723,  721,  720,  716,  715,  711,  826,  826,  826,
      826,  826,  710,  709,  708,  707,  705,  704,  700,  699,
      695,  694,  693,  692,  691,  690,  689,  688,  687,  686,

      685,  684,  682,  681,  680,  679,  678,  676,  675,  674,
      673,  826,  672,  670,  669,  668,  667,  665,  664,  663,
      662,  661,  660,  659,  658,  657,  656,  655,  654,  652,
      651,  648,  647,  646,  826,  826,  826,  837,  837,  645,
      837,  837,  837,  644,  837,  837,  837,  837,  837,  642,
      837,  640,  639,  638,  636,  635,  634,  837,  837,  837,
      837,  837,  633,  632,  631,  630,  629,  628,  627,  626,
      625,  624,  623,  622,  621,  619,  618,  617,  616,  615,
      614,  613,  612,  611,  609,  607,  606,  604,  603,  601,
      600,  837,  599,  598,  596,  595,  594,  593,  592,  591,

      590,  588,  586,  584,  583,  581,  577,  576,  575,  574,
      573,  572,  571,  570,  837,  837,  837, 1301, 1301, 1301,
     1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1302, 1302,
     1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1303,
     1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303,
     1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304,
     1304, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305,
     1305, 1305, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306,
     1306, 1306, 1306, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
     1307, 1308,  569, 1308, 1308, 1308, 1308, 1308, 1308, 1309,

      568,  566,  565,  564, 1309, 1309, 1309, 1310, 1310, 1310,
     1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1311,  562,
     1311,  561, 1311, 1311, 1311, 1311, 1312,  560, 1312, 1312,
     1312, 1312, 1312, 1312, 1312, 1312, 1312, 1313,  559, 1313,
     1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1314,  558,
     1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1315,
      557, 1315, 1316, 1316, 1316,  556,  555, 1316, 1316,  554,
     1316, 1317,  553, 1317, 1317, 1317, 1317, 1317, 1317, 1319,
      552, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319,
     1320,  550, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,

     1320, 1321,  549, 1321, 1321, 1321, 1321, 1321, 1321, 1321,
     1321, 1321, 1322,  548, 1322, 1322, 1322, 1322, 1322, 1322,
     1322, 1322, 1322,  546,  541,  540,  539,  538,  537,  536,
      535,  534,  533,  532,  531,  530,  529,  528,  527,  525,
      524,  523,  522,  520,  519,  518,  517,  516,  515,  514,
      513,  512,  511,  510,  509,  508,  507,  506,  505,  504,
      503,  502,  501,  500,  499,  498,  495,  494,  493,  492,
      491,  490,  489,  487,  486,  485,  484,  483,  482,  481,
      479,  475,  472,  471,  470,  469,  468,  467,  466,  465,
      464,  463,  462,  461,  460,  459,  458,  457,  456,  455,

      454,  453,  452,  451,  450,  449,  448,  447,  445,  444,
      443,  442,  441,  440,  439,  438,  436,  435,  434,  433,
      432,  431,  430,  429,  428,  427,  426,  425,  424,  423,
      422,  421,  420,  419,  418,  417,  411,  410,  407,  406,
      405,  404,  403,  402,  401,  400,  399,  398,  397,  396,
      395,  392,  390,  389,  388,  387,  386,  385,  384,  383,
      382,  381,  380,  379,  376,  364,  361,  360,  359,  358,
      357,  356,  355,  354,  353,  352,  350,  349,  348,  347,
      345,  341,  340,  339,  338,  336,  335,  334,  333,  331,
      330,  329,  325,  323,  322,  321,  320,  319,  318,  317,

      316,  314,  313,  312,  311,  310,  309,  308,  307,  306,
      305,  302,  301,  300,  296,  274,  273,  272,  271,  270,
      269,  268,  267,  266,  265,  264,  263,  262,  261,  259,
      258,  257,  256,  255,  254,  253,  251,  250,  249,  247,
      246,  244,  243,  242,  241,  240,  238,  237,  236,  235,
      234,  232,  231,  230,  228,  227,  226,  225,  224,  220,
      206,  204,  198,  192,  189,  187,  185,  184,  183,  174,
      172,  171,  170,  161,  156,  154,  152,  151,  149,  142,
      141,  140,  139,  138,  136,  130,  129,  115,  110,  105,
      104,  103,   94,   84,   83,   77,   76,   75,   69,   68,

       67,   66,   63,   62,   60,   54,   53,   52,   51,   42,
       34,   32,   31,   25,   24,   22,   19, 1300, 1300, 1300,
     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300

    } ;

static yy_state_type yy_last_accepting_state;
static char *yy_last_accepting_cpos;

/* The intent behind this definition is that it'll catch
 * any uses of REJECT which flex missed.
 */
#define REJECT reject_used_but_not_detected
#define yymore() yymore_used_but_not_detected
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
char *yytext;
#line 1 "ldlex.l"
#define INITIAL 0
#line 2 "ldlex.l"

/* Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
   2000, 2001, 2002, 2003, 2004, 2005  Free Software Foundation, Inc.

   This file is part of GLD, the Gnu Linker.

   GLD is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2, or (at your option)
   any later version.

   GLD is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with GLD; see the file COPYING.  If not, write to the Free
   Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
   02110-1301, USA.  */

/*
This was written by steve chamberlain
                    sac@cygnus.com
*/


#include <stdio.h>

#include "bfd.h"
#include "sysdep.h"
#include "safe-ctype.h"
#include "bfdlink.h"
#include "ld.h"
#include "ldmisc.h"
#include "ldexp.h"
#include "ldlang.h"
#include <ldgram.h>
#include "ldfile.h"
#include "ldlex.h"
#include "ldmain.h"
#include "libiberty.h"

/* The type of top-level parser input.
   yylex and yyparse (indirectly) both check this.  */
input_type parser_input;

/* Line number in the current input file.
   (FIXME Actually, it doesn't appear to get reset for each file?)  */
unsigned int lineno = 1;

/* The string we are currently lexing, or NULL if we are reading a
   file.  */
const char *lex_string = NULL;

/* Support for flex reading from more than one input file (stream).
   `include_stack' is flex's input state for each open file;
   `file_name_stack' is the file names.  `lineno_stack' is the current
   line numbers.

   If `include_stack_ptr' is 0, we haven't started reading anything yet.
   Otherwise, stack elements 0 through `include_stack_ptr - 1' are valid.  */

#undef YY_INPUT
#define YY_INPUT(buf,result,max_size) yy_input (buf, &result, max_size)

#define YY_NO_UNPUT

#define MAX_INCLUDE_DEPTH 10
static YY_BUFFER_STATE include_stack[MAX_INCLUDE_DEPTH];
static const char *file_name_stack[MAX_INCLUDE_DEPTH];
static unsigned int lineno_stack[MAX_INCLUDE_DEPTH];
static unsigned int include_stack_ptr = 0;
static int vers_node_nesting = 0;

static void yy_input (char *, int *, int);
static void comment (void);
static void lex_warn_invalid (char *where, char *what);

/* STATES
	EXPRESSION	definitely in an expression
	SCRIPT		definitely in a script
	BOTH		either EXPRESSION or SCRIPT
	DEFSYMEXP	in an argument to -defsym
        MRI             in an MRI script
	VERS_START	starting a Sun style mapfile
	VERS_SCRIPT	a Sun style mapfile
	VERS_NODE	a node within a Sun style mapfile
*/
#define RTOKEN(x)  {  yylval.token = x; return x; }

/* Some versions of flex want this.  */
#ifndef yywrap
int yywrap (void) { return 1; }
#endif
#define SCRIPT 1

#define EXPRESSION 2

#define BOTH 3

#define DEFSYMEXP 4

#define MRI 5

#define VERS_START 6

#define VERS_SCRIPT 7

#define VERS_NODE 8

#line 1422 "ldlex.c"

/* Macros after this point can all be overridden by user definitions in
 * section 1.
 */

#ifndef YY_SKIP_YYWRAP
#ifdef __cplusplus
extern "C" int yywrap YY_PROTO(( void ));
#else
extern int yywrap YY_PROTO(( void ));
#endif
#endif

#ifndef YY_NO_UNPUT
static void yyunput YY_PROTO(( int c, char *buf_ptr ));
#endif

#ifndef yytext_ptr
static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
#endif

#ifdef YY_NEED_STRLEN
static int yy_flex_strlen YY_PROTO(( yyconst char * ));
#endif

#ifndef YY_NO_INPUT
#ifdef __cplusplus
static int yyinput YY_PROTO(( void ));
#else
static int input YY_PROTO(( void ));
#endif
#endif

#if YY_STACK_USED
static int yy_start_stack_ptr = 0;
static int yy_start_stack_depth = 0;
static int *yy_start_stack = 0;
#ifndef YY_NO_PUSH_STATE
static void yy_push_state YY_PROTO(( int new_state ));
#endif
#ifndef YY_NO_POP_STATE
static void yy_pop_state YY_PROTO(( void ));
#endif
#ifndef YY_NO_TOP_STATE
static int yy_top_state YY_PROTO(( void ));
#endif

#else
#define YY_NO_PUSH_STATE 1
#define YY_NO_POP_STATE 1
#define YY_NO_TOP_STATE 1
#endif

#ifdef YY_MALLOC_DECL
YY_MALLOC_DECL
#else
#if __STDC__
#ifndef __cplusplus
#include <stdlib.h>
#endif
#else
/* Just try to get by without declaring the routines.  This will fail
 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
 * or sizeof(void*) != sizeof(int).
 */
#endif
#endif

/* Amount of stuff to slurp up with each read. */
#ifndef YY_READ_BUF_SIZE
#define YY_READ_BUF_SIZE 8192
#endif

/* Copy whatever the last rule matched to the standard output. */

#ifndef ECHO
/* This used to be an fputs(), but since the string might contain NUL's,
 * we now use fwrite().
 */
#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
#endif

/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
 * is returned in "result".
 */
#ifndef YY_INPUT
#define YY_INPUT(buf,result,max_size) \
	if ( yy_current_buffer->yy_is_interactive ) \
		{ \
		int c = '*', n; \
		for ( n = 0; n < max_size && \
			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
			buf[n] = (char) c; \
		if ( c == '\n' ) \
			buf[n++] = (char) c; \
		if ( c == EOF && ferror( yyin ) ) \
			YY_FATAL_ERROR( "input in flex scanner failed" ); \
		result = n; \
		} \
	else \
		{ \
		errno=0; \
		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
			{ \
			if( errno != EINTR) \
				{ \
				YY_FATAL_ERROR( "input in flex scanner failed" ); \
				break; \
				} \
			errno=0; \
			clearerr(yyin); \
			} \
		}
#endif

/* No semi-colon after return; correct usage is to write "yyterminate();" -
 * we don't want an extra ';' after the "return" because that will cause
 * some compilers to complain about unreachable statements.
 */
#ifndef yyterminate
#define yyterminate() return YY_NULL
#endif

/* Number of entries by which start-condition stack grows. */
#ifndef YY_START_STACK_INCR
#define YY_START_STACK_INCR 25
#endif

/* Report a fatal error. */
#ifndef YY_FATAL_ERROR
#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
#endif

/* Default declaration of generated scanner - a define so the user can
 * easily add parameters.
 */
#ifndef YY_DECL
#define YY_DECL int yylex YY_PROTO(( void ))
#endif

/* Code executed at the beginning of each rule, after yytext and yyleng
 * have been set up.
 */
#ifndef YY_USER_ACTION
#define YY_USER_ACTION
#endif

/* Code executed at the end of each rule. */
#ifndef YY_BREAK
#define YY_BREAK break;
#endif

#define YY_RULE_SETUP \
	YY_USER_ACTION

YY_DECL
	{
	register yy_state_type yy_current_state;
	register char *yy_cp, *yy_bp;
	register int yy_act;

#line 123 "ldlex.l"


  if (parser_input != input_selected)
    {
      /* The first token of the input determines the initial parser state.  */
      input_type t = parser_input;
      parser_input = input_selected;
      switch (t)
	{
	case input_script: return INPUT_SCRIPT; break;
	case input_mri_script: return INPUT_MRI_SCRIPT; break;
	case input_version_script: return INPUT_VERSION_SCRIPT; break;
	case input_defsym: return INPUT_DEFSYM; break;
	default: abort ();
	}
    }

#line 1602 "ldlex.c"

	if ( yy_init )
		{
		yy_init = 0;

#ifdef YY_USER_INIT
		YY_USER_INIT;
#endif

		if ( ! yy_start )
			yy_start = 1;	/* first start state */

		if ( ! yyin )
			yyin = stdin;

		if ( ! yyout )
			yyout = stdout;

		if ( ! yy_current_buffer )
			yy_current_buffer =
				yy_create_buffer( yyin, YY_BUF_SIZE );

		yy_load_buffer_state();
		}

	while ( 1 )		/* loops until end-of-file is reached */
		{
		yy_cp = yy_c_buf_p;

		/* Support of yytext. */
		*yy_cp = yy_hold_char;

		/* yy_bp points to the position in yy_ch_buf of the start of
		 * the current run.
		 */
		yy_bp = yy_cp;

		yy_current_state = yy_start;
yy_match:
		do
			{
			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
			if ( yy_accept[yy_current_state] )
				{
				yy_last_accepting_state = yy_current_state;
				yy_last_accepting_cpos = yy_cp;
				}
			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
				{
				yy_current_state = (int) yy_def[yy_current_state];
				if ( yy_current_state >= 1301 )
					yy_c = yy_meta[(unsigned int) yy_c];
				}
			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
			++yy_cp;
			}
		while ( yy_base[yy_current_state] != 2218 );

yy_find_action:
		yy_act = yy_accept[yy_current_state];
		if ( yy_act == 0 )
			{ /* have to back up */
			yy_cp = yy_last_accepting_cpos;
			yy_current_state = yy_last_accepting_state;
			yy_act = yy_accept[yy_current_state];
			}

		YY_DO_BEFORE_ACTION;


do_action:	/* This label is used only to access EOF actions. */


		switch ( yy_act )
	{ /* beginning of action switch */
			case 0: /* must back up */
			/* undo the effects of YY_DO_BEFORE_ACTION */
			*yy_cp = yy_hold_char;
			yy_cp = yy_last_accepting_cpos;
			yy_current_state = yy_last_accepting_state;
			goto yy_find_action;

case 1:
YY_RULE_SETUP
#line 140 "ldlex.l"
{ comment (); }
	YY_BREAK
case 2:
YY_RULE_SETUP
#line 143 "ldlex.l"
{ RTOKEN('-');}
	YY_BREAK
case 3:
YY_RULE_SETUP
#line 144 "ldlex.l"
{ RTOKEN('+');}
	YY_BREAK
case 4:
YY_RULE_SETUP
#line 145 "ldlex.l"
{ yylval.name = xstrdup (yytext); return NAME; }
	YY_BREAK
case 5:
YY_RULE_SETUP
#line 146 "ldlex.l"
{ RTOKEN('='); }
	YY_BREAK
case 6:
YY_RULE_SETUP
#line 148 "ldlex.l"
{
  				yylval.integer = bfd_scan_vma (yytext + 1, 0, 16);
				yylval.bigint.str = NULL;
				return INT;
			}
	YY_BREAK
case 7:
YY_RULE_SETUP
#line 154 "ldlex.l"
{
				   int ibase ;
				   switch (yytext[yyleng - 1]) {
				    case 'X':
				    case 'x':
				    case 'H':
				    case 'h':
				     ibase = 16;
				     break;
				    case 'O':
				    case 'o':
				     ibase = 8;
				     break;
				    case 'B':
				    case 'b':
				     ibase = 2;
				     break;
				    default:
				     ibase = 10;
				   }
				   yylval.integer = bfd_scan_vma (yytext, 0,
								  ibase);
				   yylval.bigint.str = NULL;
				   return INT;
				 }
	YY_BREAK
case 8:
YY_RULE_SETUP
#line 179 "ldlex.l"
{
				  char *s = yytext;
				  int ibase = 0;

				  if (*s == '$')
				    {
				      ++s;
				      ibase = 16;
				    }
				  yylval.integer = bfd_scan_vma (s, 0, ibase);
				  yylval.bigint.str = NULL;
				  if (yytext[yyleng - 1] == 'M'
				      || yytext[yyleng - 1] == 'm')
				    {
				      yylval.integer *= 1024 * 1024;
				    }
				  else if (yytext[yyleng - 1] == 'K'
				      || yytext[yyleng - 1]=='k')
				    {
				      yylval.integer *= 1024;
				    }
				  else if (yytext[0] == '0'
					   && (yytext[1] == 'x'
					       || yytext[1] == 'X'))
				    {
				      yylval.bigint.str = xstrdup (yytext + 2);
				    }
				  return INT;
				}
	YY_BREAK
case 9:
YY_RULE_SETUP
#line 208 "ldlex.l"
{ RTOKEN(']');}
	YY_BREAK
case 10:
YY_RULE_SETUP
#line 209 "ldlex.l"
{ RTOKEN('[');}
	YY_BREAK
case 11:
YY_RULE_SETUP
#line 210 "ldlex.l"
{ RTOKEN(LSHIFTEQ);}
	YY_BREAK
case 12:
YY_RULE_SETUP
#line 211 "ldlex.l"
{ RTOKEN(RSHIFTEQ);}
	YY_BREAK
case 13:
YY_RULE_SETUP
#line 212 "ldlex.l"
{ RTOKEN(OROR);}
	YY_BREAK
case 14:
YY_RULE_SETUP
#line 213 "ldlex.l"
{ RTOKEN(EQ);}
	YY_BREAK
case 15:
YY_RULE_SETUP
#line 214 "ldlex.l"
{ RTOKEN(NE);}
	YY_BREAK
case 16:
YY_RULE_SETUP
#line 215 "ldlex.l"
{ RTOKEN(GE);}
	YY_BREAK
case 17:
YY_RULE_SETUP
#line 216 "ldlex.l"
{ RTOKEN(LE);}
	YY_BREAK
case 18:
YY_RULE_SETUP
#line 217 "ldlex.l"
{ RTOKEN(LSHIFT);}
	YY_BREAK
case 19:
YY_RULE_SETUP
#line 218 "ldlex.l"
{ RTOKEN(RSHIFT);}
	YY_BREAK
case 20:
YY_RULE_SETUP
#line 219 "ldlex.l"
{ RTOKEN(PLUSEQ);}
	YY_BREAK
case 21:
YY_RULE_SETUP
#line 220 "ldlex.l"
{ RTOKEN(MINUSEQ);}
	YY_BREAK
case 22:
YY_RULE_SETUP
#line 221 "ldlex.l"
{ RTOKEN(MULTEQ);}
	YY_BREAK
case 23:
YY_RULE_SETUP
#line 222 "ldlex.l"
{ RTOKEN(DIVEQ);}
	YY_BREAK
case 24:
YY_RULE_SETUP
#line 223 "ldlex.l"
{ RTOKEN(ANDEQ);}
	YY_BREAK
case 25:
YY_RULE_SETUP
#line 224 "ldlex.l"
{ RTOKEN(OREQ);}
	YY_BREAK
case 26:
YY_RULE_SETUP
#line 225 "ldlex.l"
{ RTOKEN(ANDAND);}
	YY_BREAK
case 27:
YY_RULE_SETUP
#line 226 "ldlex.l"
{ RTOKEN('>');}
	YY_BREAK
case 28:
YY_RULE_SETUP
#line 227 "ldlex.l"
{ RTOKEN(',');}
	YY_BREAK
case 29:
YY_RULE_SETUP
#line 228 "ldlex.l"
{ RTOKEN('&');}
	YY_BREAK
case 30:
YY_RULE_SETUP
#line 229 "ldlex.l"
{ RTOKEN('|');}
	YY_BREAK
case 31:
YY_RULE_SETUP
#line 230 "ldlex.l"
{ RTOKEN('~');}
	YY_BREAK
case 32:
YY_RULE_SETUP
#line 231 "ldlex.l"
{ RTOKEN('!');}
	YY_BREAK
case 33:
YY_RULE_SETUP
#line 232 "ldlex.l"
{ RTOKEN('?');}
	YY_BREAK
case 34:
YY_RULE_SETUP
#line 233 "ldlex.l"
{ RTOKEN('*');}
	YY_BREAK
case 35:
YY_RULE_SETUP
#line 234 "ldlex.l"
{ RTOKEN('+');}
	YY_BREAK
case 36:
YY_RULE_SETUP
#line 235 "ldlex.l"
{ RTOKEN('-');}
	YY_BREAK
case 37:
YY_RULE_SETUP
#line 236 "ldlex.l"
{ RTOKEN('/');}
	YY_BREAK
case 38:
YY_RULE_SETUP
#line 237 "ldlex.l"
{ RTOKEN('%');}
	YY_BREAK
case 39:
YY_RULE_SETUP
#line 238 "ldlex.l"
{ RTOKEN('<');}
	YY_BREAK
case 40:
YY_RULE_SETUP
#line 239 "ldlex.l"
{ RTOKEN('=');}
	YY_BREAK
case 41:
YY_RULE_SETUP
#line 240 "ldlex.l"
{ RTOKEN('}') ; }
	YY_BREAK
case 42:
YY_RULE_SETUP
#line 241 "ldlex.l"
{ RTOKEN('{'); }
	YY_BREAK
case 43:
YY_RULE_SETUP
#line 242 "ldlex.l"
{ RTOKEN(')');}
	YY_BREAK
case 44:
YY_RULE_SETUP
#line 243 "ldlex.l"
{ RTOKEN('(');}
	YY_BREAK
case 45:
YY_RULE_SETUP
#line 244 "ldlex.l"
{ RTOKEN(':'); }
	YY_BREAK
case 46:
YY_RULE_SETUP
#line 245 "ldlex.l"
{ RTOKEN(';');}
	YY_BREAK
case 47:
YY_RULE_SETUP
#line 246 "ldlex.l"
{ RTOKEN(MEMORY);}
	YY_BREAK
case 48:
YY_RULE_SETUP
#line 247 "ldlex.l"
{ RTOKEN(ORIGIN);}
	YY_BREAK
case 49:
YY_RULE_SETUP
#line 248 "ldlex.l"
{ RTOKEN(VERSIONK);}
	YY_BREAK
case 50:
YY_RULE_SETUP
#line 249 "ldlex.l"
{ RTOKEN(BLOCK);}
	YY_BREAK
case 51:
YY_RULE_SETUP
#line 250 "ldlex.l"
{ RTOKEN(BIND);}
	YY_BREAK
case 52:
YY_RULE_SETUP
#line 251 "ldlex.l"
{ RTOKEN(LENGTH);}
	YY_BREAK
case 53:
YY_RULE_SETUP
#line 252 "ldlex.l"
{ RTOKEN(ALIGN_K);}
	YY_BREAK
case 54:
YY_RULE_SETUP
#line 253 "ldlex.l"
{ RTOKEN(DATA_SEGMENT_ALIGN);}
	YY_BREAK
case 55:
YY_RULE_SETUP
#line 254 "ldlex.l"
{ RTOKEN(DATA_SEGMENT_RELRO_END);}
	YY_BREAK
case 56:
YY_RULE_SETUP
#line 255 "ldlex.l"
{ RTOKEN(DATA_SEGMENT_END);}
	YY_BREAK
case 57:
YY_RULE_SETUP
#line 256 "ldlex.l"
{ RTOKEN(ADDR);}
	YY_BREAK
case 58:
YY_RULE_SETUP
#line 257 "ldlex.l"
{ RTOKEN(LOADADDR);}
	YY_BREAK
case 59:
YY_RULE_SETUP
#line 258 "ldlex.l"
{ RTOKEN(MAX_K); }
	YY_BREAK
case 60:
YY_RULE_SETUP
#line 259 "ldlex.l"
{ RTOKEN(MIN_K); }
	YY_BREAK
case 61:
YY_RULE_SETUP
#line 260 "ldlex.l"
{ RTOKEN(ASSERT_K); }
	YY_BREAK
case 62:
YY_RULE_SETUP
#line 261 "ldlex.l"
{ RTOKEN(ENTRY);}
	YY_BREAK
case 63:
YY_RULE_SETUP
#line 262 "ldlex.l"
{ RTOKEN(EXTERN);}
	YY_BREAK
case 64:
YY_RULE_SETUP
#line 263 "ldlex.l"
{ RTOKEN(NEXT);}
	YY_BREAK
case 65:
YY_RULE_SETUP
#line 264 "ldlex.l"
{ RTOKEN(SIZEOF_HEADERS);}
	YY_BREAK
case 66:
YY_RULE_SETUP
#line 265 "ldlex.l"
{ RTOKEN(SIZEOF_HEADERS);}
	YY_BREAK
case 67:
YY_RULE_SETUP
#line 266 "ldlex.l"
{ RTOKEN(SEGMENT_START);}
	YY_BREAK
case 68:
YY_RULE_SETUP
#line 267 "ldlex.l"
{ RTOKEN(MAP);}
	YY_BREAK
case 69:
YY_RULE_SETUP
#line 268 "ldlex.l"
{ RTOKEN(SIZEOF);}
	YY_BREAK
case 70:
YY_RULE_SETUP
#line 269 "ldlex.l"
{ RTOKEN(TARGET_K);}
	YY_BREAK
case 71:
YY_RULE_SETUP
#line 270 "ldlex.l"
{ RTOKEN(SEARCH_DIR);}
	YY_BREAK
case 72:
YY_RULE_SETUP
#line 271 "ldlex.l"
{ RTOKEN(OUTPUT);}
	YY_BREAK
case 73:
YY_RULE_SETUP
#line 272 "ldlex.l"
{ RTOKEN(INPUT);}
	YY_BREAK
case 74:
YY_RULE_SETUP
#line 273 "ldlex.l"
{ RTOKEN(GROUP);}
	YY_BREAK
case 75:
YY_RULE_SETUP
#line 274 "ldlex.l"
{ RTOKEN(AS_NEEDED);}
	YY_BREAK
case 76:
YY_RULE_SETUP
#line 275 "ldlex.l"
{ RTOKEN(DEFINED);}
	YY_BREAK
case 77:
YY_RULE_SETUP
#line 276 "ldlex.l"
{ RTOKEN(CREATE_OBJECT_SYMBOLS);}
	YY_BREAK
case 78:
YY_RULE_SETUP
#line 277 "ldlex.l"
{ RTOKEN( CONSTRUCTORS);}
	YY_BREAK
case 79:
YY_RULE_SETUP
#line 278 "ldlex.l"
{ RTOKEN(FORCE_COMMON_ALLOCATION);}
	YY_BREAK
case 80:
YY_RULE_SETUP
#line 279 "ldlex.l"
{ RTOKEN(INHIBIT_COMMON_ALLOCATION);}
	YY_BREAK
case 81:
YY_RULE_SETUP
#line 280 "ldlex.l"
{ RTOKEN(SECTIONS);}
	YY_BREAK
case 82:
YY_RULE_SETUP
#line 281 "ldlex.l"
{ RTOKEN(FILL);}
	YY_BREAK
case 83:
YY_RULE_SETUP
#line 282 "ldlex.l"
{ RTOKEN(STARTUP);}
	YY_BREAK
case 84:
YY_RULE_SETUP
#line 283 "ldlex.l"
{ RTOKEN(OUTPUT_FORMAT);}
	YY_BREAK
case 85:
YY_RULE_SETUP
#line 284 "ldlex.l"
{ RTOKEN( OUTPUT_ARCH);}
	YY_BREAK
case 86:
YY_RULE_SETUP
#line 285 "ldlex.l"
{ RTOKEN(HLL);}
	YY_BREAK
case 87:
YY_RULE_SETUP
#line 286 "ldlex.l"
{ RTOKEN(SYSLIB);}
	YY_BREAK
case 88:
YY_RULE_SETUP
#line 287 "ldlex.l"
{ RTOKEN(FLOAT);}
	YY_BREAK
case 89:
YY_RULE_SETUP
#line 288 "ldlex.l"
{ RTOKEN( QUAD);}
	YY_BREAK
case 90:
YY_RULE_SETUP
#line 289 "ldlex.l"
{ RTOKEN( SQUAD);}
	YY_BREAK
case 91:
YY_RULE_SETUP
#line 290 "ldlex.l"
{ RTOKEN( LONG);}
	YY_BREAK
case 92:
YY_RULE_SETUP
#line 291 "ldlex.l"
{ RTOKEN( SHORT);}
	YY_BREAK
case 93:
YY_RULE_SETUP
#line 292 "ldlex.l"
{ RTOKEN( BYTE);}
	YY_BREAK
case 94:
YY_RULE_SETUP
#line 293 "ldlex.l"
{ RTOKEN(NOFLOAT);}
	YY_BREAK
case 95:
YY_RULE_SETUP
#line 294 "ldlex.l"
{ RTOKEN(NOCROSSREFS);}
	YY_BREAK
case 96:
YY_RULE_SETUP
#line 295 "ldlex.l"
{ RTOKEN(OVERLAY); }
	YY_BREAK
case 97:
YY_RULE_SETUP
#line 296 "ldlex.l"
{ RTOKEN(SORT_BY_NAME); }
	YY_BREAK
case 98:
YY_RULE_SETUP
#line 297 "ldlex.l"
{ RTOKEN(SORT_BY_ALIGNMENT); }
	YY_BREAK
case 99:
YY_RULE_SETUP
#line 298 "ldlex.l"
{ RTOKEN(SORT_BY_NAME); }
	YY_BREAK
case 100:
YY_RULE_SETUP
#line 299 "ldlex.l"
{ RTOKEN(NOLOAD);}
	YY_BREAK
case 101:
YY_RULE_SETUP
#line 300 "ldlex.l"
{ RTOKEN(DSECT);}
	YY_BREAK
case 102:
YY_RULE_SETUP
#line 301 "ldlex.l"
{ RTOKEN(COPY);}
	YY_BREAK
case 103:
YY_RULE_SETUP
#line 302 "ldlex.l"
{ RTOKEN(INFO);}
	YY_BREAK
case 104:
YY_RULE_SETUP
#line 303 "ldlex.l"
{ RTOKEN(OVERLAY);}
	YY_BREAK
case 105:
YY_RULE_SETUP
#line 304 "ldlex.l"
{ RTOKEN(ONLY_IF_RO); }
	YY_BREAK
case 106:
YY_RULE_SETUP
#line 305 "ldlex.l"
{ RTOKEN(ONLY_IF_RW); }
	YY_BREAK
case 107:
YY_RULE_SETUP
#line 306 "ldlex.l"
{ RTOKEN(SPECIAL); }
	YY_BREAK
case 108:
YY_RULE_SETUP
#line 307 "ldlex.l"
{ RTOKEN(ORIGIN);}
	YY_BREAK
case 109:
YY_RULE_SETUP
#line 308 "ldlex.l"
{ RTOKEN(ORIGIN);}
	YY_BREAK
case 110:
YY_RULE_SETUP
#line 309 "ldlex.l"
{ RTOKEN( LENGTH);}
	YY_BREAK
case 111:
YY_RULE_SETUP
#line 310 "ldlex.l"
{ RTOKEN( LENGTH);}
	YY_BREAK
case 112:
YY_RULE_SETUP
#line 311 "ldlex.l"
{ RTOKEN(INCLUDE);}
	YY_BREAK
case 113:
YY_RULE_SETUP
#line 312 "ldlex.l"
{ RTOKEN (PHDRS); }
	YY_BREAK
case 114:
YY_RULE_SETUP
#line 313 "ldlex.l"
{ RTOKEN(AT);}
	YY_BREAK
case 115:
YY_RULE_SETUP
#line 314 "ldlex.l"
{ RTOKEN(SUBALIGN);}
	YY_BREAK
case 116:
YY_RULE_SETUP
#line 315 "ldlex.l"
{ RTOKEN(PROVIDE); }
	YY_BREAK
case 117:
YY_RULE_SETUP
#line 316 "ldlex.l"
{ RTOKEN(PROVIDE_HIDDEN); }
	YY_BREAK
case 118:
YY_RULE_SETUP
#line 317 "ldlex.l"
{ RTOKEN(KEEP); }
	YY_BREAK
case 119:
YY_RULE_SETUP
#line 318 "ldlex.l"
{ RTOKEN(EXCLUDE_FILE); }
	YY_BREAK
case 120:
YY_RULE_SETUP
#line 319 "ldlex.l"
{ ++ lineno; }
	YY_BREAK
case 121:
YY_RULE_SETUP
#line 320 "ldlex.l"
{ ++ lineno;  RTOKEN(NEWLINE); }
	YY_BREAK
case 122:
YY_RULE_SETUP
#line 321 "ldlex.l"
{ /* Mri comment line */ }
	YY_BREAK
case 123:
YY_RULE_SETUP
#line 322 "ldlex.l"
{ /* Mri comment line */ }
	YY_BREAK
case 124:
YY_RULE_SETUP
#line 323 "ldlex.l"
{ RTOKEN(ENDWORD); }
	YY_BREAK
case 125:
YY_RULE_SETUP
#line 324 "ldlex.l"
{ RTOKEN(ALIGNMOD);}
	YY_BREAK
case 126:
YY_RULE_SETUP
#line 325 "ldlex.l"
{ RTOKEN(ALIGN_K);}
	YY_BREAK
case 127:
YY_RULE_SETUP
#line 326 "ldlex.l"
{ RTOKEN(CHIP); }
	YY_BREAK
case 128:
YY_RULE_SETUP
#line 327 "ldlex.l"
{ RTOKEN(BASE); }
	YY_BREAK
case 129:
YY_RULE_SETUP
#line 328 "ldlex.l"
{ RTOKEN(ALIAS); }
	YY_BREAK
case 130:
YY_RULE_SETUP
#line 329 "ldlex.l"
{ RTOKEN(TRUNCATE); }
	YY_BREAK
case 131:
YY_RULE_SETUP
#line 330 "ldlex.l"
{ RTOKEN(LOAD); }
	YY_BREAK
case 132:
YY_RULE_SETUP
#line 331 "ldlex.l"
{ RTOKEN(PUBLIC); }
	YY_BREAK
case 133:
YY_RULE_SETUP
#line 332 "ldlex.l"
{ RTOKEN(ORDER); }
	YY_BREAK
case 134:
YY_RULE_SETUP
#line 333 "ldlex.l"
{ RTOKEN(NAMEWORD); }
	YY_BREAK
case 135:
YY_RULE_SETUP
#line 334 "ldlex.l"
{ RTOKEN(FORMAT); }
	YY_BREAK
case 136:
YY_RULE_SETUP
#line 335 "ldlex.l"
{ RTOKEN(CASE); }
	YY_BREAK
case 137:
YY_RULE_SETUP
#line 336 "ldlex.l"
{ RTOKEN(START); }
	YY_BREAK
case 138:
YY_RULE_SETUP
#line 337 "ldlex.l"
{ RTOKEN(LIST); /* LIST and ignore to end of line */ }
	YY_BREAK
case 139:
YY_RULE_SETUP
#line 338 "ldlex.l"
{ RTOKEN(SECT); }
	YY_BREAK
case 140:
YY_RULE_SETUP
#line 339 "ldlex.l"
{ RTOKEN(ABSOLUTE); }
	YY_BREAK
case 141:
YY_RULE_SETUP
#line 340 "ldlex.l"
{ RTOKEN(ENDWORD); }
	YY_BREAK
case 142:
YY_RULE_SETUP
#line 341 "ldlex.l"
{ RTOKEN(ALIGNMOD);}
	YY_BREAK
case 143:
YY_RULE_SETUP
#line 342 "ldlex.l"
{ RTOKEN(ALIGN_K);}
	YY_BREAK
case 144:
YY_RULE_SETUP
#line 343 "ldlex.l"
{ RTOKEN(CHIP); }
	YY_BREAK
case 145:
YY_RULE_SETUP
#line 344 "ldlex.l"
{ RTOKEN(BASE); }
	YY_BREAK
case 146:
YY_RULE_SETUP
#line 345 "ldlex.l"
{ RTOKEN(ALIAS); }
	YY_BREAK
case 147:
YY_RULE_SETUP
#line 346 "ldlex.l"
{ RTOKEN(TRUNCATE); }
	YY_BREAK
case 148:
YY_RULE_SETUP
#line 347 "ldlex.l"
{ RTOKEN(LOAD); }
	YY_BREAK
case 149:
YY_RULE_SETUP
#line 348 "ldlex.l"
{ RTOKEN(PUBLIC); }
	YY_BREAK
case 150:
YY_RULE_SETUP
#line 349 "ldlex.l"
{ RTOKEN(ORDER); }
	YY_BREAK
case 151:
YY_RULE_SETUP
#line 350 "ldlex.l"
{ RTOKEN(NAMEWORD); }
	YY_BREAK
case 152:
YY_RULE_SETUP
#line 351 "ldlex.l"
{ RTOKEN(FORMAT); }
	YY_BREAK
case 153:
YY_RULE_SETUP
#line 352 "ldlex.l"
{ RTOKEN(CASE); }
	YY_BREAK
case 154:
YY_RULE_SETUP
#line 353 "ldlex.l"
{ RTOKEN(EXTERN); }
	YY_BREAK
case 155:
YY_RULE_SETUP
#line 354 "ldlex.l"
{ RTOKEN(START); }
	YY_BREAK
case 156:
YY_RULE_SETUP
#line 355 "ldlex.l"
{ RTOKEN(LIST); /* LIST and ignore to end of line */ }
	YY_BREAK
case 157:
YY_RULE_SETUP
#line 356 "ldlex.l"
{ RTOKEN(SECT); }
	YY_BREAK
case 158:
YY_RULE_SETUP
#line 357 "ldlex.l"
{ RTOKEN(ABSOLUTE); }
	YY_BREAK
case 159:
YY_RULE_SETUP
#line 359 "ldlex.l"
{
/* Filename without commas, needed to parse mri stuff */
				 yylval.name = xstrdup (yytext);
				  return NAME;
				}
	YY_BREAK
case 160:
YY_RULE_SETUP
#line 366 "ldlex.l"
{
				 yylval.name = xstrdup (yytext);
				  return NAME;
				}
	YY_BREAK
case 161:
YY_RULE_SETUP
#line 370 "ldlex.l"
{
				  yylval.name = xstrdup (yytext + 2);
				  return LNAME;
				}
	YY_BREAK
case 162:
YY_RULE_SETUP
#line 374 "ldlex.l"
{
		/* Annoyingly, this pattern can match comments, and we have
		   longest match issues to consider.  So if the first two
		   characters are a comment opening, put the input back and
		   try again.  */
		if (yytext[0] == '/' && yytext[1] == '*')
		  {
		    yyless (2);
		    comment ();
		  }
		else
		  {
		    yylval.name = xstrdup (yytext);
		    return NAME;
		  }
	}
	YY_BREAK
case 163:
YY_RULE_SETUP
#line 391 "ldlex.l"
{
					/* No matter the state, quotes
					   give what's inside */
					yylval.name = xstrdup (yytext + 1);
					yylval.name[yyleng - 2] = 0;
					return NAME;
				}
	YY_BREAK
case 164:
YY_RULE_SETUP
#line 398 "ldlex.l"
{ lineno++;}
	YY_BREAK
case 165:
YY_RULE_SETUP
#line 399 "ldlex.l"
{ }
	YY_BREAK
case 166:
YY_RULE_SETUP
#line 401 "ldlex.l"
{ return *yytext; }
	YY_BREAK
case 167:
YY_RULE_SETUP
#line 403 "ldlex.l"
{ RTOKEN(GLOBAL); }
	YY_BREAK
case 168:
YY_RULE_SETUP
#line 405 "ldlex.l"
{ RTOKEN(LOCAL); }
	YY_BREAK
case 169:
YY_RULE_SETUP
#line 407 "ldlex.l"
{ RTOKEN(EXTERN); }
	YY_BREAK
case 170:
YY_RULE_SETUP
#line 409 "ldlex.l"
{ yylval.name = xstrdup (yytext);
				  return VERS_IDENTIFIER; }
	YY_BREAK
case 171:
YY_RULE_SETUP
#line 412 "ldlex.l"
{ yylval.name = xstrdup (yytext);
				  return VERS_TAG; }
	YY_BREAK
case 172:
YY_RULE_SETUP
#line 415 "ldlex.l"
{ BEGIN(VERS_SCRIPT); return *yytext; }
	YY_BREAK
case 173:
YY_RULE_SETUP
#line 417 "ldlex.l"
{ BEGIN(VERS_NODE);
				  vers_node_nesting = 0;
				  return *yytext;
				}
	YY_BREAK
case 174:
YY_RULE_SETUP
#line 421 "ldlex.l"
{ return *yytext; }
	YY_BREAK
case 175:
YY_RULE_SETUP
#line 422 "ldlex.l"
{ vers_node_nesting++; return *yytext; }
	YY_BREAK
case 176:
YY_RULE_SETUP
#line 423 "ldlex.l"
{ if (--vers_node_nesting < 0)
				    BEGIN(VERS_SCRIPT);
				  return *yytext;
				}
	YY_BREAK
case 177:
YY_RULE_SETUP
#line 428 "ldlex.l"
{ lineno++; }
	YY_BREAK
case 178:
YY_RULE_SETUP
#line 430 "ldlex.l"
{ /* Eat up comments */ }
	YY_BREAK
case 179:
YY_RULE_SETUP
#line 432 "ldlex.l"
{ /* Eat up whitespace */ }
	YY_BREAK
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(SCRIPT):
case YY_STATE_EOF(EXPRESSION):
case YY_STATE_EOF(BOTH):
case YY_STATE_EOF(DEFSYMEXP):
case YY_STATE_EOF(MRI):
case YY_STATE_EOF(VERS_START):
case YY_STATE_EOF(VERS_SCRIPT):
case YY_STATE_EOF(VERS_NODE):
#line 434 "ldlex.l"
{
  include_stack_ptr--;

  if (include_stack_ptr == 0)
  {
    yyterminate ();
  }
  else
  {
    yy_switch_to_buffer (include_stack[include_stack_ptr]);
  }

  ldfile_input_filename = file_name_stack[include_stack_ptr - 1];
  lineno = lineno_stack[include_stack_ptr];

  return END;
}
	YY_BREAK
case 180:
YY_RULE_SETUP
#line 452 "ldlex.l"
lex_warn_invalid (" in script", yytext);
	YY_BREAK
case 181:
YY_RULE_SETUP
#line 453 "ldlex.l"
lex_warn_invalid (" in expression", yytext);
	YY_BREAK
case 182:
YY_RULE_SETUP
#line 455 "ldlex.l"
ECHO;
	YY_BREAK
#line 2718 "ldlex.c"

	case YY_END_OF_BUFFER:
		{
		/* Amount of text matched not including the EOB char. */
		int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;

		/* Undo the effects of YY_DO_BEFORE_ACTION. */
		*yy_cp = yy_hold_char;
		YY_RESTORE_YY_MORE_OFFSET

		if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
			{
			/* We're scanning a new file or input source.  It's
			 * possible that this happened because the user
			 * just pointed yyin at a new source and called
			 * yylex().  If so, then we have to assure
			 * consistency between yy_current_buffer and our
			 * globals.  Here is the right place to do so, because
			 * this is the first action (other than possibly a
			 * back-up) that will match for the new input source.
			 */
			yy_n_chars = yy_current_buffer->yy_n_chars;
			yy_current_buffer->yy_input_file = yyin;
			yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
			}

		/* Note that here we test for yy_c_buf_p "<=" to the position
		 * of the first EOB in the buffer, since yy_c_buf_p will
		 * already have been incremented past the NUL character
		 * (since all states make transitions on EOB to the
		 * end-of-buffer state).  Contrast this with the test
		 * in input().
		 */
		if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
			{ /* This was really a NUL. */
			yy_state_type yy_next_state;

			yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;

			yy_current_state = yy_get_previous_state();

			/* Okay, we're now positioned to make the NUL
			 * transition.  We couldn't have
			 * yy_get_previous_state() go ahead and do it
			 * for us because it doesn't know how to deal
			 * with the possibility of jamming (and we don't
			 * want to build jamming into it because then it
			 * will run more slowly).
			 */

			yy_next_state = yy_try_NUL_trans( yy_current_state );

			yy_bp = yytext_ptr + YY_MORE_ADJ;

			if ( yy_next_state )
				{
				/* Consume the NUL. */
				yy_cp = ++yy_c_buf_p;
				yy_current_state = yy_next_state;
				goto yy_match;
				}

			else
				{
				yy_cp = yy_c_buf_p;
				goto yy_find_action;
				}
			}

		else switch ( yy_get_next_buffer() )
			{
			case EOB_ACT_END_OF_FILE:
				{
				yy_did_buffer_switch_on_eof = 0;

				if ( yywrap() )
					{
					/* Note: because we've taken care in
					 * yy_get_next_buffer() to have set up
					 * yytext, we can now set up
					 * yy_c_buf_p so that if some total
					 * hoser (like flex itself) wants to
					 * call the scanner after we return the
					 * YY_NULL, it'll still work - another
					 * YY_NULL will get returned.
					 */
					yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;

					yy_act = YY_STATE_EOF(YY_START);
					goto do_action;
					}

				else
					{
					if ( ! yy_did_buffer_switch_on_eof )
						YY_NEW_FILE;
					}
				break;
				}

			case EOB_ACT_CONTINUE_SCAN:
				yy_c_buf_p =
					yytext_ptr + yy_amount_of_matched_text;

				yy_current_state = yy_get_previous_state();

				yy_cp = yy_c_buf_p;
				yy_bp = yytext_ptr + YY_MORE_ADJ;
				goto yy_match;

			case EOB_ACT_LAST_MATCH:
				yy_c_buf_p =
				&yy_current_buffer->yy_ch_buf[yy_n_chars];

				yy_current_state = yy_get_previous_state();

				yy_cp = yy_c_buf_p;
				yy_bp = yytext_ptr + YY_MORE_ADJ;
				goto yy_find_action;
			}
		break;
		}

	default:
		YY_FATAL_ERROR(
			"fatal flex scanner internal error--no action found" );
	} /* end of action switch */
		} /* end of scanning one token */
	} /* end of yylex */


/* yy_get_next_buffer - try to read in a new buffer
 *
 * Returns a code representing an action:
 *	EOB_ACT_LAST_MATCH -
 *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
 *	EOB_ACT_END_OF_FILE - end of file
 */

static int yy_get_next_buffer()
	{
	register char *dest = yy_current_buffer->yy_ch_buf;
	register char *source = yytext_ptr;
	register int number_to_move, i;
	int ret_val;

	if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
		YY_FATAL_ERROR(
		"fatal flex scanner internal error--end of buffer missed" );

	if ( yy_current_buffer->yy_fill_buffer == 0 )
		{ /* Don't try to fill the buffer, so this is an EOF. */
		if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
			{
			/* We matched a single character, the EOB, so
			 * treat this as a final EOF.
			 */
			return EOB_ACT_END_OF_FILE;
			}

		else
			{
			/* We matched some text prior to the EOB, first
			 * process it.
			 */
			return EOB_ACT_LAST_MATCH;
			}
		}

	/* Try to read more data. */

	/* First move last chars to start of buffer. */
	number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;

	for ( i = 0; i < number_to_move; ++i )
		*(dest++) = *(source++);

	if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
		/* don't do the read, it's not guaranteed to return an EOF,
		 * just force an EOF
		 */
		yy_current_buffer->yy_n_chars = yy_n_chars = 0;

	else
		{
		int num_to_read =
			yy_current_buffer->yy_buf_size - number_to_move - 1;

		while ( num_to_read <= 0 )
			{ /* Not enough room in the buffer - grow it. */
#ifdef YY_USES_REJECT
			YY_FATAL_ERROR(
"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
#else

			/* just a shorter name for the current buffer */
			YY_BUFFER_STATE b = yy_current_buffer;

			int yy_c_buf_p_offset =
				(int) (yy_c_buf_p - b->yy_ch_buf);

			if ( b->yy_is_our_buffer )
				{
				int new_size = b->yy_buf_size * 2;

				if ( new_size <= 0 )
					b->yy_buf_size += b->yy_buf_size / 8;
				else
					b->yy_buf_size *= 2;

				b->yy_ch_buf = (char *)
					/* Include room in for 2 EOB chars. */
					yy_flex_realloc( (void *) b->yy_ch_buf,
							 b->yy_buf_size + 2 );
				}
			else
				/* Can't grow it, we don't own it. */
				b->yy_ch_buf = 0;

			if ( ! b->yy_ch_buf )
				YY_FATAL_ERROR(
				"fatal error - scanner input buffer overflow" );

			yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];

			num_to_read = yy_current_buffer->yy_buf_size -
						number_to_move - 1;
#endif
			}

		if ( num_to_read > YY_READ_BUF_SIZE )
			num_to_read = YY_READ_BUF_SIZE;

		/* Read in more data. */
		YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
			yy_n_chars, num_to_read );

		yy_current_buffer->yy_n_chars = yy_n_chars;
		}

	if ( yy_n_chars == 0 )
		{
		if ( number_to_move == YY_MORE_ADJ )
			{
			ret_val = EOB_ACT_END_OF_FILE;
			yyrestart( yyin );
			}

		else
			{
			ret_val = EOB_ACT_LAST_MATCH;
			yy_current_buffer->yy_buffer_status =
				YY_BUFFER_EOF_PENDING;
			}
		}

	else
		ret_val = EOB_ACT_CONTINUE_SCAN;

	yy_n_chars += number_to_move;
	yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
	yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;

	yytext_ptr = &yy_current_buffer->yy_ch_buf[0];

	return ret_val;
	}


/* yy_get_previous_state - get the state just before the EOB char was reached */

static yy_state_type yy_get_previous_state()
	{
	register yy_state_type yy_current_state;
	register char *yy_cp;

	yy_current_state = yy_start;

	for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
		{
		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
		if ( yy_accept[yy_current_state] )
			{
			yy_last_accepting_state = yy_current_state;
			yy_last_accepting_cpos = yy_cp;
			}
		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
			{
			yy_current_state = (int) yy_def[yy_current_state];
			if ( yy_current_state >= 1301 )
				yy_c = yy_meta[(unsigned int) yy_c];
			}
		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
		}

	return yy_current_state;
	}


/* yy_try_NUL_trans - try to make a transition on the NUL character
 *
 * synopsis
 *	next_state = yy_try_NUL_trans( current_state );
 */

#ifdef YY_USE_PROTOS
static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
#else
static yy_state_type yy_try_NUL_trans( yy_current_state )
yy_state_type yy_current_state;
#endif
	{
	register int yy_is_jam;
	register char *yy_cp = yy_c_buf_p;

	register YY_CHAR yy_c = 1;
	if ( yy_accept[yy_current_state] )
		{
		yy_last_accepting_state = yy_current_state;
		yy_last_accepting_cpos = yy_cp;
		}
	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
		{
		yy_current_state = (int) yy_def[yy_current_state];
		if ( yy_current_state >= 1301 )
			yy_c = yy_meta[(unsigned int) yy_c];
		}
	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
	yy_is_jam = (yy_current_state == 1300);

	return yy_is_jam ? 0 : yy_current_state;
	}


#ifndef YY_NO_UNPUT
#ifdef YY_USE_PROTOS
static void yyunput( int c, register char *yy_bp )
#else
static void yyunput( c, yy_bp )
int c;
register char *yy_bp;
#endif
	{
	register char *yy_cp = yy_c_buf_p;

	/* undo effects of setting up yytext */
	*yy_cp = yy_hold_char;

	if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
		{ /* need to shift things up to make room */
		/* +2 for EOB chars. */
		register int number_to_move = yy_n_chars + 2;
		register char *dest = &yy_current_buffer->yy_ch_buf[
					yy_current_buffer->yy_buf_size + 2];
		register char *source =
				&yy_current_buffer->yy_ch_buf[number_to_move];

		while ( source > yy_current_buffer->yy_ch_buf )
			*--dest = *--source;

		yy_cp += (int) (dest - source);
		yy_bp += (int) (dest - source);
		yy_current_buffer->yy_n_chars =
			yy_n_chars = yy_current_buffer->yy_buf_size;

		if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
			YY_FATAL_ERROR( "flex scanner push-back overflow" );
		}

	*--yy_cp = (char) c;


	yytext_ptr = yy_bp;
	yy_hold_char = *yy_cp;
	yy_c_buf_p = yy_cp;
	}
#endif	/* ifndef YY_NO_UNPUT */


#ifdef __cplusplus
static int yyinput()
#else
static int input()
#endif
	{
	int c;

	*yy_c_buf_p = yy_hold_char;

	if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
		{
		/* yy_c_buf_p now points to the character we want to return.
		 * If this occurs *before* the EOB characters, then it's a
		 * valid NUL; if not, then we've hit the end of the buffer.
		 */
		if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
			/* This was really a NUL. */
			*yy_c_buf_p = '\0';

		else
			{ /* need more input */
			int offset = yy_c_buf_p - yytext_ptr;
			++yy_c_buf_p;

			switch ( yy_get_next_buffer() )
				{
				case EOB_ACT_LAST_MATCH:
					/* This happens because yy_g_n_b()
					 * sees that we've accumulated a
					 * token and flags that we need to
					 * try matching the token before
					 * proceeding.  But for input(),
					 * there's no matching to consider.
					 * So convert the EOB_ACT_LAST_MATCH
					 * to EOB_ACT_END_OF_FILE.
					 */

					/* Reset buffer status. */
					yyrestart( yyin );

					/* fall through */

				case EOB_ACT_END_OF_FILE:
					{
					if ( yywrap() )
						return EOF;

					if ( ! yy_did_buffer_switch_on_eof )
						YY_NEW_FILE;
#ifdef __cplusplus
					return yyinput();
#else
					return input();
#endif
					}

				case EOB_ACT_CONTINUE_SCAN:
					yy_c_buf_p = yytext_ptr + offset;
					break;
				}
			}
		}

	c = *(unsigned char *) yy_c_buf_p;	/* cast for 8-bit char's */
	*yy_c_buf_p = '\0';	/* preserve yytext */
	yy_hold_char = *++yy_c_buf_p;


	return c;
	}


#ifdef YY_USE_PROTOS
void yyrestart( FILE *input_file )
#else
void yyrestart( input_file )
FILE *input_file;
#endif
	{
	if ( ! yy_current_buffer )
		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );

	yy_init_buffer( yy_current_buffer, input_file );
	yy_load_buffer_state();
	}


#ifdef YY_USE_PROTOS
void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
#else
void yy_switch_to_buffer( new_buffer )
YY_BUFFER_STATE new_buffer;
#endif
	{
	if ( yy_current_buffer == new_buffer )
		return;

	if ( yy_current_buffer )
		{
		/* Flush out information for old buffer. */
		*yy_c_buf_p = yy_hold_char;
		yy_current_buffer->yy_buf_pos = yy_c_buf_p;
		yy_current_buffer->yy_n_chars = yy_n_chars;
		}

	yy_current_buffer = new_buffer;
	yy_load_buffer_state();

	/* We don't actually know whether we did this switch during
	 * EOF (yywrap()) processing, but the only time this flag
	 * is looked at is after yywrap() is called, so it's safe
	 * to go ahead and always set it.
	 */
	yy_did_buffer_switch_on_eof = 1;
	}


#ifdef YY_USE_PROTOS
void yy_load_buffer_state( void )
#else
void yy_load_buffer_state()
#endif
	{
	yy_n_chars = yy_current_buffer->yy_n_chars;
	yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
	yyin = yy_current_buffer->yy_input_file;
	yy_hold_char = *yy_c_buf_p;
	}


#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
#else
YY_BUFFER_STATE yy_create_buffer( file, size )
FILE *file;
int size;
#endif
	{
	YY_BUFFER_STATE b;

	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
	if ( ! b )
		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );

	b->yy_buf_size = size;

	/* yy_ch_buf has to be 2 characters longer than the size given because
	 * we need to put in 2 end-of-buffer characters.
	 */
	b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
	if ( ! b->yy_ch_buf )
		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );

	b->yy_is_our_buffer = 1;

	yy_init_buffer( b, file );

	return b;
	}


#ifdef YY_USE_PROTOS
void yy_delete_buffer( YY_BUFFER_STATE b )
#else
void yy_delete_buffer( b )
YY_BUFFER_STATE b;
#endif
	{
	if ( ! b )
		return;

	if ( b == yy_current_buffer )
		yy_current_buffer = (YY_BUFFER_STATE) 0;

	if ( b->yy_is_our_buffer )
		yy_flex_free( (void *) b->yy_ch_buf );

	yy_flex_free( (void *) b );
	}


#ifndef _WIN32
#include <unistd.h>
#else
#ifndef YY_ALWAYS_INTERACTIVE
#ifndef YY_NEVER_INTERACTIVE
extern int isatty YY_PROTO(( int ));
#endif
#endif
#endif

#ifdef YY_USE_PROTOS
void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
#else
void yy_init_buffer( b, file )
YY_BUFFER_STATE b;
FILE *file;
#endif


	{
	yy_flush_buffer( b );

	b->yy_input_file = file;
	b->yy_fill_buffer = 1;

#if YY_ALWAYS_INTERACTIVE
	b->yy_is_interactive = 1;
#else
#if YY_NEVER_INTERACTIVE
	b->yy_is_interactive = 0;
#else
	b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
#endif
#endif
	}


#ifdef YY_USE_PROTOS
void yy_flush_buffer( YY_BUFFER_STATE b )
#else
void yy_flush_buffer( b )
YY_BUFFER_STATE b;
#endif

	{
	if ( ! b )
		return;

	b->yy_n_chars = 0;

	/* We always need two end-of-buffer characters.  The first causes
	 * a transition to the end-of-buffer state.  The second causes
	 * a jam in that state.
	 */
	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;

	b->yy_buf_pos = &b->yy_ch_buf[0];

	b->yy_at_bol = 1;
	b->yy_buffer_status = YY_BUFFER_NEW;

	if ( b == yy_current_buffer )
		yy_load_buffer_state();
	}


#ifndef YY_NO_SCAN_BUFFER
#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
#else
YY_BUFFER_STATE yy_scan_buffer( base, size )
char *base;
yy_size_t size;
#endif
	{
	YY_BUFFER_STATE b;

	if ( size < 2 ||
	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
	     base[size-1] != YY_END_OF_BUFFER_CHAR )
		/* They forgot to leave room for the EOB's. */
		return 0;

	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
	if ( ! b )
		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );

	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
	b->yy_buf_pos = b->yy_ch_buf = base;
	b->yy_is_our_buffer = 0;
	b->yy_input_file = 0;
	b->yy_n_chars = b->yy_buf_size;
	b->yy_is_interactive = 0;
	b->yy_at_bol = 1;
	b->yy_fill_buffer = 0;
	b->yy_buffer_status = YY_BUFFER_NEW;

	yy_switch_to_buffer( b );

	return b;
	}
#endif


#ifndef YY_NO_SCAN_STRING
#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
#else
YY_BUFFER_STATE yy_scan_string( yy_str )
yyconst char *yy_str;
#endif
	{
	int len;
	for ( len = 0; yy_str[len]; ++len )
		;

	return yy_scan_bytes( yy_str, len );
	}
#endif


#ifndef YY_NO_SCAN_BYTES
#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
#else
YY_BUFFER_STATE yy_scan_bytes( bytes, len )
yyconst char *bytes;
int len;
#endif
	{
	YY_BUFFER_STATE b;
	char *buf;
	yy_size_t n;
	int i;

	/* Get memory for full buffer, including space for trailing EOB's. */
	n = len + 2;
	buf = (char *) yy_flex_alloc( n );
	if ( ! buf )
		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );

	for ( i = 0; i < len; ++i )
		buf[i] = bytes[i];

	buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;

	b = yy_scan_buffer( buf, n );
	if ( ! b )
		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );

	/* It's okay to grow etc. this buffer, and we should throw it
	 * away when we're done.
	 */
	b->yy_is_our_buffer = 1;

	return b;
	}
#endif


#ifndef YY_NO_PUSH_STATE
#ifdef YY_USE_PROTOS
static void yy_push_state( int new_state )
#else
static void yy_push_state( new_state )
int new_state;
#endif
	{
	if ( yy_start_stack_ptr >= yy_start_stack_depth )
		{
		yy_size_t new_size;

		yy_start_stack_depth += YY_START_STACK_INCR;
		new_size = yy_start_stack_depth * sizeof( int );

		if ( ! yy_start_stack )
			yy_start_stack = (int *) yy_flex_alloc( new_size );

		else
			yy_start_stack = (int *) yy_flex_realloc(
					(void *) yy_start_stack, new_size );

		if ( ! yy_start_stack )
			YY_FATAL_ERROR(
			"out of memory expanding start-condition stack" );
		}

	yy_start_stack[yy_start_stack_ptr++] = YY_START;

	BEGIN(new_state);
	}
#endif


#ifndef YY_NO_POP_STATE
static void yy_pop_state()
	{
	if ( --yy_start_stack_ptr < 0 )
		YY_FATAL_ERROR( "start-condition stack underflow" );

	BEGIN(yy_start_stack[yy_start_stack_ptr]);
	}
#endif


#ifndef YY_NO_TOP_STATE
static int yy_top_state()
	{
	return yy_start_stack[yy_start_stack_ptr - 1];
	}
#endif

#ifndef YY_EXIT_FAILURE
#define YY_EXIT_FAILURE 2
#endif

#ifdef YY_USE_PROTOS
static void yy_fatal_error( yyconst char msg[] )
#else
static void yy_fatal_error( msg )
char msg[];
#endif
	{
	(void) fprintf( stderr, "%s\n", msg );
	exit( YY_EXIT_FAILURE );
	}



/* Redefine yyless() so it works in section 3 code. */

#undef yyless
#define yyless(n) \
	do \
		{ \
		/* Undo effects of setting up yytext. */ \
		yytext[yyleng] = yy_hold_char; \
		yy_c_buf_p = yytext + n; \
		yy_hold_char = *yy_c_buf_p; \
		*yy_c_buf_p = '\0'; \
		yyleng = n; \
		} \
	while ( 0 )


/* Internal utility routines. */

#ifndef yytext_ptr
#ifdef YY_USE_PROTOS
static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
#else
static void yy_flex_strncpy( s1, s2, n )
char *s1;
yyconst char *s2;
int n;
#endif
	{
	register int i;
	for ( i = 0; i < n; ++i )
		s1[i] = s2[i];
	}
#endif

#ifdef YY_NEED_STRLEN
#ifdef YY_USE_PROTOS
static int yy_flex_strlen( yyconst char *s )
#else
static int yy_flex_strlen( s )
yyconst char *s;
#endif
	{
	register int n;
	for ( n = 0; s[n]; ++n )
		;

	return n;
	}
#endif


#ifdef YY_USE_PROTOS
static void *yy_flex_alloc( yy_size_t size )
#else
static void *yy_flex_alloc( size )
yy_size_t size;
#endif
	{
	return (void *) malloc( size );
	}

#ifdef YY_USE_PROTOS
static void *yy_flex_realloc( void *ptr, yy_size_t size )
#else
static void *yy_flex_realloc( ptr, size )
void *ptr;
yy_size_t size;
#endif
	{
	/* The cast to (char *) in the following accommodates both
	 * implementations that use char* generic pointers, and those
	 * that use void* generic pointers.  It works with the latter
	 * because both ANSI C and C++ allow castless assignment from
	 * any pointer type to void*, and deal with argument conversions
	 * as though doing an assignment.
	 */
	return (void *) realloc( (char *) ptr, size );
	}

#ifdef YY_USE_PROTOS
static void yy_flex_free( void *ptr )
#else
static void yy_flex_free( ptr )
void *ptr;
#endif
	{
	free( ptr );
	}

#if YY_MAIN
int main()
	{
	yylex();
	return 0;
	}
#endif
#line 455 "ldlex.l"



/* Switch flex to reading script file NAME, open on FILE,
   saving the current input info on the include stack.  */

void
lex_push_file (FILE *file, const char *name)
{
  if (include_stack_ptr >= MAX_INCLUDE_DEPTH)
    {
      einfo ("%F:includes nested too deeply\n");
    }
  file_name_stack[include_stack_ptr] = name;
  lineno_stack[include_stack_ptr] = lineno;
  include_stack[include_stack_ptr] = YY_CURRENT_BUFFER;

  include_stack_ptr++;
  lineno = 1;
  yyin = file;
  yy_switch_to_buffer (yy_create_buffer (yyin, YY_BUF_SIZE));
}

/* Return a newly created flex input buffer containing STRING,
   which is SIZE bytes long.  */

static YY_BUFFER_STATE
yy_create_string_buffer (const char *string, size_t size)
{
  YY_BUFFER_STATE b;

  /* Calls to m-alloc get turned by sed into xm-alloc.  */
  b = malloc (sizeof (struct yy_buffer_state));
  b->yy_input_file = 0;
  b->yy_buf_size = size;

  /* yy_ch_buf has to be 2 characters longer than the size given because
     we need to put in 2 end-of-buffer characters.  */
  b->yy_ch_buf = malloc ((unsigned) (b->yy_buf_size + 3));

  b->yy_ch_buf[0] = '\n';
  strcpy (b->yy_ch_buf+1, string);
  b->yy_ch_buf[size+1] = YY_END_OF_BUFFER_CHAR;
  b->yy_ch_buf[size+2] = YY_END_OF_BUFFER_CHAR;
  b->yy_n_chars = size+1;
  b->yy_buf_pos = &b->yy_ch_buf[1];

  b->yy_is_our_buffer = 1;
  b->yy_is_interactive = 0;
  b->yy_at_bol = 1;
  b->yy_fill_buffer = 0;

  /* flex 2.4.7 changed the interface.  FIXME: We should not be using
     a flex internal interface in the first place!  */
#ifdef YY_BUFFER_NEW
  b->yy_buffer_status = YY_BUFFER_NEW;
#else
  b->yy_eof_status = EOF_NOT_SEEN;
#endif

  return b;
}

/* Switch flex to reading from STRING, saving the current input info
   on the include stack.  */

void
lex_redirect (const char *string)
{
  YY_BUFFER_STATE tmp;

  yy_init = 0;
  if (include_stack_ptr >= MAX_INCLUDE_DEPTH)
    {
      einfo("%F: macros nested too deeply\n");
    }
  file_name_stack[include_stack_ptr] = "redirect";
  lineno_stack[include_stack_ptr] = lineno;
  include_stack[include_stack_ptr] = YY_CURRENT_BUFFER;
  include_stack_ptr++;
  lineno = 1;
  tmp = yy_create_string_buffer (string, strlen (string));
  yy_switch_to_buffer (tmp);
}

/* Functions to switch to a different flex start condition,
   saving the current start condition on `state_stack'.  */

static int state_stack[MAX_INCLUDE_DEPTH * 2];
static int *state_stack_p = state_stack;

void
ldlex_script (void)
{
  *(state_stack_p)++ = yy_start;
  BEGIN (SCRIPT);
}

void
ldlex_mri_script (void)
{
  *(state_stack_p)++ = yy_start;
  BEGIN (MRI);
}

void
ldlex_version_script (void)
{
  *(state_stack_p)++ = yy_start;
  BEGIN (VERS_START);
}

void
ldlex_version_file (void)
{
  *(state_stack_p)++ = yy_start;
  BEGIN (VERS_SCRIPT);
}

void
ldlex_defsym (void)
{
  *(state_stack_p)++ = yy_start;
  BEGIN (DEFSYMEXP);
}

void
ldlex_expression (void)
{
  *(state_stack_p)++ = yy_start;
  BEGIN (EXPRESSION);
}

void
ldlex_both (void)
{
  *(state_stack_p)++ = yy_start;
  BEGIN (BOTH);
}

void
ldlex_popstate (void)
{
  yy_start = *(--state_stack_p);
}


/* Place up to MAX_SIZE characters in BUF and return in *RESULT
   either the number of characters read, or 0 to indicate EOF.  */

static void
yy_input (char *buf, int *result, int max_size)
{
  *result = 0;
  if (YY_CURRENT_BUFFER->yy_input_file)
    {
      if (yyin)
	{
	  *result = fread (buf, 1, max_size, yyin);
	  if (*result < max_size && ferror (yyin))
	    einfo ("%F%P: read in flex scanner failed\n");
	}
    }
}

/* Eat the rest of a C-style comment.  */

static void
comment (void)
{
  int c;

  while (1)
  {
    c = input();
    while (c != '*' && c != EOF)
    {
      if (c == '\n')
	lineno++;
      c = input();
    }

    if (c == '*')
    {
      c = input();
      while (c == '*')
       c = input();
      if (c == '/')
       break;			/* found the end */
    }

    if (c == '\n')
      lineno++;

    if (c == EOF)
    {
      einfo( "%F%P: EOF in comment\n");
      break;
    }
  }
}

/* Warn the user about a garbage character WHAT in the input
   in context WHERE.  */

static void
lex_warn_invalid (char *where, char *what)
{
  char buf[5];

  /* If we have found an input file whose format we do not recognize,
     and we are therefore treating it as a linker script, and we find
     an invalid character, then most likely this is a real object file
     of some different format.  Treat it as such.  */
  if (ldfile_assumed_script)
    {
      bfd_set_error (bfd_error_file_not_recognized);
      einfo ("%F%s: file not recognized: %E\n", ldfile_input_filename);
    }

  if (! ISPRINT (*what))
    {
      sprintf (buf, "\\%03o", (unsigned int) *what);
      what = buf;
    }

  einfo ("%P:%S: ignoring invalid character `%s'%s\n", what, where);
}
