/* 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>


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


#ifdef __cplusplus

#include <stdlib.h>
#include <unistd.h>

/* 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[1151] =
    {   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,  170,  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[1173] =
    {   0,
        0,    0,    0,    0,   80,    0,  154,    0,  223,  302,
      381,    0,  162,  172,  461,  541,  621,  701, 2060, 2061,
     2061, 2057, 2061, 2035, 2052,  764, 2061,  153, 2061, 2061,
     2033, 2032,    0, 2031,    0,  154,  300,  232,    0, 2061,
      147, 2030,  179,    0,  226,  170,  157,  228,  169,  222,
     2009, 2014, 2011, 2019,  176,  137,  227,  175,  232, 2002,
      249, 2021, 2016,    0,    0, 1988, 1984, 1972, 1978, 2061,
      182, 2061,    0, 2061, 2039, 2017, 2034,  808, 2061,  243,
     2061, 2061, 2015, 2014, 2061,  262,    0,  257,  852,  213,
     2061, 2061,  264, 2013,  269, 2061,  910,  305,  314,  461,

      472,  333, 1992, 1995, 2003, 1992,  247,  300, 1984, 1987,
     1995, 2061, 2061,  466, 1964, 2061,  186, 2061,    0,  968,
      550,  628,  492,  327,  304,  474,  298,  329, 1990, 1987,
      305,  496,  462,  325,  464, 1979,  540, 1998, 1993, 1965,
     1961, 1949, 1012, 2061, 2061,    0, 2061, 2061, 2016, 1056,
     1995, 1994, 2061, 1993,    0, 1992,    0,  460, 2061,    0,
     1991, 2061, 1100,  550,  564,  497,  621,  544,  244, 1987,
     1969, 1965,  141, 1967, 2061, 2061,  622,  572,  626,  659,
      625,  226, 1953, 1937, 1933,  523, 1935,    0, 2003, 2061,
        0, 1992, 2061,    0, 2061, 2061, 2061, 1983,  457,  513,

      537, 2061, 2061, 2000, 2061, 1996, 2061,    0, 1158, 2061,
     2061,    0,    0,    0,    0,    0,  710,    0,  695, 1977,
     2061,    0, 2061, 1976, 1954, 1968, 1962,    0, 1956, 1954,
     1948,  290, 1962, 1946, 1959, 1959, 1943,  329, 1950, 1946,
     1942, 1944, 1946,  572, 1952, 1942,  611, 1939, 1941, 1930,
      579, 1943, 1931, 1945, 1945, 1933, 1946,  468, 1931, 1920,
     1926, 1922, 1941, 1922, 1922, 1921, 1891, 1894, 1899, 1884,
     2061, 2061,    0, 1208, 2061, 2061, 2061,    0, 2061,    0,
      500,  721,    0, 2061, 2061,    0, 2061,  647,  727,  760,
        0, 1925, 1914,    0,  771, 1918, 1916, 1914,  774,  813,

     1924, 1925, 1912, 1920, 1920, 1923, 1900, 1908, 1898,  574,
     1915, 1904, 1893,  804, 1866,  709,  794,    0, 1897, 1911,
     1894,  486, 1908, 1892, 1905, 1890,  623, 1897, 1893, 1889,
     1894,  639, 1891,  639,  613, 1891,  704, 1894, 1882, 1896,
     1896, 1898,  586, 1883, 1879, 1875, 1894, 1875, 1875, 1874,
     1844, 1847, 1852,    0, 1258, 1910, 2061,    0, 1308,    0,
        0, 2061,    0,  648,  699,  715,    0, 1878,  816,  818,
     1877, 1881, 1864, 1865, 1863, 1880, 1867, 1875, 1876, 1874,
     1875, 1854,  780, 1835,  819,  850, 1834, 1829, 1804, 1795,
     1783, 1791, 1777, 1782, 1783, 1777, 1768, 1739, 1800,    0,

        0, 1776, 1774,  584,  636,  613, 2061, 2061, 1738, 1734,
     1744, 1746, 1739, 1658, 1643, 1637, 1659, 1658, 1649, 1654,
     1638, 1643, 1649, 1641, 1651, 1648, 1629,    0, 1637, 1633,
     1638, 1625, 1629, 1637, 1639, 1635,    0, 1625, 1619, 1620,
     1625, 1621, 1628, 1618, 1615, 1614, 1609, 1626, 1611, 1608,
     1609, 1621, 1605, 1623, 1605, 1610, 1614, 1601, 1575,    0,
        0, 1583,    0,    0,  836, 1602,  887, 1609, 1610, 1610,
     1610, 1583, 1605,  915, 1602, 1592, 1582, 1587, 1584, 1590,
        0,    0, 1570, 1566, 1568, 1564, 1559, 1575, 1535, 1543,
     1559, 1571, 1556, 1573, 1564, 1554, 1566, 1558, 1568, 1565,

        0, 1555, 1557, 1544, 1557, 1556,    0, 1546, 1548, 1552,
     1542, 1539, 1538, 1551, 1536, 1533, 1534, 1531, 1549, 1531,
     1536, 1540, 1527,    0,    0,    0,    0, 1530,  546, 1539,
     1538, 1526,    0, 1536, 1527, 1519, 1534, 1532, 1531, 1523,
     1514, 1510, 1513, 1482,  682, 1490, 1489, 1478,    0, 1486,
     1473, 1463, 1471, 1469, 1468, 1461, 1453, 1454, 1456,  313,
      693,  511, 1486,    0, 1483,    0, 1485,    0, 1475,    0,
     1474, 1463, 1478, 1471, 1466, 1468, 1470,    0, 1467, 1481,
     1469, 1463,    0, 1480, 1461,    0, 1460, 1478,    0, 1460,
        0, 1462, 1461, 1474, 1465, 1452, 1460, 1452, 1461,    0,

     1466, 1459, 1447, 1451,    0, 1461, 1444, 1454, 1457, 1452,
     1419, 1415, 1446,    0, 1443, 1438,    0, 1444,    0, 1419,
     1434, 1427, 1425, 1429,    0,    0, 1443,    0, 1427, 1435,
     1420, 1417, 1410, 1383, 1379,    0, 1402, 1401, 1396, 1401,
        0, 1398, 1412, 1395, 1413, 1394, 1393,    0, 1394, 1396,
     1401, 1388, 1396, 1388,    0, 1403, 1396, 1383,    0, 1398,
     1381, 1391, 1394, 1389, 1385, 1377, 1381,    0,    0,    0,
     1376, 1392, 1375,    0,    0, 1374, 1382,    0, 1370, 1386,
     1347, 1340, 1343,    0,    0,    0, 1339, 1353, 1454,    0,
        0, 1337, 1343,    0, 1333, 1347,  697,  710,  809, 1358,

        0,    0, 1360, 1372, 1357, 1365,    0,    0, 1365, 1354,
        0, 1337,    0, 1362, 1356,    0, 1355, 1353, 1329, 1330,
     1346, 1342, 1331, 1318, 1336,    0, 1332, 1327, 1319,    0,
     1327,    0, 1311, 1329, 1310, 1314, 1279, 1291, 1305,    0,
     1305,    0, 1305, 1318,    0, 1318,    0, 1316, 1299, 1313,
     1315, 1311, 1302, 1258, 1270, 1287, 1299,    0, 1289,    0,
     1269, 1293, 1287,    0, 1287, 1264, 1286, 1272, 1265, 1283,
        0, 1275, 1267,    0,    0, 1260, 1278, 1259, 1263, 1256,
        0, 1263, 1261, 1254,    0, 1533,    0, 1270,    0, 1271,
     1221,    0, 1226, 1224, 1218,    0, 1612,    0, 1232,    0,

     1227,  717,  827, 1262, 1236, 1234, 1224, 1248, 1245, 1242,
        0, 1243, 1240, 1218,    0, 1233,    0, 1217, 1215,    0,
        0, 1204, 1209, 1227, 1201, 1216, 1199, 1212,    0,    0,
     1213, 1178,  135,  195,    0,  266,  323,  438,  460,  484,
        0,  559,  606,  600,  604,  635,  651,  653,    0,  688,
      719,  706,    0,    0,  710,    0,  703,  716,  715,  734,
      743,    0,    0,  760,  757,  766,    0,    0,    0,  764,
      737,  745,    0,    0,    0,  755,  831,  834,  833,  845,
      844,  854,    0,  834,  854,    0,  840,  853,  854,    0,
      873,    0,    0,  869,  858,  872,    0,    0,  846,  844,

      888,  888,    0,  868,  882,  883,    0,    0,  900,  874,
      872,  917,  906,  908,    0,  896,    0,  930,    0,  924,
      913,    0,    0,  932,  934,  934,  905,  913,  914,    0,
      930,  949,  939,  947,  942,  953,    0,  952,  940,  944,
      954,    0,  959,    0,  930,    0,  953,  961,    0,  963,
      970,    0,  941,  957,  976,  966,  977,  963,  967,  974,
        0,    0,    0,    0,    0,    0,    0,  969,  975,  981,
      978,  975,  974,  984,  988,  974,  975,  993,  964,  991,
      988,  992, 1006,  977,  994, 1000,  998,  997, 1016, 1002,
     1003, 1004, 1018, 1010, 1013, 1011, 1014, 1009, 1021, 1017,

        0, 1027,  998, 1019, 1022, 1016, 1032, 1003, 1020, 1034,
     1025, 1028, 1034, 1038,    0, 1033, 1050, 1034, 1050, 1042,
     1050,    0,    0, 1063, 1060, 1031, 1047, 1063,    0, 1064,
     1035, 1052, 1069, 1059, 1061,    0, 1074,    0, 1056, 1047,
        0, 1048, 1064, 1060, 1063, 1036, 1053,    0, 1066, 1039,
        0, 1066, 1065, 1081, 1077, 1068, 1106, 1098, 1086,    0,
     1090, 1063, 1112, 1095, 1069, 1088, 1118, 1106,    0, 1102,
     1110, 1110, 1113, 1096,    0,    0, 1115, 1114,    0,    0,
     1110, 1118, 1107, 1115, 1131, 1137, 1130, 1142, 1136, 1142,
     1123, 1136, 1148, 1140, 1147,    0, 1140, 1144, 1150,    0,

     1145, 1150, 1154, 1165, 1154, 1167, 1160, 1159, 1172, 1172,
     1164, 1162,    0, 1177, 1164,    0, 1165, 1180, 1167, 1171,
     1164, 1182, 1174, 1167, 1185, 1176, 1187, 1196, 1180, 1194,
     1203,    0, 1190, 1186,    0, 1192, 1188, 1201, 1207, 1203,
     1209,    0, 1205,    0, 1207, 1209, 1210,    0,    0, 2061,
     1691, 1702, 1713, 1724, 1735, 1746, 1754, 1762, 1770, 1781,
     1789, 1800, 1811, 1822, 1825, 1834, 1842, 1239, 1853, 1864,
     1875, 1886
    } ;

static yyconst short int yy_def[1173] =
    {   0,
     1151, 1151, 1150,    3, 1150,    5,    5,    7, 1152, 1152,
     1150,   11, 1153, 1153, 1154, 1154, 1155, 1155, 1150, 1150,
     1150, 1150, 1150, 1150, 1156, 1157, 1150, 1150, 1150, 1150,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1150,
     1150, 1157, 1150, 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, 1150,
     1150, 1150, 1157, 1150, 1150, 1150, 1156, 1158, 1150, 1150,
     1150, 1150, 1150, 1150, 1150, 1150, 1158, 1158, 1150,   89,
     1150, 1150, 1150, 1150, 1150, 1150, 1158,   97,   97,   97,

       97,   97, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1150, 1150,   97, 1158, 1150, 1150, 1150, 1158, 1158,
     1150, 1150, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1159, 1150, 1150, 1159, 1150, 1150, 1160, 1161,
     1162, 1150, 1150, 1150, 1161, 1161,   89,   89, 1150, 1163,
     1150, 1150, 1161,  163,  163,  163,  163,  163, 1161, 1161,
     1161, 1161, 1161, 1161, 1150, 1150,  163,  163,  163,  163,
      163, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1150, 1150,
     1164, 1150, 1150, 1165, 1150, 1150, 1150, 1166, 1166, 1166,

     1166, 1150, 1150, 1150, 1150, 1156, 1150, 1157, 1157, 1150,
     1150, 1157, 1157, 1157, 1157, 1157, 1157, 1157,  209, 1150,
     1150, 1157, 1150, 1150, 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,
     1150, 1150, 1158, 1158, 1150, 1150, 1150, 1167, 1150, 1158,
       89,   89,  282, 1150, 1150, 1168, 1150,   97,   97,   97,
     1158, 1158, 1158, 1158,   97, 1158, 1158, 1158,   97,   97,

     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1158,   97, 1158,  120, 1150, 1168, 1158, 1158,
     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1159, 1159, 1160, 1150, 1161, 1161, 1162,
     1162, 1150, 1163,  163,  163,  163, 1161, 1161,  163,  163,
     1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
     1161, 1161,  163, 1161,  163,  163, 1161, 1161, 1161, 1161,
     1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1150, 1164,

     1165, 1166, 1150, 1166, 1166, 1166, 1150, 1150, 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,
     1157, 1157, 1158, 1167, 1168, 1158,   97, 1158, 1158, 1158,
     1158, 1158, 1158,   97, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,

     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1158, 1158, 1159, 1161, 1161, 1161, 1161,
     1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
     1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
     1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1166,
     1166, 1166, 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, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1158, 1161, 1161, 1161, 1161, 1161, 1161,
     1161, 1161, 1169, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
     1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1170, 1161,
     1161, 1161, 1161, 1161, 1161, 1161, 1166, 1166, 1166, 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, 1158,
     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1161,
     1161, 1161, 1161, 1161, 1171, 1169, 1161, 1161, 1161, 1161,
     1161, 1161, 1161, 1161, 1161, 1172, 1170, 1161, 1161, 1161,

     1161, 1166, 1166, 1166, 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, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1158, 1161, 1161, 1161, 1161, 1161, 1161,
     1161, 1161, 1161, 1161, 1161, 1161, 1166, 1166, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,

     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1161, 1161, 1161, 1161, 1161, 1161, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1161, 1161, 1161, 1161, 1161, 1161, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1158,
     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,

     1157, 1157, 1157, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1158, 1158, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1158, 1158, 1157, 1157, 1157, 1157, 1157,
     1157, 1157, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1157,
     1157, 1157, 1157, 1157, 1157, 1157, 1158, 1158, 1158, 1158,
     1158, 1158, 1158, 1157, 1157, 1157, 1157, 1157, 1158, 1158,
     1158, 1158, 1158, 1157, 1157, 1157, 1157, 1157, 1158, 1158,

     1158, 1158, 1158, 1157, 1157, 1157, 1157, 1158, 1158, 1158,
     1158, 1157, 1157, 1157, 1157, 1158, 1158, 1158, 1158, 1157,
     1157, 1157, 1158, 1158, 1158, 1157, 1157, 1157, 1158, 1158,
     1158, 1157, 1157, 1157, 1158, 1158, 1158, 1157, 1157, 1158,
     1158, 1157, 1157, 1158, 1158, 1157, 1158, 1157, 1158,    0,
     1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
     1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
     1150, 1150
    } ;

static yyconst short int yy_nxt[2142] =
    {   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,  210,  248,  189,  190,  215,  249,  191,  220,  221,
      380,  121,  122,  189,  190,  211,  216,  191,  192,  123,
      124,  125,  126,  127,  128,  381,  129,  130,  192,  900,
      131,  132,  133,  134,  135,  136,  232,  137,  138,  233,

      139,  223,  224,  229,  271,  246,  230,  237,  271,  140,
       87,   87,   87,   87,   87,  247,  238,  252,  231,  141,
      253,  254,  142,   74,   74,   20,   74,   74,   74,  143,
       74,   74,   74,   74,   74,  144,   74,  145,  193,  901,
      121,  122,   74,   74,   74,  147,   74,   74,  193,  217,
      217,  210,  225,  234,  226,  239,  250,  235,  240,  272,
      284,  241,  227,  272,  255,  211,  251,  218,  279,  218,
      228,  236,  307,   74,  256,   74,   74,  375,  258,  280,
      308,  259,  260,  376,  277,  220,  221,  284,  261,  391,
      262,  223,  224,  263,  392,  902,  218,  264,  218,   74,

       74,   74,   74,   74,   20,   74,   74,   74,  143,   74,
       74,   74,   74,   74,  144,   74,  145,  217,  217,  121,
      122,   74,   74,   74,  147,   74,   74,  278,  415,  309,
      416,  295,  403,  295,  333,  218,  326,  218,  296,  310,
      295,  297,  295,  322,  334,  327,  323,  219,  273,  273,
      273,  903,   74,  298,   74,   74,  422,  273,  273,  295,
      296,  295,  328,  297,  218,  329,  218,  338,  330,  273,
      339,  340,  697,  423,  219,  321,  273,  273,   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,  904,   21,   21,
       21,   21,   21,   21,  195,   21,  403,  192,   21,   21,
      195,  195,   21,   21,   21,   21,  299,  295,  905,  295,
      300,  309,  295,  449,  295,  450,  341,  273,  295,  324,

      295,  337,  273,  325,  301,  273,  312,  284,  273,  273,
      273,   21,   21,   21,   21,  273,  273,  301,  319,  302,
      320,  335,  314,  366,  493,  336,  472,  906,  292,  308,
      403,  404,  403,  358,  284,  293,  294,  196,   21,  197,
       21,   21,  189,  190,   21,   21,  191,  284,   21,   21,
       21,   21,   21,   21,  195,   21,  403,  192,   21,   21,
      195,  195,   21,   21,   21,   21,  699,  317,  317,  343,
      366,  666,  344,  313,  284,  369,  366,  667,  405,  345,
      358,  346,  396,  374,  347,  285,  358,  285,  348,  370,
      366,   21,   21,   21,   21,  397,  371,  318,  366,  429,

      358,  484,  430,  403,  431,  406,  440,  907,  358,  441,
      485,  515,  432,  516,  285,  442,  285,  196,   21,  197,
       21,   21,  189,  190,  318,   25,  191,  385,   21,   21,
       21,   21,  403,   21,  195,  908,  435,  192,   21,   21,
      195,  195,   21,   21,   21,  317,  317,  366,  366,  436,
      476,  366,  366,  507,  909,  403,  560,  358,  358,  372,
      481,  358,  358,  285,  480,  285,  502,  497,  373,  478,
      562,  503,   21,  295,  366,  295,  910,  506,  383,  504,
      199,  386,  200,  273,  358,  366,  201,  384,  387,  911,
      273,  273,  285,  390,  285,  358,  912,  202,   21,  203,

       21,   21,  189,  190,  561,   25,  191,  913,   21,   21,
       21,   21,  403,   21,  195,  914,  403,  192,   21,   21,
      195,  195,   21,   21,   21,  366,  388,  217,  217,  403,
      208,  484,  208,  389,  509,  358,  403,  682,  282,  282,
      485,  366,  528,  683,  463,  218,  463,  218,  915,  698,
      916,  358,   21,  295,  917,  295, 1150,  918, 1150,  208,
      199,  208,  200,  273,  919,  803,  201,  802,  284,  920,
      466,  273,  921,  463,  218,  463,  218,  202,   21,  203,
       21,  209,  209,  922,  877, 1150,  295, 1150,  467,  209,
      209,  209,  209,  209,  209,  284,  273,  295,  923,  295,

      295,  924,  295,  273,  273,  925,  366,  273,  926,  927,
      273,  317,  317,  928,  273,  273,  358,  273,  473,  209,
      209,  209,  209,  209,  209,  274,  274,  929,  403,  285,
      295,  285,  295,  274,  274,  274,  274,  274,  274,  295,
      273,  295,  366,  474,  366,  366,  403,  273,  273,  273,
      403,  544,  358,  403,  358,  358,  273,  273,  285,  530,
      285,  531,  930,  274,  274,  274,  274,  274,  274,  281,
      281,  285,  931,  285,  804,  489,  366,  282,  283,  282,
      283,  282,  282,  932,  284,  933,  358,  285,  934,  285,
      546,  284,  878,  935,  936,  937,  938,  941,  939,  286,

      285,  942,  285,  940,  943,  944,  945,  282,  283,  282,
      283,  282,  282,  295,  284,  295,  285,  946,  285,  947,
      284,  547,  948,  273,  949,  950,  286,  288,  288,  614,
      273,  273,  951,  952,  953,  288,  289,  288,  290,  288,
      288,  295,  291,  295,  954,  955,  292,  956,  621,  291,
      957,  273,  960,  293,  294,  958,  961,  291,  273,  273,
      959,  962,  963,  964,  965,  288,  295,  288,  295,  288,
      288,  966,  291,  967,  968,  969,  970,  971,  291,  972,
      973,  974,  975,  976,  291,  316,  316,  977,  978,  979,
      980,  981,  982,  316,  316,  316,  316,  316,  316,  983,

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

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

     1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128,
     1129, 1130, 1131,  209,  209,  209,  209,  209,  209, 1132,
     1133, 1134,  218, 1135,  218,  274,  274, 1136, 1137, 1138,
     1139, 1140, 1141,  274,  274,  274,  274,  274,  274, 1142,
     1143, 1144, 1145,  463, 1146,  463, 1147, 1148, 1149,  465,
      899,  898,  897,  896,  895,  894,  893,  892,  891,  890,
      889,  888,  887,  274,  274,  274,  274,  274,  274,  886,
      885,  884,  463,  883,  463,  355,  355,  882,  881,  880,
      879,  403,  876,  355,  355,  355,  355,  355,  355,  875,
      874,  873,  872,  526,  871,  526,  870,  869,  868,  867,

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

      808,  807,  806,  805,  801,  800,  799,  798,  795,  794,
      793,  792,  791,  790,  789,  788,  787,  784,  783,  782,
      781,  780,  779,  778,  777,  776,  775,  774,  785,  773,
      772,  771,  770,  769,  768,  767,  766,  765,  764,  763,
      762,  761,  760,  759,  758,  757,  756,  755,  754,  753,
      752,  785,  785,  785,  796,  796,  751,  796,  796,  796,
      750,  796,  796,  796,  796,  796,  749,  796,  748,  747,
      746,  745,  744,  743,  796,  796,  796,  796,  796,  742,
      741,  740,  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,  796,  714,  713,
      712,  711,  710,  709,  708,  707,  706,  705,  704,  703,
      702,  701,  700,  696,  695,  694,  693,  692,  691,  690,
      796,  796,  796,  785,  785,  689,  785,  785,  785,  688,
      785,  785,  785,  785,  785,  687,  785,  686,  685,  684,
      681,  680,  679,  785,  785,  785,  785,  785,  678,  677,
      676,  675,  674,  673,  672,  671,  670,  669,  668,  665,
      664,  663,  662,  661,  660,  659,  658,  657,  656,  655,
      654,  653,  652,  651,  650,  649,  785,  648,  647,  646,
      645,  644,  643,  642,  641,  640,  639,  621,  638,  637,

      636,  614,  635,  634,  633,  632,  631,  630,  629,  785,
      785,  785,  796,  796,  628,  796,  796,  796,  627,  796,
      796,  796,  796,  796,  626,  796,  625,  624,  623,  622,
      620,  619,  796,  796,  796,  796,  796,  618,  617,  616,
      615,  613,  612,  611,  610,  609,  608,  607,  606,  605,
      604,  603,  602,  601,  600,  599,  598,  597,  596,  595,
      594,  593,  592,  591,  590,  796,  589,  588,  587,  586,
      585,  584,  583,  582,  581,  580,  579,  578,  577,  576,
      575,  574,  573,  572,  571,  570,  569,  568,  796,  796,
      796,   20,   20,   20,   20,   20,   20,   20,   20,   20,

       20,   20,  146,  146,  146,  146,  146,  146,  146,  146,
      146,  146,  146,   21,   21,   21,   21,   21,   21,   21,
       21,   21,   21,   21,  194,  194,  194,  194,  194,  194,
      194,  194,  194,  194,  194,  198,  198,  198,  198,  198,
      198,  198,  198,  198,  198,  198,  206,  206,  206,  206,
      206,  206,  206,  206,  206,  206,  206,  208,  208,  208,
      208,  208,  208,  208,  208,  273,  567,  273,  273,  273,
      273,  273,  273,  354,  566,  565,  564,  563,  354,  354,
      354,  356,  356,  356,  356,  356,  356,  356,  356,  356,
      356,  356,  358,  402,  358,  403,  358,  358,  358,  358,

      360,  399,  360,  360,  360,  360,  360,  360,  360,  360,
      360,  363,  559,  363,  363,  363,  363,  363,  363,  363,
      363,  363,  400,  558,  400,  400,  400,  400,  400,  400,
      400,  400,  400,  401,  557,  401,  402,  402,  402,  556,
      555,  402,  402,  554,  402,  464,  553,  464,  464,  464,
      464,  464,  464,  786,  552,  786,  786,  786,  786,  786,
      786,  786,  786,  786,  797,  551,  797,  797,  797,  797,
      797,  797,  797,  797,  797,  785,  550,  785,  785,  785,
      785,  785,  785,  785,  785,  785,  796,  549,  796,  796,
      796,  796,  796,  796,  796,  796,  796,  548,  545,  543,

      542,  541,  540,  539,  538,  537,  536,  535,  534,  533,
      532,  529,  357,  525,  524,  489,  523,  522,  521,  520,
      519,  518,  517,  514,  513,  512,  511,  510,  508,  505,
      501,  500,  499,  498,  496,  495,  473,  494,  492,  491,
      466,  490,  488,  487,  486,  483,  482,  481,  480,  479,
      478,  477,  476,  475,  472,  471,  470,  469,  468,  462,
      461,  460,  459,  458,  457,  456,  455,  454,  453,  452,
      451,  448,  447,  446,  445,  444,  443,  439,  438,  437,
      434,  433,  428,  427,  426,  425,  424,  421,  420,  419,
      418,  417,  414,  413,  412,  411,  410,  409,  408,  407,

      207,  204,  403,  279,  399,  398,  395,  394,  393,  382,
      379,  378,  377,  287,  362,  277,  276,  361,  357,  353,
      352,  351,  350,  349,  342,  332,  331,  315,  313,  312,
      311,  306,  305,  304,  303,  287,  276,  275,  207,  205,
      204,  270,  269,  268,  267,  266,  265,  257,  245,  244,
      243,  242,  222,  214,  213,  212,  207,  205,  204, 1150,
       19, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
     1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
     1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
     1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,

     1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
     1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
     1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
     1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
     1150
    } ;

static yyconst short int yy_chk[2142] =
    {   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,
      173,    7,    7,   14,   14,   28,   36,   14,   13,    7,
        7,    7,    7,    7,    7,  173,    7,    7,   14,  833,
        7,    7,    7,    7,    7,    7,   47,    7,    7,   47,

        7,   43,   43,   46,   71,   55,   46,   49,  117,    7,
        7,    7,    7,    7,    7,   55,   49,   58,   46,    7,
       58,   58,    7,    9,    9,    9,    9,    9,    9,    9,
        9,    9,    9,    9,    9,    9,    9,    9,   13,  834,
        9,    9,    9,    9,    9,    9,    9,    9,   14,   38,
       38,   80,   45,   48,   45,   50,   57,   48,   50,   71,
       90,   50,   45,  117,   59,   80,   57,   38,   88,   38,
       45,   48,  107,    9,   59,    9,    9,  169,   61,   88,
      107,   61,   61,  169,   86,   93,   93,   90,   61,  182,
       61,   95,   95,   61,  182,  836,   38,   61,   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,   86,  232,  108,
      232,   98,  560,   98,  131,   37,  127,   37,   98,  108,
       99,   98,   99,  125,  131,  127,  125,   37,   98,   98,
       99,  837,   10,   99,   10,   10,  238,   99,   99,  102,
      124,  102,  128,  124,   37,  128,   37,  134,  128,  102,
      134,  134,  560,  238,   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,  838,   15,   15,
       15,   15,   15,   15,   15,   15,  199,   15,   15,   15,
       15,   15,   15,   15,   15,   15,  100,  100,  839,  100,
      100,  133,  114,  258,  114,  258,  135,  100,  101,  126,

      101,  133,  114,  126,  100,  100,  135,  158,  101,  114,
      114,   15,   15,   15,   15,  101,  101,  126,  123,  101,
      123,  132,  114,  166,  322,  132,  322,  840,  123,  132,
      562,  199,  200,  166,  158,  123,  123,   15,   15,   15,
       15,   16,   16,   16,   16,   16,   16,  281,   16,   16,
       16,   16,   16,   16,   16,   16,  201,   16,   16,   16,
       16,   16,   16,   16,   16,   16,  562,  121,  121,  137,
      168,  529,  137,  137,  281,  164,  164,  529,  200,  137,
      168,  137,  186,  168,  137,  121,  164,  121,  137,  165,
      165,   16,   16,   16,   16,  186,  165,  121,  178,  244,

      165,  310,  244,  404,  244,  201,  251,  842,  178,  251,
      310,  343,  244,  343,  121,  251,  121,   16,   16,   16,
       16,   17,   17,   17,  121,   17,   17,  178,   17,   17,
       17,   17,  406,   17,   17,  843,  247,   17,   17,   17,
       17,   17,   17,   17,   17,  122,  122,  167,  177,  247,
      327,  181,  179,  335,  844,  405,  404,  167,  177,  167,
      335,  181,  179,  122,  334,  122,  332,  327,  167,  332,
      406,  332,   17,  288,  364,  288,  845,  334,  177,  332,
       17,  179,   17,  288,  364,  180,   17,  177,  179,  846,
      288,  288,  122,  181,  122,  180,  847,   17,   17,   17,

       17,   18,   18,   18,  405,   18,   18,  848,   18,   18,
       18,   18,  561,   18,   18,  850,  697,   18,   18,   18,
       18,   18,   18,   18,   18,  365,  180,  217,  217,  698,
      219,  337,  219,  180,  337,  365,  802,  545,  282,  282,
      337,  366,  365,  545,  316,  217,  316,  217,  851,  561,
      852,  366,   18,  289,  855,  289,  282,  857,  282,  219,
       18,  219,   18,  289,  858,  698,   18,  697,  282,  859,
      289,  289,  860,  316,  217,  316,  217,   18,   18,   18,
       18,   26,   26,  861,  802,  282,  290,  282,  290,   26,
       26,   26,   26,   26,   26,  282,  290,  295,  864,  295,

      299,  865,  299,  290,  290,  866,  383,  295,  870,  871,
      299,  317,  317,  872,  295,  295,  383,  299,  299,   26,
       26,   26,   26,   26,   26,   78,   78,  876,  699,  317,
      314,  317,  314,   78,   78,   78,   78,   78,   78,  300,
      314,  300,  369,  300,  370,  385,  803,  314,  314,  300,
      877,  383,  369,  878,  370,  385,  300,  300,  317,  369,
      317,  370,  879,   78,   78,   78,   78,   78,   78,   89,
       89,  465,  880,  465,  699,  314,  386,   89,   89,   89,
       89,   89,   89,  881,   89,  882,  386,   89,  884,   89,
      385,   89,  803,  885,  887,  888,  889,  894,  891,   89,

      465,  895,  465,  891,  896,  899,  900,   89,   89,   89,
       89,   89,   89,  467,   89,  467,   89,  901,   89,  902,
       89,  386,  904,  467,  905,  906,   89,   97,   97,  467,
      467,  467,  909,  910,  911,   97,   97,   97,   97,   97,
       97,  474,   97,  474,  912,  913,   97,  914,  474,   97,
      916,  474,  920,   97,   97,  918,  921,   97,  474,  474,
      918,  924,  925,  926,  927,   97,   97,   97,   97,   97,
       97,  928,   97,  929,  931,  932,  933,  934,   97,  935,
      936,  938,  939,  940,   97,  120,  120,  941,  943,  945,
      947,  948,  950,  120,  120,  120,  120,  120,  120,  951,

      953,  954,  955,  956,  957,  958,  959,  960,  968,  969,
      970,  971,  972,  973,  974,  975,  976,  977,  978,  979,
      980,  981,  982,  120,  120,  120,  120,  120,  120,  143,
      143,  983,  984,  985,  986,  987,  988,  143,  143,  143,
      143,  143,  143,  989,  990,  991,  992,  993,  994,  995,
      996,  997,  998,  999, 1000, 1002, 1003, 1004, 1005, 1006,
     1007, 1008, 1009, 1010, 1011, 1012, 1013,  143,  143,  143,
      143,  143,  143,  150,  150, 1014, 1016, 1017, 1018, 1019,
     1020,  150,  150,  150,  150,  150,  150, 1021, 1024, 1025,
     1026, 1027, 1028, 1030, 1031, 1032, 1033, 1034, 1035, 1037,

     1039, 1040, 1042, 1043, 1044, 1045, 1046, 1047, 1049, 1050,
     1052,  150,  150,  150,  150,  150,  150,  163,  163, 1053,
     1054, 1055, 1056, 1058, 1059,  163,  163,  163,  163,  163,
      163, 1057,  163, 1061, 1062, 1057,  163, 1063, 1064,  163,
     1065, 1063, 1066, 1067, 1068, 1070, 1071,  163, 1072, 1073,
     1074, 1077, 1078, 1081, 1082,  163,  163,  163,  163,  163,
      163, 1083,  163, 1084, 1085, 1086, 1087, 1088,  163, 1089,
     1090, 1091, 1092, 1093,  163,  209,  209, 1094, 1095, 1097,
     1098, 1099, 1101,  209,  209,  209,  209,  209,  209, 1102,
     1103, 1104, 1105,  209, 1106,  209, 1107, 1108, 1109, 1110,

     1111, 1112, 1114, 1115, 1117, 1118, 1119, 1120, 1121, 1122,
     1123, 1124, 1125,  209,  209,  209,  209,  209,  209, 1126,
     1127, 1128,  209, 1129,  209,  274,  274, 1130, 1131, 1133,
     1134, 1136, 1137,  274,  274,  274,  274,  274,  274, 1138,
     1139, 1140, 1141,  274, 1143,  274, 1145, 1146, 1147, 1168,
      832,  831,  828,  827,  826,  825,  824,  823,  822,  819,
      818,  816,  814,  274,  274,  274,  274,  274,  274,  813,
      812,  810,  274,  809,  274,  355,  355,  808,  807,  806,
      805,  804,  801,  355,  355,  355,  355,  355,  355,  799,
      795,  794,  793,  355,  791,  355,  790,  788,  784,  783,

      782,  780,  779,  778,  777,  776,  773,  772,  770,  769,
      768,  767,  766,  355,  355,  355,  355,  355,  355,  765,
      763,  762,  355,  761,  355,  359,  359,  759,  757,  756,
      755,  754,  753,  359,  359,  359,  359,  359,  359,  752,
      751,  750,  749,  359,  748,  359,  746,  744,  743,  741,
      739,  738,  737,  736,  735,  734,  733,  731,  729,  728,
      727,  725,  724,  359,  359,  359,  359,  359,  359,  723,
      722,  721,  359,  720,  359,  673,  673,  719,  673,  673,
      673,  718,  673,  673,  673,  673,  673,  717,  673,  715,
      714,  712,  710,  709,  706,  673,  673,  673,  673,  673,

      705,  704,  703,  700,  696,  695,  693,  692,  688,  687,
      683,  682,  681,  680,  679,  677,  676,  672,  671,  667,
      666,  665,  664,  663,  662,  661,  660,  658,  673,  657,
      656,  654,  653,  652,  651,  650,  649,  647,  646,  645,
      644,  643,  642,  640,  639,  638,  637,  635,  634,  633,
      632,  673,  673,  673,  689,  689,  631,  689,  689,  689,
      630,  689,  689,  689,  689,  689,  629,  689,  627,  624,
      623,  622,  621,  620,  689,  689,  689,  689,  689,  618,
      616,  615,  613,  612,  611,  610,  609,  608,  607,  606,
      604,  603,  602,  601,  599,  598,  597,  596,  595,  594,

      593,  592,  590,  588,  587,  585,  584,  689,  582,  581,
      580,  579,  577,  576,  575,  574,  573,  572,  571,  569,
      567,  565,  563,  559,  558,  557,  556,  555,  554,  553,
      689,  689,  689,  786,  786,  552,  786,  786,  786,  551,
      786,  786,  786,  786,  786,  550,  786,  548,  547,  546,
      544,  543,  542,  786,  786,  786,  786,  786,  541,  540,
      539,  538,  537,  536,  535,  534,  532,  531,  530,  528,
      523,  522,  521,  520,  519,  518,  517,  516,  515,  514,
      513,  512,  511,  510,  509,  508,  786,  506,  505,  504,
      503,  502,  500,  499,  498,  497,  496,  495,  494,  493,

      492,  491,  490,  489,  488,  487,  486,  485,  484,  786,
      786,  786,  797,  797,  483,  797,  797,  797,  480,  797,
      797,  797,  797,  797,  479,  797,  478,  477,  476,  475,
      473,  472,  797,  797,  797,  797,  797,  471,  470,  469,
      468,  466,  462,  459,  458,  457,  456,  455,  454,  453,
      452,  451,  450,  449,  448,  447,  446,  445,  444,  443,
      442,  441,  440,  439,  438,  797,  436,  435,  434,  433,
      432,  431,  430,  429,  427,  426,  425,  424,  423,  422,
      421,  420,  419,  418,  417,  416,  415,  414,  797,  797,
      797, 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, 1156, 1156, 1156, 1157, 1157, 1157,
     1157, 1157, 1157, 1157, 1157, 1158,  413, 1158, 1158, 1158,
     1158, 1158, 1158, 1159,  412,  411,  410,  409, 1159, 1159,
     1159, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160,
     1160, 1160, 1161,  403, 1161,  402, 1161, 1161, 1161, 1161,

     1162,  399, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162,
     1162, 1163,  398, 1163, 1163, 1163, 1163, 1163, 1163, 1163,
     1163, 1163, 1164,  397, 1164, 1164, 1164, 1164, 1164, 1164,
     1164, 1164, 1164, 1165,  396, 1165, 1166, 1166, 1166,  395,
      394, 1166, 1166,  393, 1166, 1167,  392, 1167, 1167, 1167,
     1167, 1167, 1167, 1169,  391, 1169, 1169, 1169, 1169, 1169,
     1169, 1169, 1169, 1169, 1170,  390, 1170, 1170, 1170, 1170,
     1170, 1170, 1170, 1170, 1170, 1171,  389, 1171, 1171, 1171,
     1171, 1171, 1171, 1171, 1171, 1171, 1172,  388, 1172, 1172,
     1172, 1172, 1172, 1172, 1172, 1172, 1172,  387,  384,  382,

      381,  380,  379,  378,  377,  376,  375,  374,  373,  372,
      371,  368,  356,  353,  352,  351,  350,  349,  348,  347,
      346,  345,  344,  342,  341,  340,  339,  338,  336,  333,
      331,  330,  329,  328,  326,  325,  324,  323,  321,  320,
      319,  315,  313,  312,  311,  309,  308,  307,  306,  305,
      304,  303,  302,  301,  298,  297,  296,  293,  292,  270,
      269,  268,  267,  266,  265,  264,  263,  262,  261,  260,
      259,  257,  256,  255,  254,  253,  252,  250,  249,  248,
      246,  245,  243,  242,  241,  240,  239,  237,  236,  235,
      234,  233,  231,  230,  229,  227,  226,  225,  224,  220,

      206,  204,  198,  192,  189,  187,  185,  184,  183,  174,
      172,  171,  170,  161,  156,  154,  152,  151,  149,  142,
      141,  140,  139,  138,  136,  130,  129,  115,  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,
     1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
     1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
     1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
     1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,

     1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
     1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
     1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
     1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
     1150
    } ;

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 if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
		  && ferror( yyin ) ) \
		YY_FATAL_ERROR( "input in flex scanner failed" );
#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 1509 "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 >= 1151 )
					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] != 2061 );

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 2575 "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 >= 1151 )
				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 >= 1151 )
			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 == 1150);

	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 YY_ALWAYS_INTERACTIVE
#ifndef YY_NEVER_INTERACTIVE
extern int isatty YY_PROTO(( int ));
#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);
}
