/* 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 172
#define YY_END_OF_BUFFER 173
static yyconst short int yy_accept[1150] =
    {   0,
        0,    0,  152,  152,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,  173,  172,
      170,  155,  154,   32,  170,  152,   38,   29,   44,   43,
       34,   35,   28,   36,  152,   37,    8,    8,   45,   46,
       39,   40,   27,   33,  152,  152,  152,  152,  152,  152,
      152,  152,  152,  152,  152,  152,  152,  152,  152,  152,
      152,  152,  152,   10,    9,  152,  102,  100,  152,   42,
       30,   41,   31,  171,  155,   32,  171,  150,   38,   29,
       44,   43,   34,   35,   28,   36,  150,   37,    8,    8,
       45,   46,   39,   40,   27,   33,  150,  150,  150,  150,

      150,  150,  150,  150,  150,  150,  150,  150,  150,  150,
      150,   10,    9,  150,  150,   42,   30,   41,   31,  150,
        8,    8,  150,  150,  150,  150,  150,  150,  150,  150,
      150,  150,  150,  150,  150,  150,  150,  150,  150,  150,
      102,  100,    4,    3,    2,    4,    5,  111,  110,  149,
       34,   35,   28,   36,  149,   37,    8,    8,   45,   46,
       40,   33,  149,  149,  149,  149,  149,  149,  149,  149,
      149,  149,  149,  149,   10,    9,  149,  149,  149,  149,
      149,  149,  149,  149,  149,  149,  149,   31,  169,  167,
      168,  162,  161,  156,  163,  164,  160,  160,  160,  160,

      165,  166,  155,   15,    0,  153,  152,    8,   26,   24,
       22,   20,   21,    1,   23,    8,    8,  152,   18,   17,
       14,   16,   19,  152,  152,  152,  106,  152,  152,  152,
      152,  152,  152,  152,  152,  152,  152,  152,  152,  152,
      152,  152,  152,  152,  152,  152,  152,  152,  152,  152,
      152,  152,  152,  152,  152,  152,  152,  152,  152,  152,
      152,  152,  152,  152,  152,  152,  152,  152,  152,   25,
       13,  150,    6,   22,   20,   21,    0,    1,   23,    8,
        0,    7,    7,    8,    7,   14,  150,    7,    7,    7,
      150,  150,  106,    7,  150,  150,    7,  150,  150,  150,

        7,  150,  150,  150,  150,  150,  150,  150,  150,  150,
      150,  150,    7,  150,    8,    8,    0,  150,  150,  150,
      150,  150,  150,  150,  150,  150,  150,  150,  150,  150,
      150,  150,  150,  150,  150,  150,  150,  150,  150,  150,
      150,  150,  150,  150,  150,  150,  150,  150,  150,  150,
      150,  150,    4,    4,  110,  110,  149,    6,  112,   22,
       23,  113,  149,    7,    7,    7,  149,  149,  149,    7,
      149,    7,    7,  149,  149,  149,  149,  149,  149,  149,
      149,    7,  149,  149,  149,    7,  149,    7,    7,  149,
      149,  149,  149,  149,  149,  149,  149,  169,  168,  161,

      160,    0,  160,  160,  160,   11,   12,  152,  152,  152,
      152,  152,  152,  152,  152,  152,  152,  152,  152,  152,
      152,  152,  152,  152,  152,  152,   83,  152,  152,  152,
      152,  152,  152,  152,  152,   66,  152,  152,  152,  152,
      152,  152,  152,  152,  152,  152,  152,  152,  152,  152,
      152,  152,  152,  152,  152,  152,  152,  152,  103,  101,
      152,    8,  151,    8,  150,    7,  150,  150,  150,  150,
      150,  150,  150,  150,  150,  150,  150,  150,  150,   58,
       59,  150,  150,  150,  150,  150,  150,  150,  150,  150,
      150,  150,  150,  150,  150,  150,  150,  150,  150,   83,

      150,  150,  150,  150,  150,   66,  150,  150,  150,  150,
      150,  150,  150,  150,  150,  150,  150,  150,  150,  150,
      150,  150,  103,  101,    4,    8,  149,  149,  149,  149,
      149,  114,  149,  149,  149,  149,  149,  149,  149,  149,
      149,  149,  149,  149,  149,  149,  149,  131,  149,  149,
      149,  149,  149,  149,  149,  149,  149,  149,  160,  160,
      160,  152,   56,  152,   51,  152,   90,  152,   97,  152,
      152,  152,  152,  152,  152,  152,   79,  152,  152,  152,
      152,   98,  152,  152,  108,  152,  152,   88,  152,   63,
      152,  152,  152,  152,  152,  152,  152,  152,   86,  152,

      152,  152,  152,   94,  152,  152,  152,  152,  152,  152,
      152,  150,   56,  150,  150,   51,  150,   97,  150,  150,
      150,  150,  150,   98,  108,  150,   63,  150,  150,  150,
      150,  150,  150,  150,   90,  150,  150,  150,  150,   79,
      150,  150,  150,  150,  150,  150,   88,  150,  150,  150,
      150,  150,  150,   86,  150,  150,  150,   94,  150,  150,
      150,  150,  150,  149,  149,  149,  118,  126,  117,  149,
      149,  128,  121,  124,  149,  149,  129,  149,  149,  149,
      149,  149,  135,  143,  134,  149,  149,  146,  138,  141,
      149,  149,  147,  149,  149,  160,  160,  160,  152,   53,

       50,  152,  152,  152,  152,   96,   61,  152,  152,   85,
      152,   72,  152,  152,   71,  152,  152,  152,  152,  152,
      152,  152,  152,  152,  105,  152,  152,  152,   89,  152,
       87,  152,  152,  152,  152,  152,  152,  150,   53,  150,
       50,  150,  150,   96,  150,   72,  150,  150,  150,  150,
      150,  150,  150,  150,  150,  150,   61,  150,   85,  150,
      150,  150,   71,  150,  150,  150,  150,  150,  150,  105,
      150,  150,   89,   87,  150,  150,  150,  150,  149,  119,
      116,  149,  149,  128,  128,  123,  149,  127,  149,  149,
      136,  133,  149,  149,  146,  146,  140,  149,  145,  149,

      160,  160,  158,  152,  152,  152,  152,  152,  152,   62,
      152,  152,  152,   52,  152,   47,  152,  152,   95,   48,
       70,  152,  152,  152,  152,   67,  152,   84,   68,  152,
      152,  152,  150,   60,  150,  150,  150,  150,  150,   95,
      150,  150,   67,  150,  150,  150,  150,   62,  150,  150,
      150,   52,   47,  150,   48,   70,  150,  150,  150,  150,
       84,   68,  150,  149,  149,   62,  125,  122,  149,  149,
      149,  144,  142,  139,  149,  159,  157,  152,  152,  152,
      152,   73,  152,  152,  104,  152,  152,  152,   91,  152,
       93,  107,  152,  152,  152,   80,   49,  152,  152,  150,

      150,   73,  150,  150,  150,   99,  107,  150,  150,  150,
      150,  150,  150,  104,  150,   91,  150,   93,  150,  150,
       80,   49,  149,  149,  149,  149,  149,  149,  130,  152,
      152,  152,  152,  152,  152,   57,  152,  152,  152,  152,
       78,  152,  148,  152,  130,  150,  150,   57,  150,  150,
      148,  150,  150,  150,  150,  150,  150,  150,  150,   78,
      130,  115,  120,  148,  132,  137,  152,  152,  152,  152,
      152,  152,  152,  152,  152,  152,  152,  152,  150,  150,
      150,  150,  150,  150,  150,  150,  150,  150,  150,  150,
      152,  152,  152,  152,  152,  152,  152,  152,  152,   69,

      152,  152,  150,  150,  150,  150,  150,  150,  150,  150,
      150,  150,  150,   69,  152,  152,  152,  152,  152,  152,
       92,   82,  152,  152,  152,  150,  150,   92,  150,  150,
      150,  150,  150,  150,   82,  150,   75,  152,  152,  109,
      152,  152,  152,  152,  152,  150,  109,  150,  150,   75,
      150,  150,  150,  150,  152,  152,  152,  152,   81,  152,
      152,  150,  150,  150,  150,  150,  150,   81,  152,  152,
      152,  152,  152,   65,   64,  150,  150,   65,   64,  150,
      150,  150,  152,  152,  152,  152,  152,  150,  150,  150,
      150,  150,  152,  152,   55,  152,  152,  150,   55,  150,

      150,  150,  152,  152,  152,  152,  150,  150,  150,  150,
      152,   54,  152,  152,   54,  150,  150,  150,  152,  152,
      152,  150,  150,  150,  152,  152,  152,  150,  150,  150,
       74,  152,  152,   74,  150,  150,  152,  152,  150,  150,
       76,  152,   76,  150,  152,  150,   77,   77,    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,   16,   48,   49,   50,
       51,   52,   53,   54,   55,    1,   56,   57,   58,   59,

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

        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    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[81] =
    {   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,
        8,   10,    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[1172] =
    {   0,
        0,    0,    0,    0,   80,    0,  154,    0,  223,  302,
      381,    0,  162,  172,  461,  541,  621,  701, 2057, 2058,
     2058, 2054, 2058, 2032, 2049,  764, 2058,  153, 2058, 2058,
     2030, 2029,    0, 2028,    0,  154,  300,  232,    0, 2058,
      147, 2027,  166,    0,  226,  168,  157,  177,  170,  182,
     2006, 2011, 2008, 2016,  222,  137,  224,  213,  224, 1999,
      239, 2018, 2013,    0,    0, 1985, 1981, 1969, 1975, 2058,
      183, 2058,    0, 2058, 2036, 2014, 2031,  808, 2058,  257,
     2058, 2058, 2012, 2011, 2058,  217,    0,  263,  852,  210,
     2058, 2058,  267, 2010,  268, 2058,  910,  305,  314,  461,

      472,  333, 1989, 1992, 2000, 1989,  145,  300, 1981, 1984,
     1992, 2058, 2058,  466, 1961, 2058,  255, 2058,    0,  968,
      550,  628,  492,  327,  253,  474,  289,  329, 1987, 1984,
      305,  496,  317,  325,  459, 1976,  540, 1995, 1990, 1962,
     1958, 1946, 1012, 2058, 2058,    0, 2058, 2058, 2013, 1056,
     1992, 1991, 2058, 1990,    0, 1989,    0,  298, 2058,    0,
     1988, 2058, 1100,  470,  498,  530,  560,  544,  493, 1984,
     1966, 1962,  299, 1964, 2058, 2058,  622,  577,  621,  659,
      623,  218, 1950, 1934, 1930,  517, 1932,    0, 2000, 2058,
        0, 2058,    0, 2058, 2058, 2058, 1981,  457,  571,  514,

     2058, 2058, 1998, 2058, 1994, 2058,    0, 1158, 2058, 2058,
        0,    0,    0,    0,    0,  710,    0,  540, 1975, 2058,
        0, 2058, 1974, 1952, 1966, 1960,    0, 1954, 1952, 1946,
      561, 1960, 1944, 1957, 1957, 1941,  551, 1948, 1944, 1940,
     1942, 1944,  624, 1950, 1940,  577, 1937, 1939, 1928,  625,
     1941, 1929, 1943, 1943, 1931, 1944,  583, 1929, 1918, 1924,
     1920, 1939, 1920, 1920, 1919, 1889, 1892, 1897, 1882, 2058,
     2058,    0, 1208, 2058, 2058, 2058,    0, 2058,    0,  500,
      721,    0, 2058, 2058,    0, 2058,  645,  706,  727,    0,
     1923, 1912,    0,  760, 1916, 1914, 1912,  771,  813, 1922,

     1923, 1910, 1918, 1918, 1921, 1898, 1906, 1896,  573, 1913,
     1902, 1891,  774, 1864,  709,  794,    0, 1895, 1909, 1892,
      622, 1906, 1890, 1903, 1888,  623, 1895, 1891, 1887, 1892,
      727, 1889,  628,  565, 1889,  817, 1892, 1880, 1894, 1894,
     1896,  643, 1881, 1877, 1873, 1892, 1873, 1873, 1872, 1842,
     1845, 1850,    0, 1258, 1908, 2058,    0, 1308,    0,    0,
     2058,    0,  643,  705,  648,    0, 1876,  816,  847, 1875,
     1879, 1862, 1863, 1861, 1878, 1865, 1873, 1874, 1872, 1873,
     1852,  780, 1824,  804,  835, 1813, 1807, 1782, 1776, 1772,
     1785, 1773, 1776, 1767, 1755, 1746, 1722, 1792,    0,    0,

     1758, 1757,  658,  693,  789, 2058, 2058, 1736, 1732, 1735,
     1659, 1659, 1656, 1641, 1635, 1657, 1656, 1647, 1652, 1636,
     1641, 1647, 1639, 1649, 1646, 1627,    0, 1635, 1631, 1636,
     1623, 1627, 1635, 1636, 1632,    0, 1623, 1617, 1618, 1623,
     1619, 1626, 1616, 1613, 1612, 1607, 1624, 1609, 1606, 1607,
     1619, 1603, 1621, 1603, 1608, 1612, 1599, 1573,    0,    0,
     1581,    0,    0,  837, 1600,  887, 1607, 1608, 1603, 1603,
     1581, 1603,  915, 1600, 1590, 1579, 1579, 1574, 1580,    0,
        0, 1563, 1564, 1566, 1562, 1557, 1573, 1533, 1541, 1557,
     1569, 1554, 1571, 1562, 1552, 1564, 1556, 1566, 1563,    0,

     1553, 1555, 1542, 1554, 1553,    0, 1544, 1546, 1550, 1540,
     1537, 1536, 1549, 1534, 1531, 1532, 1529, 1547, 1529, 1534,
     1538, 1525,    0,    0,    0,    0, 1528,  665, 1537, 1536,
     1524,    0, 1534, 1525, 1517, 1532, 1530, 1529, 1516, 1507,
     1508, 1511, 1480,  674, 1488, 1486, 1470,    0, 1476, 1463,
     1456, 1469, 1467, 1466, 1459, 1451, 1452, 1454,  448,  274,
      685, 1484,    0, 1481,    0, 1483,    0, 1473,    0, 1472,
     1461, 1476, 1469, 1464, 1466, 1468,    0, 1465, 1479, 1466,
     1460,    0, 1478, 1459,    0, 1458, 1476,    0, 1458,    0,
     1460, 1459, 1472, 1463, 1450, 1458, 1450, 1459,    0, 1464,

     1457, 1445, 1449,    0, 1459, 1442, 1452, 1455, 1450, 1417,
     1413, 1444,    0, 1441, 1431,    0, 1437,    0, 1417, 1432,
     1425, 1423, 1426,    0,    0, 1435,    0, 1417, 1425, 1413,
     1415, 1408, 1381, 1377,    0, 1400, 1399, 1394, 1399,    0,
     1396, 1410, 1393, 1411, 1392, 1391,    0, 1392, 1394, 1399,
     1386, 1394, 1386,    0, 1400, 1393, 1381,    0, 1396, 1379,
     1389, 1392, 1387, 1383, 1375, 1379,    0,    0,    0, 1374,
     1390, 1375,    0,    0, 1372, 1380,    0, 1368, 1384, 1345,
     1338, 1341,    0,    0,    0, 1337, 1351, 1454,    0,    0,
     1335, 1341,    0, 1331, 1345,  835,  688,  718, 1356,    0,

        0, 1358, 1365, 1350, 1363,    0,    0, 1363, 1352,    0,
     1335,    0, 1359, 1348,    0, 1345, 1345, 1323, 1327, 1344,
     1334, 1323, 1316, 1334,    0, 1330, 1325, 1317,    0, 1325,
        0, 1309, 1327, 1308, 1312, 1277, 1289, 1303,    0, 1303,
        0, 1303, 1315,    0, 1314,    0, 1313, 1297, 1311, 1307,
     1303, 1300, 1256, 1268, 1285, 1294,    0, 1283,    0, 1266,
     1291, 1279,    0, 1279, 1262, 1284, 1270, 1263, 1281,    0,
     1273, 1265,    0,    0, 1258, 1276, 1257, 1261, 1254,    0,
     1261, 1259, 1252,    0, 1533,    0, 1267,    0, 1267, 1218,
        0, 1224, 1222, 1210,    0, 1612,    0, 1224,    0, 1225,

      608,  790, 1260, 1234, 1232, 1219, 1242, 1242, 1240,    0,
     1235, 1232, 1216,    0, 1231,    0, 1215, 1213,    0,    0,
     1202, 1207, 1225, 1199, 1214, 1197, 1210,    0,    0, 1211,
     1176, 1193,  141,    0,  174,  179,  235,  266,  254,    0,
      303,  344,  434,  421,  473,  526,  557,    0,  608,  664,
      671,    0,    0,  672,    0,  671,  688,  697,  726,  725,
        0,    0,  731,  728,  745,    0,    0,    0,  754,  729,
      737,    0,    0,    0,  741,  808,  809,  803,  821,  811,
      831,    0,  822,  846,    0,  832,  846,  850,    0,  868,
        0,    0,  866,  852,  864,    0,    0,  838,  838,  873,

      873,    0,  863,  877,  879,    0,    0,  890,  865,  863,
      905,  894,  895,    0,  890,    0,  920,    0,  919,  909,
        0,    0,  926,  928,  931,  902,  904,  904,    0,  920,
      945,  936,  944,  938,  949,    0,  948,  937,  941,  948,
        0,  953,    0,  924,    0,  950,  958,    0,  960,  961,
        0,  932,  948,  973,  963,  974,  960,  964,  971,    0,
        0,    0,    0,    0,    0,    0,  966,  972,  978,  975,
      972,  971,  981,  985,  971,  972,  990,  961,  988,  985,
      989,  995,  966,  983,  997,  995,  994, 1007,  993,  994,
     1001, 1015, 1007, 1010, 1008, 1011, 1006, 1018, 1014,    0,

     1024,  995, 1016, 1019, 1013, 1029, 1000, 1017, 1031, 1022,
     1025, 1031, 1027,    0, 1022, 1039, 1031, 1047, 1039, 1041,
        0,    0, 1054, 1051, 1028, 1044, 1060,    0, 1061, 1032,
     1049, 1066, 1056, 1058,    0, 1071,    0, 1053, 1044,    0,
     1045, 1061, 1057, 1060, 1033, 1050,    0, 1063, 1036,    0,
     1063, 1054, 1070, 1066, 1065, 1095, 1096, 1084,    0, 1080,
     1060, 1108, 1091, 1064, 1084, 1115, 1103,    0, 1099, 1107,
     1106, 1109, 1092,    0,    0, 1112, 1111,    0,    0, 1107,
     1115, 1098, 1105, 1121, 1133, 1127, 1139, 1132, 1138, 1119,
     1133, 1145, 1134, 1141,    0, 1134, 1141, 1147,    0, 1142,

     1141, 1145, 1156, 1151, 1163, 1155, 1154, 1168, 1169, 1161,
     1159,    0, 1174, 1161,    0, 1162, 1177, 1164, 1168, 1161,
     1179, 1171, 1164, 1182, 1167, 1178, 1187, 1176, 1187, 1196,
        0, 1184, 1183,    0, 1189, 1185, 1192, 1198, 1194, 1206,
        0, 1201,    0, 1202, 1204, 1206,    0,    0, 2058, 1691,
     1702, 1713, 1724, 1735, 1746, 1754, 1762, 1770, 1781, 1789,
     1800, 1811, 1822, 1825, 1834, 1842, 1236, 1853, 1864, 1875,
     1886
    } ;

static yyconst short int yy_def[1172] =
    {   0,
     1150, 1150, 1149,    3, 1149,    5,    5,    7, 1151, 1151,
     1149,   11, 1152, 1152, 1153, 1153, 1154, 1154, 1149, 1149,
     1149, 1149, 1149, 1149, 1155, 1156, 1149, 1149, 1149, 1149,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1149,
     1149, 1156, 1149, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1149,
     1149, 1149, 1156, 1149, 1149, 1149, 1155, 1157, 1149, 1149,
     1149, 1149, 1149, 1149, 1149, 1149, 1157, 1157, 1149,   89,
     1149, 1149, 1149, 1149, 1149, 1149, 1157,   97,   97,   97,

       97,   97, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1149, 1149,   97, 1157, 1149, 1149, 1149, 1157, 1157,
     1149, 1149, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1158, 1149, 1149, 1158, 1149, 1149, 1159, 1160,
     1161, 1149, 1149, 1149, 1160, 1160,   89,   89, 1149, 1162,
     1149, 1149, 1160,  163,  163,  163,  163,  163, 1160, 1160,
     1160, 1160, 1160, 1160, 1149, 1149,  163,  163,  163,  163,
      163, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1149, 1149,
     1163, 1149, 1164, 1149, 1149, 1149, 1165, 1165, 1165, 1165,

     1149, 1149, 1149, 1149, 1155, 1149, 1156, 1156, 1149, 1149,
     1156, 1156, 1156, 1156, 1156, 1156, 1156,  208, 1149, 1149,
     1156, 1149, 1149, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1149,
     1149, 1157, 1157, 1149, 1149, 1149, 1166, 1149, 1157,   89,
       89,  281, 1149, 1149, 1167, 1149,   97,   97,   97, 1157,
     1157, 1157, 1157,   97, 1157, 1157, 1157,   97,   97, 1157,

     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157,   97, 1157,  120, 1149, 1167, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1158, 1158, 1159, 1149, 1160, 1160, 1161, 1161,
     1149, 1162,  163,  163,  163, 1160, 1160,  163,  163, 1160,
     1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160,
     1160,  163, 1160,  163,  163, 1160, 1160, 1160, 1160, 1160,
     1160, 1160, 1160, 1160, 1160, 1160, 1160, 1149, 1163, 1164,

     1165, 1149, 1165, 1165, 1165, 1149, 1149, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1157, 1166, 1167, 1157,   97, 1157, 1157, 1157, 1157,
     1157, 1157,   97, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,

     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1158, 1160, 1160, 1160, 1160, 1160,
     1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160,
     1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160,
     1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1165, 1165,
     1165, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,

     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1160, 1160, 1160, 1160, 1160, 1160, 1160,
     1160, 1168, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160,
     1160, 1160, 1160, 1160, 1160, 1160, 1160, 1169, 1160, 1160,
     1160, 1160, 1160, 1160, 1160, 1165, 1165, 1165, 1156, 1156,

     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1160, 1160,
     1160, 1160, 1160, 1170, 1168, 1160, 1160, 1160, 1160, 1160,
     1160, 1160, 1160, 1160, 1171, 1169, 1160, 1160, 1160, 1160,

     1165, 1165, 1165, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1156, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1160, 1160, 1160, 1160, 1160, 1160, 1160,
     1160, 1160, 1160, 1160, 1160, 1165, 1165, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1157,

     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1160, 1160, 1160, 1160, 1160, 1160, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1160, 1160, 1160, 1160, 1160, 1160, 1156, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,

     1156, 1156, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1156, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1156, 1156, 1156, 1156, 1156, 1156,
     1156, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1156, 1156, 1156, 1156, 1156, 1157, 1157, 1157,
     1157, 1157, 1156, 1156, 1156, 1156, 1156, 1157, 1157, 1157,

     1157, 1157, 1156, 1156, 1156, 1156, 1157, 1157, 1157, 1157,
     1156, 1156, 1156, 1156, 1157, 1157, 1157, 1157, 1156, 1156,
     1156, 1157, 1157, 1157, 1156, 1156, 1156, 1157, 1157, 1157,
     1156, 1156, 1156, 1157, 1157, 1157, 1156, 1156, 1157, 1157,
     1156, 1156, 1157, 1157, 1156, 1157, 1156, 1157,    0, 1149,
     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
     1149
    } ;

static yyconst short int yy_nxt[2139] =
    {   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,
       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,
      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,  209,  247,  189,  190,  214,  248,  191,  219,  220,
      306,  121,  122,  189,  190,  210,  215,  191,  307,  123,
      124,  125,  126,  127,  128,  900,  129,  130,  222,  223,
      131,  132,  133,  134,  135,  136,  231,  137,  138,  232,

      139,  228,  233,  901,  229,  270,  234,  902,  236,  140,
       87,   87,   87,   87,   87,  238,  230,  237,  239,  141,
      235,  240,  142,   74,   74,   20,   74,   74,   74,  143,
       74,   74,   74,   74,   74,  144,   74,  145,  192,  276,
      121,  122,   74,   74,   74,  147,   74,   74,  192,  216,
      216,  245,  224,  249,  225,  251,  254,  283,  252,  253,
      271,  246,  226,  250,  903,  209,  255,  217,  257,  217,
      227,  258,  259,   74,  278,   74,   74,  270,  260,  210,
      261,  390,  277,  262,  283,  279,  391,  263,  219,  220,
      222,  223,  321,  402,  904,  322,  217,  905,  217,   74,

       74,   74,   74,   74,   20,   74,   74,   74,  143,   74,
       74,   74,   74,   74,  144,   74,  145,  216,  216,  121,
      122,   74,   74,   74,  147,   74,   74,  325,  379,  308,
      697,  294,  271,  294,  332,  217,  326,  217,  295,  309,
      294,  296,  294,  380,  333,  283,  308,  218,  272,  272,
      272,  906,   74,  297,   74,   74,  336,  272,  272,  294,
      295,  294,  327,  296,  217,  328,  217,  337,  329,  272,
      338,  339,  283,  907,  218,  320,  272,  272,   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,  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,  402,   21,   21,
       21,   21,   21,   21,  194,   21,  402,   21,   21,   21,
      194,  194,   21,   21,   21,   21,  298,  294,  908,  294,
      299,  340,  294,  909,  294,  368,  365,  272,  294,  323,

      294,  311,  272,  324,  300,  272,  357,  696,  272,  272,
      272,   21,   21,   21,   21,  272,  272,  300,  318,  301,
      319,  334,  313,  369,  365,  335,  374,  910,  291,  307,
      370,  403,  375,  402,  357,  292,  293,  195,   21,  196,
       21,   21,  189,  190,   21,   21,  191,  283,   21,   21,
       21,   21,   21,   21,  194,   21,  365,   21,   21,   21,
      194,  194,   21,   21,   21,   21,  357,  316,  316,  342,
      365,  911,  343,  312,  283,  207,  395,  207,  421,  344,
      357,  345,  405,  373,  346,  284,  365,  284,  347,  396,
      402,   21,   21,   21,   21,  422,  357,  317,  371,  414,

      483,  415,  434,  365,  207,  506,  207,  372,  448,  484,
      449,  912,  480,  357,  284,  435,  284,  195,   21,  196,
       21,   21,  189,  190,  317,   25,  191,  402,   21,   21,
       21,   21,  384,   21,  194,  913,  404,   21,   21,   21,
      194,  194,   21,   21,   21,  316,  316,  365,  365,  365,
      475,  428,  439,  479,  429,  440,  430,  357,  357,  357,
      492,  441,  471,  284,  431,  284,  505,  496,  514,  365,
      515,  294,   21,  294,  365,  876,  385,  402,  382,  357,
      198,  272,  199,  386,  357,  365,  200,  383,  272,  272,
      665,  389,  284,  914,  284,  357,  666,  201,   21,  202,

       21,   21,  189,  190,  402,   25,  191,  402,   21,   21,
       21,   21,  402,   21,  194,  915,  916,   21,   21,   21,
      194,  194,   21,   21,   21,  917,  387,  216,  216,  681,
      559,  365,  294,  388,  294,  682,  918,  402,  281,  281,
      698,  357,  272,  802,  462,  217,  462,  217,  527,  465,
      272,  919,   21,  294,  501,  466, 1149,  477, 1149,  502,
      198,  560,  199,  272,  920,  921,  200,  503,  283,  922,
      272,  272,  923,  462,  217,  462,  217,  201,   21,  202,
       21,  208,  208,  803,  924, 1149,  294, 1149,  294,  208,
      208,  208,  208,  208,  208,  283,  272,  294,  925,  294,

      294,  926,  294,  272,  272,  927,  365,  272,  402,  402,
      272,  316,  316,  928,  272,  472,  357,  272,  272,  208,
      208,  208,  208,  208,  208,  273,  273,  402,  402,  284,
      365,  284,  929,  273,  273,  273,  273,  273,  273,  294,
      357,  294,  365,  473,  483,  488,  561,  508,  930,  272,
      931,  543,  357,  484,  402,  877,  272,  272,  284,  529,
      284,  365,  932,  273,  273,  273,  273,  273,  273,  280,
      280,  357,  284,  365,  284,  545,  933,  281,  282,  281,
      282,  281,  281,  357,  283,  934,  935,  284,  936,  284,
      530,  283,  937,  938,  940,  941,  942,  943,  939,  285,

      944,  284,  945,  284,  946,  801,  546,  281,  282,  281,
      282,  281,  281,  294,  283,  294,  284,  947,  284,  948,
      283,  949,  950,  272,  951,  952,  285,  287,  287,  613,
      272,  272,  953,  954,  955,  287,  288,  287,  289,  287,
      287,  294,  290,  294,  956,  957,  291,  959,  620,  290,
      958,  272,  960,  292,  293,  961,  962,  290,  272,  272,
      963,  964,  965,  966,  967,  287,  294,  287,  294,  287,
      287,  968,  290,  969,  970,  971,  972,  973,  290,  974,
      975,  976,  977,  978,  290,  315,  315,  979,  980,  981,
      982,  983,  984,  315,  315,  315,  315,  315,  315,  985,

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

     1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067,
     1068,  358,  358,  358,  358,  358,  358,  363,  363, 1069,
     1070, 1072, 1073, 1074, 1071,  363,  364,  363,  365,  363,
      363, 1075,  366, 1076, 1078, 1079,  367, 1077, 1080,  366,
     1081, 1082, 1083, 1084, 1085, 1086, 1087,  366, 1088, 1089,
     1090, 1091, 1092, 1093, 1094,  363,  365,  363,  365,  363,
      363, 1095,  366, 1096, 1097, 1098, 1099, 1100,  366, 1101,
     1102, 1103, 1104, 1105,  366,  208,  208, 1106, 1107, 1108,
     1109, 1110, 1111,  208,  208,  208,  208,  208,  208, 1112,
     1113, 1114, 1115,  217, 1116,  217, 1117, 1118, 1119, 1120,

     1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130,
     1131, 1132, 1133,  208,  208,  208,  208,  208,  208, 1134,
     1135, 1136,  217, 1137,  217,  273,  273, 1138, 1139, 1140,
     1141, 1142, 1143,  273,  273,  273,  273,  273,  273, 1144,
     1145, 1146, 1147,  462, 1148,  462,  464,  899,  898,  897,
      896,  895,  894,  893,  892,  891,  890,  889,  888,  887,
      886,  885,  884,  273,  273,  273,  273,  273,  273,  883,
      882,  881,  462,  880,  462,  354,  354,  879,  878,  402,
      875,  874,  873,  354,  354,  354,  354,  354,  354,  872,
      871,  870,  869,  525,  868,  525,  867,  866,  865,  864,

      863,  862,  861,  860,  859,  858,  857,  856,  855,  854,
      853,  852,  851,  354,  354,  354,  354,  354,  354,  850,
      849,  848,  525,  847,  525,  358,  358,  846,  845,  844,
      843,  842,  841,  358,  358,  358,  358,  358,  358,  840,
      839,  838,  837,  526,  836,  526,  835,  834,  833,  832,
      831,  830,  829,  828,  827,  826,  825,  824,  823,  822,
      821,  820,  819,  358,  358,  358,  358,  358,  358,  818,
      817,  816,  526,  815,  526,  784,  784,  814,  784,  784,
      784,  813,  784,  784,  784,  784,  784,  812,  784,  811,
      810,  809,  808,  807,  806,  784,  784,  784,  784,  784,

      805,  804,  800,  799,  798,  797,  794,  793,  792,  791,
      790,  789,  788,  787,  786,  783,  782,  781,  780,  779,
      778,  777,  776,  775,  774,  773,  772,  771,  784,  770,
      769,  768,  767,  766,  765,  764,  763,  762,  761,  760,
      759,  758,  757,  756,  755,  754,  753,  752,  751,  750,
      749,  784,  784,  784,  795,  795,  748,  795,  795,  795,
      747,  795,  795,  795,  795,  795,  746,  795,  745,  744,
      743,  742,  741,  740,  795,  795,  795,  795,  795,  739,
      738,  737,  736,  735,  734,  733,  732,  731,  730,  729,
      728,  727,  726,  725,  724,  723,  722,  721,  720,  719,

      718,  717,  716,  715,  714,  713,  712,  795,  711,  710,
      709,  708,  707,  706,  705,  704,  703,  702,  701,  700,
      699,  695,  694,  693,  692,  691,  690,  689,  688,  687,
      795,  795,  795,  784,  784,  686,  784,  784,  784,  685,
      784,  784,  784,  784,  784,  684,  784,  683,  680,  679,
      678,  677,  676,  784,  784,  784,  784,  784,  675,  674,
      673,  672,  671,  670,  669,  668,  667,  664,  663,  662,
      661,  660,  659,  658,  657,  656,  655,  654,  653,  652,
      651,  650,  649,  648,  647,  646,  784,  645,  644,  643,
      642,  641,  640,  639,  638,  620,  637,  636,  635,  613,

      634,  633,  632,  631,  630,  629,  628,  627,  626,  784,
      784,  784,  795,  795,  625,  795,  795,  795,  624,  795,
      795,  795,  795,  795,  623,  795,  622,  621,  619,  618,
      617,  616,  795,  795,  795,  795,  795,  615,  614,  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,  795,  586,  585,  584,  583,
      582,  581,  580,  579,  578,  577,  576,  575,  574,  573,
      572,  571,  570,  569,  568,  567,  566,  565,  795,  795,
      795,   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,  193,  193,  193,  193,  193,  193,
      193,  193,  193,  193,  193,  197,  197,  197,  197,  197,
      197,  197,  197,  197,  197,  197,  205,  205,  205,  205,
      205,  205,  205,  205,  205,  205,  205,  207,  207,  207,
      207,  207,  207,  207,  207,  272,  564,  272,  272,  272,
      272,  272,  272,  353,  563,  562,  401,  402,  353,  353,
      353,  355,  355,  355,  355,  355,  355,  355,  355,  355,
      355,  355,  357,  398,  357,  558,  357,  357,  357,  357,

      359,  557,  359,  359,  359,  359,  359,  359,  359,  359,
      359,  362,  556,  362,  362,  362,  362,  362,  362,  362,
      362,  362,  399,  555,  399,  399,  399,  399,  399,  399,
      399,  399,  399,  400,  554,  400,  401,  401,  401,  553,
      552,  401,  401,  551,  401,  463,  550,  463,  463,  463,
      463,  463,  463,  785,  549,  785,  785,  785,  785,  785,
      785,  785,  785,  785,  796,  548,  796,  796,  796,  796,
      796,  796,  796,  796,  796,  784,  547,  784,  784,  784,
      784,  784,  784,  784,  784,  784,  795,  544,  795,  795,
      795,  795,  795,  795,  795,  795,  795,  542,  541,  540,

      539,  538,  537,  536,  535,  534,  533,  532,  531,  528,
      356,  524,  523,  488,  522,  521,  520,  519,  518,  517,
      516,  513,  512,  511,  510,  509,  507,  504,  500,  499,
      498,  497,  495,  494,  472,  493,  491,  490,  465,  489,
      487,  486,  485,  482,  481,  480,  479,  478,  477,  476,
      475,  474,  471,  470,  469,  468,  467,  461,  460,  459,
      458,  457,  456,  455,  454,  453,  452,  451,  450,  447,
      446,  445,  444,  443,  442,  438,  437,  436,  433,  432,
      427,  426,  425,  424,  423,  420,  419,  418,  417,  416,
      413,  412,  411,  410,  409,  408,  407,  406,  206,  203,

      402,  398,  397,  394,  393,  392,  381,  378,  377,  376,
      286,  361,  276,  275,  360,  356,  352,  351,  350,  349,
      348,  341,  331,  330,  314,  312,  311,  310,  305,  304,
      303,  302,  286,  275,  274,  206,  204,  203,  269,  268,
      267,  266,  265,  264,  256,  244,  243,  242,  241,  221,
      213,  212,  211,  206,  204,  203, 1149,   19, 1149, 1149,
     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,

     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149
    } ;

static yyconst short int yy_chk[2139] =
    {   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,
        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,
      107,    7,    7,   14,   14,   28,   36,   14,  107,    7,
        7,    7,    7,    7,    7,  833,    7,    7,   43,   43,
        7,    7,    7,    7,    7,    7,   47,    7,    7,   47,

        7,   46,   48,  835,   46,   71,   48,  836,   49,    7,
        7,    7,    7,    7,    7,   50,   46,   49,   50,    7,
       48,   50,    7,    9,    9,    9,    9,    9,    9,    9,
        9,    9,    9,    9,    9,    9,    9,    9,   13,   86,
        9,    9,    9,    9,    9,    9,    9,    9,   14,   38,
       38,   55,   45,   57,   45,   58,   59,   90,   58,   58,
       71,   55,   45,   57,  837,   80,   59,   38,   61,   38,
       45,   61,   61,    9,   88,    9,    9,  117,   61,   80,
       61,  182,   86,   61,   90,   88,  182,   61,   93,   93,
       95,   95,  125,  560,  838,  125,   38,  839,   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,  127,  173,  108,
      560,   98,  117,   98,  131,   37,  127,   37,   98,  108,
       99,   98,   99,  173,  131,  158,  133,   37,   98,   98,
       99,  841,   10,   99,   10,   10,  133,   99,   99,  102,
      124,  102,  128,  124,   37,  128,   37,  134,  128,  102,
      134,  134,  158,  842,   37,  124,  102,  102,   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,   15,   15,   15,   15,   15,   15,  559,   15,   15,
       15,   15,   15,   15,   15,   15,  198,   15,   15,   15,
       15,   15,   15,   15,   15,   15,  100,  100,  843,  100,
      100,  135,  114,  844,  114,  164,  164,  100,  101,  126,

      101,  135,  114,  126,  100,  100,  164,  559,  101,  114,
      114,   15,   15,   15,   15,  101,  101,  126,  123,  101,
      123,  132,  114,  165,  165,  132,  169,  845,  123,  132,
      165,  198,  169,  200,  165,  123,  123,   15,   15,   15,
       15,   16,   16,   16,   16,   16,   16,  280,   16,   16,
       16,   16,   16,   16,   16,   16,  166,   16,   16,   16,
       16,   16,   16,   16,   16,   16,  166,  121,  121,  137,
      168,  846,  137,  137,  280,  218,  186,  218,  237,  137,
      168,  137,  200,  168,  137,  121,  167,  121,  137,  186,
      199,   16,   16,   16,   16,  237,  167,  121,  167,  231,

      309,  231,  246,  178,  218,  334,  218,  167,  257,  309,
      257,  847,  334,  178,  121,  246,  121,   16,   16,   16,
       16,   17,   17,   17,  121,   17,   17,  801,   17,   17,
       17,   17,  178,   17,   17,  849,  199,   17,   17,   17,
       17,   17,   17,   17,   17,  122,  122,  179,  177,  181,
      326,  243,  250,  333,  243,  250,  243,  179,  177,  181,
      321,  250,  321,  122,  243,  122,  333,  326,  342,  363,
      342,  287,   17,  287,  365,  801,  179,  403,  177,  363,
       17,  287,   17,  179,  365,  180,   17,  177,  287,  287,
      528,  181,  122,  850,  122,  180,  528,   17,   17,   17,

       17,   18,   18,   18,  561,   18,   18,  697,   18,   18,
       18,   18,  404,   18,   18,  851,  854,   18,   18,   18,
       18,   18,   18,   18,   18,  856,  180,  216,  216,  544,
      403,  364,  288,  180,  288,  544,  857,  698,  281,  281,
      561,  364,  288,  697,  315,  216,  315,  216,  364,  288,
      288,  858,   18,  289,  331,  289,  281,  331,  281,  331,
       18,  404,   18,  289,  859,  860,   18,  331,  281,  863,
      289,  289,  864,  315,  216,  315,  216,   18,   18,   18,
       18,   26,   26,  698,  865,  281,  294,  281,  294,   26,
       26,   26,   26,   26,   26,  281,  294,  298,  869,  298,

      313,  870,  313,  294,  294,  871,  382,  298,  405,  802,
      313,  316,  316,  875,  298,  298,  382,  313,  313,   26,
       26,   26,   26,   26,   26,   78,   78,  876,  877,  316,
      384,  316,  878,   78,   78,   78,   78,   78,   78,  299,
      384,  299,  368,  299,  336,  313,  405,  336,  879,  299,
      880,  382,  368,  336,  696,  802,  299,  299,  316,  368,
      316,  385,  881,   78,   78,   78,   78,   78,   78,   89,
       89,  385,  464,  369,  464,  384,  883,   89,   89,   89,
       89,   89,   89,  369,   89,  884,  886,   89,  887,   89,
      369,   89,  888,  890,  893,  894,  895,  898,  890,   89,

      899,  464,  900,  464,  901,  696,  385,   89,   89,   89,
       89,   89,   89,  466,   89,  466,   89,  903,   89,  904,
       89,  905,  908,  466,  909,  910,   89,   97,   97,  466,
      466,  466,  911,  912,  913,   97,   97,   97,   97,   97,
       97,  473,   97,  473,  915,  917,   97,  919,  473,   97,
      917,  473,  920,   97,   97,  923,  924,   97,  473,  473,
      925,  926,  927,  928,  930,   97,   97,   97,   97,   97,
       97,  931,   97,  932,  933,  934,  935,  937,   97,  938,
      939,  940,  942,  944,   97,  120,  120,  946,  947,  949,
      950,  952,  953,  120,  120,  120,  120,  120,  120,  954,

      955,  956,  957,  958,  959,  967,  968,  969,  970,  971,
      972,  973,  974,  975,  976,  977,  978,  979,  980,  981,
      982,  983,  984,  120,  120,  120,  120,  120,  120,  143,
      143,  985,  986,  987,  988,  989,  990,  143,  143,  143,
      143,  143,  143,  991,  992,  993,  994,  995,  996,  997,
      998,  999, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008,
     1009, 1010, 1011, 1012, 1013, 1015, 1016,  143,  143,  143,
      143,  143,  143,  150,  150, 1017, 1018, 1019, 1020, 1023,
     1024,  150,  150,  150,  150,  150,  150, 1025, 1026, 1027,
     1029, 1030, 1031, 1032, 1033, 1034, 1036, 1038, 1039, 1041,

     1042, 1043, 1044, 1045, 1046, 1048, 1049, 1051, 1052, 1053,
     1054,  150,  150,  150,  150,  150,  150,  163,  163, 1055,
     1056, 1057, 1058, 1060, 1056,  163,  163,  163,  163,  163,
      163, 1061,  163, 1062, 1063, 1064,  163, 1062, 1065,  163,
     1066, 1067, 1069, 1070, 1071, 1072, 1073,  163, 1076, 1077,
     1080, 1081, 1082, 1083, 1084,  163,  163,  163,  163,  163,
      163, 1085,  163, 1086, 1087, 1088, 1089, 1090,  163, 1091,
     1092, 1093, 1094, 1096,  163,  208,  208, 1097, 1098, 1100,
     1101, 1102, 1103,  208,  208,  208,  208,  208,  208, 1104,
     1105, 1106, 1107,  208, 1108,  208, 1109, 1110, 1111, 1113,

     1114, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124,
     1125, 1126, 1127,  208,  208,  208,  208,  208,  208, 1128,
     1129, 1130,  208, 1132,  208,  273,  273, 1133, 1135, 1136,
     1137, 1138, 1139,  273,  273,  273,  273,  273,  273, 1140,
     1142, 1144, 1145,  273, 1146,  273, 1167,  832,  831,  830,
      827,  826,  825,  824,  823,  822,  821,  818,  817,  815,
      813,  812,  811,  273,  273,  273,  273,  273,  273,  809,
      808,  807,  273,  806,  273,  354,  354,  805,  804,  803,
      800,  798,  794,  354,  354,  354,  354,  354,  354,  793,
      792,  790,  789,  354,  787,  354,  783,  782,  781,  779,

      778,  777,  776,  775,  772,  771,  769,  768,  767,  766,
      765,  764,  762,  354,  354,  354,  354,  354,  354,  761,
      760,  758,  354,  756,  354,  358,  358,  755,  754,  753,
      752,  751,  750,  358,  358,  358,  358,  358,  358,  749,
      748,  747,  745,  358,  743,  358,  742,  740,  738,  737,
      736,  735,  734,  733,  732,  730,  728,  727,  726,  724,
      723,  722,  721,  358,  358,  358,  358,  358,  358,  720,
      719,  718,  358,  717,  358,  672,  672,  716,  672,  672,
      672,  714,  672,  672,  672,  672,  672,  713,  672,  711,
      709,  708,  705,  704,  703,  672,  672,  672,  672,  672,

      702,  699,  695,  694,  692,  691,  687,  686,  682,  681,
      680,  679,  678,  676,  675,  671,  670,  666,  665,  664,
      663,  662,  661,  660,  659,  657,  656,  655,  672,  653,
      652,  651,  650,  649,  648,  646,  645,  644,  643,  642,
      641,  639,  638,  637,  636,  634,  633,  632,  631,  630,
      629,  672,  672,  672,  688,  688,  628,  688,  688,  688,
      626,  688,  688,  688,  688,  688,  623,  688,  622,  621,
      620,  619,  617,  615,  688,  688,  688,  688,  688,  614,
      612,  611,  610,  609,  608,  607,  606,  605,  603,  602,
      601,  600,  598,  597,  596,  595,  594,  593,  592,  591,

      589,  587,  586,  584,  583,  581,  580,  688,  579,  578,
      576,  575,  574,  573,  572,  571,  570,  568,  566,  564,
      562,  558,  557,  556,  555,  554,  553,  552,  551,  550,
      688,  688,  688,  785,  785,  549,  785,  785,  785,  547,
      785,  785,  785,  785,  785,  546,  785,  545,  543,  542,
      541,  540,  539,  785,  785,  785,  785,  785,  538,  537,
      536,  535,  534,  533,  531,  530,  529,  527,  522,  521,
      520,  519,  518,  517,  516,  515,  514,  513,  512,  511,
      510,  509,  508,  507,  505,  504,  785,  503,  502,  501,
      499,  498,  497,  496,  495,  494,  493,  492,  491,  490,

      489,  488,  487,  486,  485,  484,  483,  482,  479,  785,
      785,  785,  796,  796,  478,  796,  796,  796,  477,  796,
      796,  796,  796,  796,  476,  796,  475,  474,  472,  471,
      470,  469,  796,  796,  796,  796,  796,  468,  467,  465,
      461,  458,  457,  456,  455,  454,  453,  452,  451,  450,
      449,  448,  447,  446,  445,  444,  443,  442,  441,  440,
      439,  438,  437,  435,  434,  796,  433,  432,  431,  430,
      429,  428,  426,  425,  424,  423,  422,  421,  420,  419,
      418,  417,  416,  415,  414,  413,  412,  411,  796,  796,
      796, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,

     1150, 1150, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151,
     1151, 1151, 1151, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
     1152, 1152, 1152, 1152, 1153, 1153, 1153, 1153, 1153, 1153,
     1153, 1153, 1153, 1153, 1153, 1154, 1154, 1154, 1154, 1154,
     1154, 1154, 1154, 1154, 1154, 1154, 1155, 1155, 1155, 1155,
     1155, 1155, 1155, 1155, 1155, 1155, 1155, 1156, 1156, 1156,
     1156, 1156, 1156, 1156, 1156, 1157,  410, 1157, 1157, 1157,
     1157, 1157, 1157, 1158,  409,  408,  402,  401, 1158, 1158,
     1158, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
     1159, 1159, 1160,  398, 1160,  397, 1160, 1160, 1160, 1160,

     1161,  396, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
     1161, 1162,  395, 1162, 1162, 1162, 1162, 1162, 1162, 1162,
     1162, 1162, 1163,  394, 1163, 1163, 1163, 1163, 1163, 1163,
     1163, 1163, 1163, 1164,  393, 1164, 1165, 1165, 1165,  392,
      391, 1165, 1165,  390, 1165, 1166,  389, 1166, 1166, 1166,
     1166, 1166, 1166, 1168,  388, 1168, 1168, 1168, 1168, 1168,
     1168, 1168, 1168, 1168, 1169,  387, 1169, 1169, 1169, 1169,
     1169, 1169, 1169, 1169, 1169, 1170,  386, 1170, 1170, 1170,
     1170, 1170, 1170, 1170, 1170, 1170, 1171,  383, 1171, 1171,
     1171, 1171, 1171, 1171, 1171, 1171, 1171,  381,  380,  379,

      378,  377,  376,  375,  374,  373,  372,  371,  370,  367,
      355,  352,  351,  350,  349,  348,  347,  346,  345,  344,
      343,  341,  340,  339,  338,  337,  335,  332,  330,  329,
      328,  327,  325,  324,  323,  322,  320,  319,  318,  314,
      312,  311,  310,  308,  307,  306,  305,  304,  303,  302,
      301,  300,  297,  296,  295,  292,  291,  269,  268,  267,
      266,  265,  264,  263,  262,  261,  260,  259,  258,  256,
      255,  254,  253,  252,  251,  249,  248,  247,  245,  244,
      242,  241,  240,  239,  238,  236,  235,  234,  233,  232,
      230,  229,  228,  226,  225,  224,  223,  219,  205,  203,

      197,  189,  187,  185,  184,  183,  174,  172,  171,  170,
      161,  156,  154,  152,  151,  149,  142,  141,  140,  139,
      138,  136,  130,  129,  115,  111,  110,  109,  106,  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, 1149, 1149, 1149,
     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,

     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149
    } ;

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  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, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.  */

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


#include "ansidecl.h"
#include <stdio.h>

#ifdef MPW
/* Prevent enum redefinition problems. */
#define TRUE_FALSE_ALREADY_DEFINED
#endif /* MPW */

#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 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 YY_BUFFER_STATE yy_create_string_buffer PARAMS ((const char *string,
							size_t size));
static void yy_input PARAMS ((char *, int *result, int max_size));

static void comment PARAMS ((void));
static void lex_warn_invalid PARAMS ((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 () { 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 1340 "lex.yy.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 130 "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 1520 "lex.yy.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 >= 1150 )
					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] != 2058 );

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 147 "ldlex.l"
{ comment(); }
	YY_BREAK
case 2:
YY_RULE_SETUP
#line 150 "ldlex.l"
{ RTOKEN('-');}
	YY_BREAK
case 3:
YY_RULE_SETUP
#line 151 "ldlex.l"
{ RTOKEN('+');}
	YY_BREAK
case 4:
YY_RULE_SETUP
#line 152 "ldlex.l"
{ yylval.name = xstrdup(yytext); return NAME; }
	YY_BREAK
case 5:
YY_RULE_SETUP
#line 153 "ldlex.l"
{ RTOKEN('='); }
	YY_BREAK
case 6:
YY_RULE_SETUP
#line 155 "ldlex.l"
{
  				yylval.integer = bfd_scan_vma (yytext+1, 0,16);
				yylval.bigint.str = (char *) 0;
				return INT;
			}
	YY_BREAK
case 7:
YY_RULE_SETUP
#line 161 "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 = (char *) 0;
				   return INT;
				 }
	YY_BREAK
case 8:
YY_RULE_SETUP
#line 186 "ldlex.l"
{
				  char *s = yytext;
				  int ibase = 0;

				  if (*s == '$')
				    {
				      ++s;
				      ibase = 16;
				    }
				  yylval.integer = bfd_scan_vma (s, 0, ibase);
				  yylval.bigint.str = (char *) 0;
				  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 215 "ldlex.l"
{ RTOKEN(']');}
	YY_BREAK
case 10:
YY_RULE_SETUP
#line 216 "ldlex.l"
{ RTOKEN('[');}
	YY_BREAK
case 11:
YY_RULE_SETUP
#line 217 "ldlex.l"
{ RTOKEN(LSHIFTEQ);}
	YY_BREAK
case 12:
YY_RULE_SETUP
#line 218 "ldlex.l"
{ RTOKEN(RSHIFTEQ);}
	YY_BREAK
case 13:
YY_RULE_SETUP
#line 219 "ldlex.l"
{ RTOKEN(OROR);}
	YY_BREAK
case 14:
YY_RULE_SETUP
#line 220 "ldlex.l"
{ RTOKEN(EQ);}
	YY_BREAK
case 15:
YY_RULE_SETUP
#line 221 "ldlex.l"
{ RTOKEN(NE);}
	YY_BREAK
case 16:
YY_RULE_SETUP
#line 222 "ldlex.l"
{ RTOKEN(GE);}
	YY_BREAK
case 17:
YY_RULE_SETUP
#line 223 "ldlex.l"
{ RTOKEN(LE);}
	YY_BREAK
case 18:
YY_RULE_SETUP
#line 224 "ldlex.l"
{ RTOKEN(LSHIFT);}
	YY_BREAK
case 19:
YY_RULE_SETUP
#line 225 "ldlex.l"
{ RTOKEN(RSHIFT);}
	YY_BREAK
case 20:
YY_RULE_SETUP
#line 226 "ldlex.l"
{ RTOKEN(PLUSEQ);}
	YY_BREAK
case 21:
YY_RULE_SETUP
#line 227 "ldlex.l"
{ RTOKEN(MINUSEQ);}
	YY_BREAK
case 22:
YY_RULE_SETUP
#line 228 "ldlex.l"
{ RTOKEN(MULTEQ);}
	YY_BREAK
case 23:
YY_RULE_SETUP
#line 229 "ldlex.l"
{ RTOKEN(DIVEQ);}
	YY_BREAK
case 24:
YY_RULE_SETUP
#line 230 "ldlex.l"
{ RTOKEN(ANDEQ);}
	YY_BREAK
case 25:
YY_RULE_SETUP
#line 231 "ldlex.l"
{ RTOKEN(OREQ);}
	YY_BREAK
case 26:
YY_RULE_SETUP
#line 232 "ldlex.l"
{ RTOKEN(ANDAND);}
	YY_BREAK
case 27:
YY_RULE_SETUP
#line 233 "ldlex.l"
{ RTOKEN('>');}
	YY_BREAK
case 28:
YY_RULE_SETUP
#line 234 "ldlex.l"
{ RTOKEN(',');}
	YY_BREAK
case 29:
YY_RULE_SETUP
#line 235 "ldlex.l"
{ RTOKEN('&');}
	YY_BREAK
case 30:
YY_RULE_SETUP
#line 236 "ldlex.l"
{ RTOKEN('|');}
	YY_BREAK
case 31:
YY_RULE_SETUP
#line 237 "ldlex.l"
{ RTOKEN('~');}
	YY_BREAK
case 32:
YY_RULE_SETUP
#line 238 "ldlex.l"
{ RTOKEN('!');}
	YY_BREAK
case 33:
YY_RULE_SETUP
#line 239 "ldlex.l"
{ RTOKEN('?');}
	YY_BREAK
case 34:
YY_RULE_SETUP
#line 240 "ldlex.l"
{ RTOKEN('*');}
	YY_BREAK
case 35:
YY_RULE_SETUP
#line 241 "ldlex.l"
{ RTOKEN('+');}
	YY_BREAK
case 36:
YY_RULE_SETUP
#line 242 "ldlex.l"
{ RTOKEN('-');}
	YY_BREAK
case 37:
YY_RULE_SETUP
#line 243 "ldlex.l"
{ RTOKEN('/');}
	YY_BREAK
case 38:
YY_RULE_SETUP
#line 244 "ldlex.l"
{ RTOKEN('%');}
	YY_BREAK
case 39:
YY_RULE_SETUP
#line 245 "ldlex.l"
{ RTOKEN('<');}
	YY_BREAK
case 40:
YY_RULE_SETUP
#line 246 "ldlex.l"
{ RTOKEN('=');}
	YY_BREAK
case 41:
YY_RULE_SETUP
#line 247 "ldlex.l"
{ RTOKEN('}') ; }
	YY_BREAK
case 42:
YY_RULE_SETUP
#line 248 "ldlex.l"
{ RTOKEN('{'); }
	YY_BREAK
case 43:
YY_RULE_SETUP
#line 249 "ldlex.l"
{ RTOKEN(')');}
	YY_BREAK
case 44:
YY_RULE_SETUP
#line 250 "ldlex.l"
{ RTOKEN('(');}
	YY_BREAK
case 45:
YY_RULE_SETUP
#line 251 "ldlex.l"
{ RTOKEN(':'); }
	YY_BREAK
case 46:
YY_RULE_SETUP
#line 252 "ldlex.l"
{ RTOKEN(';');}
	YY_BREAK
case 47:
YY_RULE_SETUP
#line 253 "ldlex.l"
{ RTOKEN(MEMORY);}
	YY_BREAK
case 48:
YY_RULE_SETUP
#line 254 "ldlex.l"
{ RTOKEN(ORIGIN);}
	YY_BREAK
case 49:
YY_RULE_SETUP
#line 255 "ldlex.l"
{ RTOKEN(VERSIONK);}
	YY_BREAK
case 50:
YY_RULE_SETUP
#line 256 "ldlex.l"
{ RTOKEN(BLOCK);}
	YY_BREAK
case 51:
YY_RULE_SETUP
#line 257 "ldlex.l"
{ RTOKEN(BIND);}
	YY_BREAK
case 52:
YY_RULE_SETUP
#line 258 "ldlex.l"
{ RTOKEN(LENGTH);}
	YY_BREAK
case 53:
YY_RULE_SETUP
#line 259 "ldlex.l"
{ RTOKEN(ALIGN_K);}
	YY_BREAK
case 54:
YY_RULE_SETUP
#line 260 "ldlex.l"
{ RTOKEN(DATA_SEGMENT_ALIGN);}
	YY_BREAK
case 55:
YY_RULE_SETUP
#line 261 "ldlex.l"
{ RTOKEN(DATA_SEGMENT_END);}
	YY_BREAK
case 56:
YY_RULE_SETUP
#line 262 "ldlex.l"
{ RTOKEN(ADDR);}
	YY_BREAK
case 57:
YY_RULE_SETUP
#line 263 "ldlex.l"
{ RTOKEN(LOADADDR);}
	YY_BREAK
case 58:
YY_RULE_SETUP
#line 264 "ldlex.l"
{ RTOKEN(MAX_K); }
	YY_BREAK
case 59:
YY_RULE_SETUP
#line 265 "ldlex.l"
{ RTOKEN(MIN_K); }
	YY_BREAK
case 60:
YY_RULE_SETUP
#line 266 "ldlex.l"
{ RTOKEN(ASSERT_K); }
	YY_BREAK
case 61:
YY_RULE_SETUP
#line 267 "ldlex.l"
{ RTOKEN(ENTRY);}
	YY_BREAK
case 62:
YY_RULE_SETUP
#line 268 "ldlex.l"
{ RTOKEN(EXTERN);}
	YY_BREAK
case 63:
YY_RULE_SETUP
#line 269 "ldlex.l"
{ RTOKEN(NEXT);}
	YY_BREAK
case 64:
YY_RULE_SETUP
#line 270 "ldlex.l"
{ RTOKEN(SIZEOF_HEADERS);}
	YY_BREAK
case 65:
YY_RULE_SETUP
#line 271 "ldlex.l"
{ RTOKEN(SIZEOF_HEADERS);}
	YY_BREAK
case 66:
YY_RULE_SETUP
#line 272 "ldlex.l"
{ RTOKEN(MAP);}
	YY_BREAK
case 67:
YY_RULE_SETUP
#line 273 "ldlex.l"
{ RTOKEN(SIZEOF);}
	YY_BREAK
case 68:
YY_RULE_SETUP
#line 274 "ldlex.l"
{ RTOKEN(TARGET_K);}
	YY_BREAK
case 69:
YY_RULE_SETUP
#line 275 "ldlex.l"
{ RTOKEN(SEARCH_DIR);}
	YY_BREAK
case 70:
YY_RULE_SETUP
#line 276 "ldlex.l"
{ RTOKEN(OUTPUT);}
	YY_BREAK
case 71:
YY_RULE_SETUP
#line 277 "ldlex.l"
{ RTOKEN(INPUT);}
	YY_BREAK
case 72:
YY_RULE_SETUP
#line 278 "ldlex.l"
{ RTOKEN(GROUP);}
	YY_BREAK
case 73:
YY_RULE_SETUP
#line 279 "ldlex.l"
{ RTOKEN(DEFINED);}
	YY_BREAK
case 74:
YY_RULE_SETUP
#line 280 "ldlex.l"
{ RTOKEN(CREATE_OBJECT_SYMBOLS);}
	YY_BREAK
case 75:
YY_RULE_SETUP
#line 281 "ldlex.l"
{ RTOKEN( CONSTRUCTORS);}
	YY_BREAK
case 76:
YY_RULE_SETUP
#line 282 "ldlex.l"
{ RTOKEN(FORCE_COMMON_ALLOCATION);}
	YY_BREAK
case 77:
YY_RULE_SETUP
#line 283 "ldlex.l"
{ RTOKEN(INHIBIT_COMMON_ALLOCATION);}
	YY_BREAK
case 78:
YY_RULE_SETUP
#line 284 "ldlex.l"
{ RTOKEN(SECTIONS);}
	YY_BREAK
case 79:
YY_RULE_SETUP
#line 285 "ldlex.l"
{ RTOKEN(FILL);}
	YY_BREAK
case 80:
YY_RULE_SETUP
#line 286 "ldlex.l"
{ RTOKEN(STARTUP);}
	YY_BREAK
case 81:
YY_RULE_SETUP
#line 287 "ldlex.l"
{ RTOKEN(OUTPUT_FORMAT);}
	YY_BREAK
case 82:
YY_RULE_SETUP
#line 288 "ldlex.l"
{ RTOKEN( OUTPUT_ARCH);}
	YY_BREAK
case 83:
YY_RULE_SETUP
#line 289 "ldlex.l"
{ RTOKEN(HLL);}
	YY_BREAK
case 84:
YY_RULE_SETUP
#line 290 "ldlex.l"
{ RTOKEN(SYSLIB);}
	YY_BREAK
case 85:
YY_RULE_SETUP
#line 291 "ldlex.l"
{ RTOKEN(FLOAT);}
	YY_BREAK
case 86:
YY_RULE_SETUP
#line 292 "ldlex.l"
{ RTOKEN( QUAD);}
	YY_BREAK
case 87:
YY_RULE_SETUP
#line 293 "ldlex.l"
{ RTOKEN( SQUAD);}
	YY_BREAK
case 88:
YY_RULE_SETUP
#line 294 "ldlex.l"
{ RTOKEN( LONG);}
	YY_BREAK
case 89:
YY_RULE_SETUP
#line 295 "ldlex.l"
{ RTOKEN( SHORT);}
	YY_BREAK
case 90:
YY_RULE_SETUP
#line 296 "ldlex.l"
{ RTOKEN( BYTE);}
	YY_BREAK
case 91:
YY_RULE_SETUP
#line 297 "ldlex.l"
{ RTOKEN(NOFLOAT);}
	YY_BREAK
case 92:
YY_RULE_SETUP
#line 298 "ldlex.l"
{ RTOKEN(NOCROSSREFS);}
	YY_BREAK
case 93:
YY_RULE_SETUP
#line 299 "ldlex.l"
{ RTOKEN(OVERLAY); }
	YY_BREAK
case 94:
YY_RULE_SETUP
#line 300 "ldlex.l"
{ RTOKEN(SORT); }
	YY_BREAK
case 95:
YY_RULE_SETUP
#line 301 "ldlex.l"
{ RTOKEN(NOLOAD);}
	YY_BREAK
case 96:
YY_RULE_SETUP
#line 302 "ldlex.l"
{ RTOKEN(DSECT);}
	YY_BREAK
case 97:
YY_RULE_SETUP
#line 303 "ldlex.l"
{ RTOKEN(COPY);}
	YY_BREAK
case 98:
YY_RULE_SETUP
#line 304 "ldlex.l"
{ RTOKEN(INFO);}
	YY_BREAK
case 99:
YY_RULE_SETUP
#line 305 "ldlex.l"
{ RTOKEN(OVERLAY);}
	YY_BREAK
case 100:
YY_RULE_SETUP
#line 306 "ldlex.l"
{ RTOKEN(ORIGIN);}
	YY_BREAK
case 101:
YY_RULE_SETUP
#line 307 "ldlex.l"
{ RTOKEN(ORIGIN);}
	YY_BREAK
case 102:
YY_RULE_SETUP
#line 308 "ldlex.l"
{ RTOKEN( LENGTH);}
	YY_BREAK
case 103:
YY_RULE_SETUP
#line 309 "ldlex.l"
{ RTOKEN( LENGTH);}
	YY_BREAK
case 104:
YY_RULE_SETUP
#line 310 "ldlex.l"
{ RTOKEN(INCLUDE);}
	YY_BREAK
case 105:
YY_RULE_SETUP
#line 311 "ldlex.l"
{ RTOKEN (PHDRS); }
	YY_BREAK
case 106:
YY_RULE_SETUP
#line 312 "ldlex.l"
{ RTOKEN(AT);}
	YY_BREAK
case 107:
YY_RULE_SETUP
#line 313 "ldlex.l"
{ RTOKEN(PROVIDE); }
	YY_BREAK
case 108:
YY_RULE_SETUP
#line 314 "ldlex.l"
{ RTOKEN(KEEP); }
	YY_BREAK
case 109:
YY_RULE_SETUP
#line 315 "ldlex.l"
{ RTOKEN(EXCLUDE_FILE); }
	YY_BREAK
case 110:
YY_RULE_SETUP
#line 316 "ldlex.l"
{ ++ lineno; }
	YY_BREAK
case 111:
YY_RULE_SETUP
#line 317 "ldlex.l"
{ ++ lineno;  RTOKEN(NEWLINE); }
	YY_BREAK
case 112:
YY_RULE_SETUP
#line 318 "ldlex.l"
{ /* Mri comment line */ }
	YY_BREAK
case 113:
YY_RULE_SETUP
#line 319 "ldlex.l"
{ /* Mri comment line */ }
	YY_BREAK
case 114:
YY_RULE_SETUP
#line 320 "ldlex.l"
{ RTOKEN(ENDWORD); }
	YY_BREAK
case 115:
YY_RULE_SETUP
#line 321 "ldlex.l"
{ RTOKEN(ALIGNMOD);}
	YY_BREAK
case 116:
YY_RULE_SETUP
#line 322 "ldlex.l"
{ RTOKEN(ALIGN_K);}
	YY_BREAK
case 117:
YY_RULE_SETUP
#line 323 "ldlex.l"
{ RTOKEN(CHIP); }
	YY_BREAK
case 118:
YY_RULE_SETUP
#line 324 "ldlex.l"
{ RTOKEN(BASE); }
	YY_BREAK
case 119:
YY_RULE_SETUP
#line 325 "ldlex.l"
{ RTOKEN(ALIAS); }
	YY_BREAK
case 120:
YY_RULE_SETUP
#line 326 "ldlex.l"
{ RTOKEN(TRUNCATE); }
	YY_BREAK
case 121:
YY_RULE_SETUP
#line 327 "ldlex.l"
{ RTOKEN(LOAD); }
	YY_BREAK
case 122:
YY_RULE_SETUP
#line 328 "ldlex.l"
{ RTOKEN(PUBLIC); }
	YY_BREAK
case 123:
YY_RULE_SETUP
#line 329 "ldlex.l"
{ RTOKEN(ORDER); }
	YY_BREAK
case 124:
YY_RULE_SETUP
#line 330 "ldlex.l"
{ RTOKEN(NAMEWORD); }
	YY_BREAK
case 125:
YY_RULE_SETUP
#line 331 "ldlex.l"
{ RTOKEN(FORMAT); }
	YY_BREAK
case 126:
YY_RULE_SETUP
#line 332 "ldlex.l"
{ RTOKEN(CASE); }
	YY_BREAK
case 127:
YY_RULE_SETUP
#line 333 "ldlex.l"
{ RTOKEN(START); }
	YY_BREAK
case 128:
YY_RULE_SETUP
#line 334 "ldlex.l"
{ RTOKEN(LIST); /* LIST and ignore to end of line */ }
	YY_BREAK
case 129:
YY_RULE_SETUP
#line 335 "ldlex.l"
{ RTOKEN(SECT); }
	YY_BREAK
case 130:
YY_RULE_SETUP
#line 336 "ldlex.l"
{ RTOKEN(ABSOLUTE); }
	YY_BREAK
case 131:
YY_RULE_SETUP
#line 337 "ldlex.l"
{ RTOKEN(ENDWORD); }
	YY_BREAK
case 132:
YY_RULE_SETUP
#line 338 "ldlex.l"
{ RTOKEN(ALIGNMOD);}
	YY_BREAK
case 133:
YY_RULE_SETUP
#line 339 "ldlex.l"
{ RTOKEN(ALIGN_K);}
	YY_BREAK
case 134:
YY_RULE_SETUP
#line 340 "ldlex.l"
{ RTOKEN(CHIP); }
	YY_BREAK
case 135:
YY_RULE_SETUP
#line 341 "ldlex.l"
{ RTOKEN(BASE); }
	YY_BREAK
case 136:
YY_RULE_SETUP
#line 342 "ldlex.l"
{ RTOKEN(ALIAS); }
	YY_BREAK
case 137:
YY_RULE_SETUP
#line 343 "ldlex.l"
{ RTOKEN(TRUNCATE); }
	YY_BREAK
case 138:
YY_RULE_SETUP
#line 344 "ldlex.l"
{ RTOKEN(LOAD); }
	YY_BREAK
case 139:
YY_RULE_SETUP
#line 345 "ldlex.l"
{ RTOKEN(PUBLIC); }
	YY_BREAK
case 140:
YY_RULE_SETUP
#line 346 "ldlex.l"
{ RTOKEN(ORDER); }
	YY_BREAK
case 141:
YY_RULE_SETUP
#line 347 "ldlex.l"
{ RTOKEN(NAMEWORD); }
	YY_BREAK
case 142:
YY_RULE_SETUP
#line 348 "ldlex.l"
{ RTOKEN(FORMAT); }
	YY_BREAK
case 143:
YY_RULE_SETUP
#line 349 "ldlex.l"
{ RTOKEN(CASE); }
	YY_BREAK
case 144:
YY_RULE_SETUP
#line 350 "ldlex.l"
{ RTOKEN(EXTERN); }
	YY_BREAK
case 145:
YY_RULE_SETUP
#line 351 "ldlex.l"
{ RTOKEN(START); }
	YY_BREAK
case 146:
YY_RULE_SETUP
#line 352 "ldlex.l"
{ RTOKEN(LIST); /* LIST and ignore to end of line */ }
	YY_BREAK
case 147:
YY_RULE_SETUP
#line 353 "ldlex.l"
{ RTOKEN(SECT); }
	YY_BREAK
case 148:
YY_RULE_SETUP
#line 354 "ldlex.l"
{ RTOKEN(ABSOLUTE); }
	YY_BREAK
case 149:
YY_RULE_SETUP
#line 356 "ldlex.l"
{
/* Filename without commas, needed to parse mri stuff */
				 yylval.name = xstrdup(yytext); 
				  return NAME;
				}
	YY_BREAK
case 150:
YY_RULE_SETUP
#line 363 "ldlex.l"
{
				 yylval.name = xstrdup(yytext); 
				  return NAME;
				}
	YY_BREAK
case 151:
YY_RULE_SETUP
#line 367 "ldlex.l"
{
				  yylval.name = xstrdup (yytext + 2);
				  return LNAME;
				}
	YY_BREAK
case 152:
YY_RULE_SETUP
#line 371 "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 153:
YY_RULE_SETUP
#line 388 "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 154:
YY_RULE_SETUP
#line 395 "ldlex.l"
{ lineno++;}
	YY_BREAK
case 155:
YY_RULE_SETUP
#line 396 "ldlex.l"
{ }
	YY_BREAK
case 156:
YY_RULE_SETUP
#line 398 "ldlex.l"
{ return *yytext; }
	YY_BREAK
case 157:
YY_RULE_SETUP
#line 400 "ldlex.l"
{ RTOKEN(GLOBAL); }
	YY_BREAK
case 158:
YY_RULE_SETUP
#line 402 "ldlex.l"
{ RTOKEN(LOCAL); }
	YY_BREAK
case 159:
YY_RULE_SETUP
#line 404 "ldlex.l"
{ RTOKEN(EXTERN); }
	YY_BREAK
case 160:
YY_RULE_SETUP
#line 406 "ldlex.l"
{ yylval.name = xstrdup (yytext);
				  return VERS_IDENTIFIER; }
	YY_BREAK
case 161:
YY_RULE_SETUP
#line 409 "ldlex.l"
{ yylval.name = xstrdup (yytext);
				  return VERS_TAG; }
	YY_BREAK
case 162:
YY_RULE_SETUP
#line 412 "ldlex.l"
{ BEGIN(VERS_SCRIPT); return *yytext; }
	YY_BREAK
case 163:
YY_RULE_SETUP
#line 414 "ldlex.l"
{ BEGIN(VERS_NODE); 
				  vers_node_nesting = 0;
				  return *yytext;
				}
	YY_BREAK
case 164:
YY_RULE_SETUP
#line 418 "ldlex.l"
{ return *yytext; }
	YY_BREAK
case 165:
YY_RULE_SETUP
#line 419 "ldlex.l"
{ vers_node_nesting++; return *yytext; }
	YY_BREAK
case 166:
YY_RULE_SETUP
#line 420 "ldlex.l"
{ if (--vers_node_nesting < 0)
				    BEGIN(VERS_SCRIPT);
				  return *yytext;
				}
	YY_BREAK
case 167:
YY_RULE_SETUP
#line 425 "ldlex.l"
{ lineno++; }
	YY_BREAK
case 168:
YY_RULE_SETUP
#line 427 "ldlex.l"
{ /* Eat up comments */ }
	YY_BREAK
case 169:
YY_RULE_SETUP
#line 429 "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 431 "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 170:
YY_RULE_SETUP
#line 449 "ldlex.l"
lex_warn_invalid(" in script", yytext);
	YY_BREAK
case 171:
YY_RULE_SETUP
#line 450 "ldlex.l"
lex_warn_invalid(" in expression", yytext);
	YY_BREAK
case 172:
YY_RULE_SETUP
#line 452 "ldlex.l"
ECHO;
	YY_BREAK
#line 2586 "lex.yy.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 >= 1150 )
				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 >= 1150 )
			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 == 1149);

	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 452 "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, name)
     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 (string, size)
     const char *string;
     size_t size;
{
  YY_BUFFER_STATE b;

  /* Calls to m-alloc get turned by sed into xm-alloc.  */
  b = (YY_BUFFER_STATE) 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 = (char *) 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 (string)
     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 ()
{
  *(state_stack_p)++ = yy_start;
  BEGIN (SCRIPT);
}

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

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

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

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

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

void
ldlex_popstate ()
{
  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 (buf, result, max_size)
     char *buf;
     int *result;
     int max_size;
{
  *result = 0; 
  if (yy_current_buffer->yy_input_file)
    {
      if (yyin)
	{
	  *result = fread ((char *) 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 ()
{
  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 (where, what)
     char *where, *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);
}
