/* 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 169
#define YY_END_OF_BUFFER 170
static yyconst short int yy_accept[1063] =
    {   0,
        0,    0,  149,  149,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,  170,  169,
      167,  152,  151,   32,  167,  149,   38,   29,   44,   43,
       34,   35,   28,   36,  149,   37,    8,    8,   45,   46,
       39,   40,   27,   33,  149,  149,  149,  149,  149,  149,
      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
      149,  149,  149,   10,    9,  149,   99,   97,  149,   42,
       30,   41,   31,  168,  152,   32,  168,  147,   38,   29,
       44,   43,   34,   35,   28,   36,  147,   37,    8,    8,
       45,   46,   39,   40,   27,   33,  147,  147,  147,  147,

      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
      147,   10,    9,  147,  147,   42,   30,   41,   31,  147,
        8,    8,  147,  147,  147,  147,  147,  147,  147,  147,
      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
       99,   97,    4,    3,    2,    4,    5,  108,  107,  146,
       34,   35,   28,   36,  146,   37,    8,    8,   45,   46,
       40,   33,  146,  146,  146,  146,  146,  146,  146,  146,
      146,  146,  146,  146,   10,    9,  146,  146,  146,  146,
      146,  146,  146,  146,  146,  146,  146,   31,  166,  164,
      165,  159,  158,  153,  160,  161,  157,  157,  157,  157,

      162,  163,  152,   15,    0,  150,  149,    8,   26,   24,
       22,   20,   21,    1,   23,    8,    8,  149,   18,   17,
       14,   16,   19,  149,  149,  149,  103,  149,  149,  149,
      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
      149,  149,  149,  149,  149,  149,  149,  149,   25,   13,
      147,    6,   22,   20,   21,    0,    1,   23,    8,    0,
        7,    7,    8,    7,   14,  147,    7,    7,    7,  147,
      147,  103,    7,  147,  147,    7,  147,  147,    7,  147,

      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
        7,  147,    8,    8,    0,  147,  147,  147,  147,  147,
      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
      147,  147,  147,  147,  147,  147,  147,  147,  147,    4,
        4,  107,  107,  146,    6,  109,   22,   23,  110,  146,
        7,    7,    7,  146,  146,  146,    7,  146,    7,    7,
      146,  146,  146,  146,  146,  146,  146,  146,    7,  146,
      146,  146,    7,  146,    7,    7,  146,  146,  146,  146,
      146,  146,  146,  146,  166,  165,  158,  157,    0,  157,

      157,  157,   11,   12,  149,  149,  149,  149,  149,  149,
      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
      149,  149,   80,  149,  149,  149,  149,  149,  149,  149,
       64,  149,  149,  149,  149,  149,  149,  149,  149,  149,
      149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
      149,  149,  149,  100,   98,  149,    8,  148,    8,  147,
        7,  147,  147,  147,  147,  147,  147,  147,  147,  147,
      147,  147,  147,   56,   57,  147,  147,  147,  147,  147,
      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
      147,  147,  147,   80,  147,  147,  147,  147,   64,  147,

      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
      147,  147,  147,  147,  147,  100,   98,    4,    8,  146,
      146,  146,  146,  146,  111,  146,  146,  146,  146,  146,
      146,  146,  146,  146,  146,  146,  146,  146,  146,  146,
      128,  146,  146,  146,  146,  146,  146,  146,  146,  146,
      146,  157,  157,  157,  149,   54,  149,   51,  149,   87,
      149,   94,  149,  149,  149,  149,  149,  149,   76,  149,
      149,  149,  149,   95,  149,  105,  149,  149,   85,  149,
       61,  149,  149,  149,  149,  149,  149,  149,  149,   83,
      149,  149,  149,  149,   91,  149,  149,  149,  149,  149,

      149,  149,  147,   54,  147,  147,   51,  147,   94,  147,
      147,  147,  147,   95,  105,  147,   61,  147,  147,  147,
      147,  147,  147,  147,   87,  147,  147,  147,  147,   76,
      147,  147,  147,  147,  147,   85,  147,  147,  147,  147,
      147,  147,   83,  147,  147,  147,   91,  147,  147,  147,
      147,  147,  146,  146,  146,  115,  123,  114,  146,  146,
      125,  118,  121,  146,  146,  126,  146,  146,  146,  146,
      146,  132,  140,  131,  146,  146,  143,  135,  138,  146,
      146,  144,  146,  146,  157,  157,  157,  149,   53,   50,
      149,  149,  149,   93,   59,  149,  149,   82,  149,   70,

      149,   69,  149,  149,  149,  149,  149,  149,  149,  149,
      149,  102,  149,  149,  149,   86,  149,   84,  149,  149,
      149,  149,  149,  149,  147,   53,  147,   50,  147,   93,
      147,   70,  147,  147,  147,  147,  147,  147,  147,  147,
      147,  147,   59,  147,   82,  147,  147,   69,  147,  147,
      147,  147,  147,  147,  102,  147,  147,   86,   84,  147,
      147,  147,  147,  146,  116,  113,  146,  146,  125,  125,
      120,  146,  124,  146,  146,  133,  130,  146,  146,  143,
      143,  137,  146,  142,  146,  157,  157,  155,  149,  149,
      149,  149,  149,   60,  149,  149,   52,  149,   47,  149,

      149,   92,   48,   68,  149,  149,  149,  149,   65,  149,
       81,   66,  149,  149,  149,  147,   58,  147,  147,  147,
      147,   92,  147,  147,   65,  147,  147,  147,  147,   60,
      147,  147,   52,   47,  147,   48,   68,  147,  147,  147,
      147,   81,   66,  147,  146,  146,   60,  122,  119,  146,
      146,  146,  141,  139,  136,  146,  156,  154,  149,  149,
      149,   71,  149,  149,  101,  149,  149,   88,  149,   90,
      104,  149,  149,  149,   77,   49,  149,  149,  147,   71,
      147,  147,  147,   96,  104,  147,  147,  147,  147,  147,
      147,  101,   88,  147,   90,  147,  147,   77,   49,  146,

      146,  146,  146,  146,  146,  127,  149,  149,  149,  149,
       55,  149,  149,  149,  149,   75,  149,  145,  149,  127,
      147,   55,  147,  147,  145,  147,  147,  147,  147,  147,
      147,  147,   75,  127,  112,  117,  145,  129,  134,  149,
      149,  149,  149,  149,  149,  149,  149,  149,  149,  147,
      147,  147,  147,  147,  147,  147,  147,  147,  147,  149,
      149,  149,  149,  149,  149,  149,   67,  149,  149,  147,
      147,  147,  147,  147,  147,  147,  147,  147,   67,  149,
      149,  149,  149,   89,   79,  149,  149,  149,  147,   89,
      147,  147,  147,  147,  147,   79,  147,   73,  149,  106,

      149,  149,  149,  149,  106,  147,  147,   73,  147,  147,
      147,  149,  149,   78,  149,  149,  147,  147,  147,  147,
       78,  149,  149,   63,   62,   63,   62,  147,  147,  149,
      149,  147,  147,  149,  149,  147,  147,  149,  149,  147,
      147,  149,  149,  147,  147,  149,  149,  147,  147,  149,
      149,  147,  147,   72,  149,   72,  147,  149,  147,   74,
       74,    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,    1,   54,    1,   55,   56,   57,   58,

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

        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    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[80] =
    {   0,
        1,    1,    2,    1,    1,    1,    3,    1,    1,    1,
        1,    4,    5,    6,    5,    7,    8,    9,    9,   10,
        1,    1,    6,    1,    4,    9,    9,    9,    9,    9,
        9,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        5,    8,    5,    7,    9,    9,    9,    9,    9,    9,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    1,    1,    1,    8
    } ;

static yyconst short int yy_base[1085] =
    {   0,
        0,    0,    0,    0,   79,    0,  152,    0,  220,  298,
      376,    0,  160,  170,  455,  534,  613,  692, 1941, 1942,
     1942, 1938, 1942, 1916, 1933,  754, 1942,  151, 1942, 1942,
     1914, 1913,    0, 1912,    0,  152,  296,  229,    0, 1942,
      145, 1911,  164,    0,  223,  164,  160,  172,  156,  217,
     1890, 1895, 1892, 1900,  175,  135,  219,  215,  220, 1883,
      236, 1902, 1897,    0,    0, 1870, 1866, 1854, 1860, 1942,
      195, 1942,    0, 1942, 1920, 1898, 1915,  797, 1942,  265,
     1942, 1942, 1896, 1895, 1942,  154,    0,  252,  840, 1843,
     1942, 1942,  233, 1893,  256, 1942,  897,  299,  302,  308,

      321,  327, 1872, 1875, 1883, 1872,  180,  247, 1864, 1867,
     1875, 1942, 1942,  454, 1845, 1942,  214, 1942,    0,  954,
      700,  542,  457,  448,  243,  297,  320,  453, 1870, 1867,
      252,  462,  254,  457,  297, 1859,  479, 1878, 1873, 1846,
     1842, 1830,  997, 1942, 1942,    0, 1942, 1942, 1896, 1040,
     1875, 1874, 1942, 1873,    0, 1872,    0, 1820, 1942,    0,
     1870, 1942, 1083,  488,  490,  330,  535,  536,  321, 1866,
     1848, 1844,  139, 1846, 1942, 1942,  538,  540,  542,  572,
      561,  503, 1833, 1817, 1813,  446, 1815,    0, 1882, 1942,
        0, 1942,    0, 1942, 1942, 1942, 1863,  510,  573,  305,

     1942, 1942, 1880, 1942, 1876, 1942,    0, 1140, 1942, 1942,
        0,    0,    0,    0,    0,  622,    0,  607, 1857, 1942,
        0, 1942, 1856, 1834, 1848, 1842,    0, 1836, 1834, 1828,
      481, 1842, 1840, 1840, 1824,  536, 1831, 1827, 1823, 1825,
     1827,  561, 1833, 1823,  581, 1820, 1822, 1811,  616, 1824,
     1812, 1826, 1818, 1797, 1801,  542, 1777, 1759, 1762, 1757,
     1776, 1754, 1745, 1735, 1697, 1695, 1699, 1670, 1942, 1942,
        0, 1189, 1942, 1942, 1942,    0, 1942,    0, 1670,  712,
        0, 1942, 1942,    0, 1942,  625,  695,  750,    0, 1709,
     1691,    0,  761, 1623, 1621, 1619,  802, 1629, 1630, 1617,

     1625, 1625, 1628, 1605, 1613, 1603,  434, 1620, 1609, 1598,
      793, 1572,  613,  825,    0, 1602, 1616, 1599,  609, 1613,
     1611, 1596,  597, 1603, 1599, 1595, 1600,  692, 1597,  629,
      615, 1597,  697, 1600, 1588, 1602, 1602, 1604,  631, 1589,
     1585, 1581, 1600, 1581, 1581, 1580, 1551, 1554, 1559,    0,
     1238, 1616, 1942,    0, 1287,    0,    0, 1942,    0,  563,
      710,  564,    0, 1584,  715,  719, 1583, 1587, 1570, 1571,
     1569, 1581, 1568, 1576, 1577, 1575, 1576, 1554,  690, 1531,
      728,  764, 1527, 1526, 1511, 1512, 1510, 1525, 1513, 1520,
     1521, 1519, 1520, 1501, 1571,    0,    0, 1552, 1551,  469,

      661,  647, 1942, 1942, 1530, 1526, 1536, 1538, 1538, 1535,
     1520, 1514, 1536, 1527, 1532, 1516, 1521, 1527, 1519, 1529,
     1526, 1507,    0, 1515, 1511, 1504, 1508, 1516, 1518, 1514,
        0, 1505, 1499, 1500, 1505, 1501, 1508, 1498, 1495, 1494,
     1489, 1506, 1486, 1483, 1484, 1496, 1480, 1498, 1479, 1479,
     1480, 1462, 1437,    0,    0, 1445,    0,    0,  796, 1463,
      874, 1470, 1471, 1471, 1471, 1449,  848, 1469, 1459, 1449,
     1454, 1452, 1463,    0,    0, 1446, 1447, 1449, 1445, 1440,
     1456, 1417, 1425, 1440, 1452, 1437, 1454, 1445, 1435, 1447,
     1439, 1449, 1446,    0, 1436, 1426, 1439, 1438,    0, 1429,

     1431, 1435, 1425, 1422, 1421, 1434, 1419, 1416, 1417, 1414,
     1432, 1414, 1414, 1418, 1405,    0,    0,    0,    0, 1408,
      650, 1417, 1416, 1403,    0, 1408, 1396, 1383, 1398, 1396,
     1395, 1387, 1378, 1379, 1382, 1352,  680, 1360, 1359, 1348,
        0, 1357, 1349, 1342, 1355, 1353, 1352, 1345, 1337, 1338,
     1340,  304,  665,  738, 1369,    0, 1366,    0, 1368,    0,
     1358,    0, 1357, 1362, 1355, 1350, 1352, 1354,    0, 1351,
     1365, 1353, 1347,    0, 1347,    0, 1346, 1364,    0, 1346,
        0, 1348, 1347, 1360, 1351, 1338, 1346, 1338, 1347,    0,
     1352, 1345, 1328, 1332,    0, 1342, 1325, 1335, 1338, 1332,

     1295, 1288, 1315,    0, 1311, 1306,    0, 1312,    0, 1302,
     1295, 1293, 1297,    0,    0, 1311,    0, 1296, 1309, 1297,
     1299, 1292, 1266, 1262,    0, 1284, 1283, 1278, 1283,    0,
     1279, 1292, 1275, 1275, 1274,    0, 1269, 1271, 1276, 1263,
     1271, 1263,    0, 1275, 1267, 1255,    0, 1270, 1247, 1257,
     1260, 1255, 1251, 1243, 1247,    0,    0,    0, 1242, 1258,
     1353,    0,    0, 1240, 1248,    0, 1236, 1252, 1214, 1207,
     1210,    0,    0,    0, 1205, 1218, 1431,    0,    0, 1202,
     1208,    0, 1198, 1206,  679,  742,  776, 1216,    0,    0,
     1218, 1230, 1229,    0,    0, 1229, 1215,    0, 1198,    0,

     1222,    0, 1217, 1214, 1193, 1197, 1214, 1210, 1199, 1192,
     1210,    0, 1206, 1201, 1193,    0, 1201,    0, 1185, 1203,
     1184, 1188, 1153, 1164, 1177,    0, 1177,    0, 1191,    0,
     1185,    0, 1184, 1168, 1182, 1184, 1180, 1174, 1130, 1142,
     1158, 1164,    0, 1154,    0, 1138, 1162,    0, 1157, 1140,
     1162, 1148, 1141, 1159,    0, 1151, 1143,    0,    0, 1136,
     1154, 1135, 1139, 1131,    0, 1137, 1135, 1128,    0, 1509,
        0, 1144,    0, 1139, 1091,    0, 1097, 1095, 1089,    0,
     1587,    0, 1103,    0, 1101,  641,  780, 1135, 1109, 1107,
     1098, 1121, 1119,    0, 1120, 1117,    0, 1117,    0, 1100,

     1092,    0,    0, 1082, 1086, 1104, 1079, 1093, 1076, 1088,
        0,    0, 1089, 1055, 1072, 1080,    0, 1095, 1092, 1092,
     1075,    0, 1069, 1087, 1061, 1036, 1053, 1060, 1051,    0,
     1076,  259,    0,    0,  245,    0,  441,  462,  472,  490,
      509,    0,    0,  543,  551,  565,    0,    0,    0,  630,
      608,  615,    0,    0,    0,  612,  667,  706,  730,  739,
      735,    0,  735,  752,    0,  759,  760,    0,  848,    0,
        0,  775,  763,  775,    0,    0,  758,  756,  789,    0,
      767,  793,  797,    0,    0,  809,  789,  787,  822,  811,
      825,    0,    0,  855,    0,  843,  839,    0,    0,  854,

      858,  860,  835,  847,  848,    0,  864,  883,  881,  875,
        0,  890,  878,  882,  895,    0,  901,    0,  873,    0,
      902,    0,  905,  906,    0,  879,  894,  913,  905,  901,
      906,  913,    0,    0,    0,    0,    0,    0,    0,  908,
      914,  916,  913,  927,  932,  918,  919,  937,  909,  932,
      936,  942,  914,  930,  939,  937,  948,  934,  935,  936,
      956,  950,  948,  945,  957,  953,    0,  963,  935,  957,
      951,  967,  939,  955,  969,  960,  968,  964,    0,  959,
      976,  975,  967,    0,    0,  981,  978,  958,  988,    0,
      989,  961,  977,  994,  990,    0, 1004,    0,  986,    0,

      978,  988,  991,  965,    0,  993,  967,    0,  993,  985,
      995,  987, 1016,    0,  999,  973, 1001,  975,  993, 1022,
        0, 1005, 1013,    0,    0,    0,    0, 1007, 1023, 1012,
     1025, 1014, 1027, 1027, 1032, 1035, 1034, 1048, 1048, 1050,
     1050, 1039, 1054, 1041, 1056, 1046, 1039, 1048, 1041, 1043,
     1054, 1045, 1056,    0, 1051,    0, 1052, 1054, 1055,    0,
        0, 1942, 1665, 1675, 1685, 1695, 1705, 1715, 1723, 1731,
     1739, 1748, 1756, 1766, 1776, 1786, 1790, 1797, 1805, 1094,
     1815, 1825, 1835, 1845
    } ;

static yyconst short int yy_def[1085] =
    {   0,
     1063, 1063, 1062,    3, 1062,    5,    5,    7, 1064, 1064,
     1062,   11, 1065, 1065, 1066, 1066, 1067, 1067, 1062, 1062,
     1062, 1062, 1062, 1062, 1068, 1069, 1062, 1062, 1062, 1062,
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1062,
     1062, 1069, 1062, 1069, 1069, 1069, 1069, 1069, 1069, 1069,
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069,
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1062,
     1062, 1062, 1069, 1062, 1062, 1062, 1068, 1070, 1062, 1062,
     1062, 1062, 1062, 1062, 1062, 1062, 1070, 1070, 1062,   89,
     1062, 1062, 1062, 1062, 1062, 1062, 1070,   97,   97,   97,

       97,   97, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
     1070, 1062, 1062,   97, 1070, 1062, 1062, 1062, 1070, 1070,
     1062, 1062, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
     1070, 1070, 1071, 1062, 1062, 1071, 1062, 1062, 1072, 1073,
     1074, 1062, 1062, 1062, 1073, 1073,   89,   89, 1062, 1075,
     1062, 1062, 1073,  163,  163,  163,  163,  163, 1073, 1073,
     1073, 1073, 1073, 1073, 1062, 1062,  163,  163,  163,  163,
      163, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1062, 1062,
     1076, 1062, 1077, 1062, 1062, 1062, 1078, 1078, 1078, 1078,

     1062, 1062, 1062, 1062, 1068, 1062, 1069, 1069, 1062, 1062,
     1069, 1069, 1069, 1069, 1069, 1069, 1069,  208, 1062, 1062,
     1069, 1062, 1062, 1069, 1069, 1069, 1069, 1069, 1069, 1069,
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069,
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069,
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069,
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1062, 1062,
     1070, 1070, 1062, 1062, 1062, 1079, 1062, 1070,   89,   89,
      280, 1062, 1062, 1080, 1062,   97,   97,   97, 1070, 1070,
     1070, 1070,   97, 1070, 1070, 1070,   97, 1070, 1070, 1070,

     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
       97, 1070,  120, 1062, 1080, 1070, 1070, 1070, 1070, 1070,
     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1071,
     1071, 1072, 1062, 1073, 1073, 1074, 1074, 1062, 1075,  163,
      163,  163, 1073, 1073,  163,  163, 1073, 1073, 1073, 1073,
     1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073,  163, 1073,
      163,  163, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
     1073, 1073, 1073, 1073, 1062, 1076, 1077, 1078, 1062, 1078,

     1078, 1078, 1062, 1062, 1069, 1069, 1069, 1069, 1069, 1069,
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069,
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069,
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069,
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069,
     1069, 1069, 1069, 1069, 1069, 1069, 1070, 1079, 1080, 1070,
       97, 1070, 1070, 1070, 1070, 1070,   97, 1070, 1070, 1070,
     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,

     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1071, 1073, 1073,
     1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
     1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
     1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
     1073, 1078, 1078, 1078, 1069, 1069, 1069, 1069, 1069, 1069,
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069,
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069,
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069,
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069,

     1069, 1069, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
     1070, 1070, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
     1081, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
     1073, 1073, 1073, 1073, 1073, 1073, 1082, 1073, 1073, 1073,
     1073, 1073, 1073, 1073, 1078, 1078, 1078, 1069, 1069, 1069,
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069,

     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069,
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069,
     1069, 1069, 1069, 1069, 1070, 1070, 1070, 1070, 1070, 1070,
     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
     1070, 1070, 1070, 1073, 1073, 1073, 1073, 1073, 1083, 1081,
     1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1084,
     1082, 1073, 1073, 1073, 1073, 1078, 1078, 1078, 1069, 1069,
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069,

     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069,
     1069, 1069, 1069, 1069, 1069, 1070, 1070, 1070, 1070, 1070,
     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
     1070, 1070, 1070, 1070, 1073, 1073, 1073, 1073, 1073, 1073,
     1073, 1073, 1073, 1073, 1073, 1073, 1078, 1078, 1069, 1069,
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069,
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1070, 1070,
     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1073,

     1073, 1073, 1073, 1073, 1073, 1069, 1069, 1069, 1069, 1069,
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1070,
     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
     1070, 1070, 1070, 1073, 1073, 1073, 1073, 1073, 1073, 1069,
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1070,
     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1069,
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1070,
     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1069,
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1070, 1070,
     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1069, 1069, 1069,

     1069, 1069, 1069, 1069, 1070, 1070, 1070, 1070, 1070, 1070,
     1070, 1069, 1069, 1069, 1069, 1069, 1070, 1070, 1070, 1070,
     1070, 1069, 1069, 1069, 1069, 1070, 1070, 1070, 1070, 1069,
     1069, 1070, 1070, 1069, 1069, 1070, 1070, 1069, 1069, 1070,
     1070, 1069, 1069, 1070, 1070, 1069, 1069, 1070, 1070, 1069,
     1069, 1070, 1070, 1069, 1069, 1070, 1070, 1069, 1070, 1069,
     1070,    0, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
     1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
     1062, 1062, 1062, 1062
    } ;

static yyconst short int yy_nxt[2022] =
    {   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,   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,   87,  114,  102,  102,  102,  102,  102,   87,
       87,   87,   87,   87,   87,   87,   87,   87,   87,  115,
       87,   87,   87,   87,  116,  117,  118,  119,  120,  209,
      246,  189,  190,  214,  247,  191,  219,  220,  376,  121,
      122,  189,  190,  210,  215,  191,  275,  123,  124,  125,
      126,  127,  128,  377,  129,  130,  222,  223,  131,  132,
      133,  134,  135,  136,  235,  137,  138,  228,  139,  231,

      229,  233,  232,  236,  244,  304,  140,   87,   87,   87,
       87,   87,  230,  305,  245,  234,  141,  269,  276,  142,
       74,   74,   20,   74,   74,   74,  143,   74,   74,   74,
       74,   74,  144,   74,  145,  192,  269,  121,  122,   74,
       74,   74,  147,   74,   74,  192,  216,  216,  248,  224,
      237,  225,  253,  238,  219,  220,  239,  250,  249,  226,
      251,  252,  254,  277,  217,  256,  217,  227,  257,  258,
       74,  270,   74,  209,  278,  259,  306,  260,  222,  223,
      261,  329,  319,  306,  262,  320,  307,  210,  892,  893,
      270,  330,  217,  333,  217,   74,   74,   74,   74,   74,

       20,   74,   74,   74,  143,   74,   74,   74,   74,   74,
      144,   74,  145,  216,  216,  121,  122,   74,   74,   74,
      147,   74,   74,  399,  399,  293,  321,  293,  293,  337,
      293,  217,  294,  217,  293,  295,  293,  297,  271,  309,
      298,  296,  271,  271,  271,  271,  271,  293,   74,  293,
       74,  298,  271,  293,  371,  293,  362,  271,  322,  217,
      372,  217,  685,  271,  271,  271,  354,  323,  299,  218,
      271,  271,  402,   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,  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,  477,   21,   21,   21,   21,   21,   21,  194,   21,
      478,   21,   21,   21,  194,  194,   21,   21,   21,   21,
      293,  294,  293,  316,  295,  317,  324,  331,  399,  325,
      271,  332,  326,  290,  894,  305,  318,  271,  271,  334,

      291,  292,  335,  336,  392,   21,   21,   21,  339,  311,
      895,  340,  310,  365,  362,  366,  362,  393,  341,  411,
      342,  412,  367,  343,  354,  896,  354,  344,  897,  399,
      195,   21,  196,   21,   21,  189,  190,   21,   21,  191,
      552,   21,   21,   21,   21,   21,   21,  194,   21,  898,
       21,   21,   21,  194,  194,   21,   21,   21,   21,  314,
      314,  362,  362,  417,  362,  387,  362,  443,  362,  444,
      388,  354,  354,  368,  354,  370,  354,  283,  354,  283,
      418,  899,  369,  400,   21,   21,   21,  362,  424,  362,
      362,  425,  399,  379,  381,  900,  382,  354,  362,  354,

      354,  426,  380,  383,  901,  283,  429,  283,  354,  195,
       21,  196,   21,   21,  189,  190,   21,   25,  191,  430,
       21,   21,   21,   21,  469,   21,  194,   21,  386,   21,
       21,   21,  194,  194,   21,   21,   21,  401,  384,  216,
      216,  490,  207,  434,  207,  385,  435,  486,  457,  466,
      457,  293,  436,  293,  473,  499,  507,  217,  508,  217,
      399,  271,  474,   21,   21,   21,  399,  498,  271,  271,
      207,  198,  207,  199,  902,  654,  457,  200,  457,  903,
      399,  655,  904,  905,  399,  217,  399,  217,  201,   21,
      202,   21,   21,  189,  190,   21,   25,  191,  399,   21,

       21,   21,   21,  554,   21,  194,   21,  857,   21,   21,
       21,  194,  194,   21,   21,   21,  362,  314,  314,  495,
      686,  293,  471,  293,  477,  399,  354,  501,  553,  280,
      280,  271,  496,  478,  670,  283,  362,  283,  460,  271,
      671,  362,   21,   21,   21,  362,  354, 1062,  786, 1062,
      198,  354,  199,  520,  362,  354,  200,  399,  522,  906,
      536,  399,  523,  283,  354,  283,  907,  201,   21,  202,
       21,  208,  208,  315,  908, 1062,  293, 1062,  461,  208,
      208,  208,  208,  208,  208,  282,  271,  293,  909,  293,
      362,  910,  687,  271,  271,  399,  787,  271,  538,  399,

      354,  911,  912,  915,  271,  271,  916,  917,  208,  208,
      208,  208,  208,  208,  272,  272,  918,  919,  920,  293,
      921,  293,  272,  272,  272,  272,  272,  272,  293,  271,
      293,  283,  467,  283,  539,  922,  271,  271,  271,  923,
      788,  924,  314,  314,  858,  271,  271,  925,  926,  927,
      928,  272,  272,  272,  272,  272,  272,  279,  279,  283,
      283,  283,  283,  482,  929,  280,  281,  280,  281,  280,
      280,  932,  282,  913,  293,  283,  293,  283,  914,  282,
      930,  610,  933,  934,  271,  931,  935,  282,  283,  936,
      283,  271,  271,  937,  280,  281,  280,  281,  280,  280,

      293,  282,  293,  283,  938,  283,  939,  282,  940,  941,
      271,  942,  943,  284,  286,  286,  604,  271,  271,  944,
      945,  946,  286,  287,  286,  288,  286,  286,  947,  289,
      948,  949,  950,  290,  951,  952,  289,  953,  954,  955,
      291,  292,  956,  957,  289,  958,  959,  960,  961,  962,
      963,  286,  293,  286,  293,  286,  286,  964,  289,  965,
      966,  967,  968,  969,  289,  970,  971,  972,  973,  974,
      289,  313,  313,  975,  976,  977,  978,  979,  980,  313,
      313,  313,  313,  313,  313,  981,  982,  983,  984,  985,
      986,  987,  988,  989,  990,  991,  992,  993,  994,  995,

      996,  997,  998,  999, 1000, 1001, 1002, 1003,  313,  313,
      313,  313,  313,  313,  351,  351, 1004, 1005, 1006, 1007,
     1008, 1009,  351,  351,  351,  351,  351,  351, 1010, 1011,
     1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021,
     1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031,
     1032,  351,  351,  351,  351,  351,  351,  355,  355, 1033,
     1034, 1035, 1036, 1037, 1038,  355,  355,  355,  355,  355,
      355, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047,
     1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057,
     1058, 1059, 1060, 1061,  355,  355,  355,  355,  355,  355,

      360,  360,  459,  891,  890,  889,  888,  887,  360,  361,
      360,  362,  360,  360,  886,  363,  885,  884,  883,  364,
      882,  881,  363,  880,  879,  878,  877,  876,  875,  874,
      363,  873,  872,  871,  870,  869,  868,  360,  362,  360,
      362,  360,  360,  867,  363,  866,  865,  864,  863,  862,
      363,  861,  860,  859,  399,  856,  363,  208,  208,  855,
      854,  853,  852,  851,  850,  208,  208,  208,  208,  208,
      208,  849,  848,  847,  846,  217,  845,  217,  844,  843,
      842,  841,  840,  839,  838,  837,  836,  835,  834,  833,
      832,  831,  830,  829,  208,  208,  208,  208,  208,  208,

      828,  827,  826,  217,  825,  217,  272,  272,  824,  823,
      822,  821,  820,  819,  272,  272,  272,  272,  272,  272,
      818,  817,  816,  815,  457,  814,  457,  813,  812,  811,
      810,  809,  808,  807,  806,  805,  804,  803,  802,  801,
      800,  799,  798,  272,  272,  272,  272,  272,  272,  797,
      796,  795,  457,  794,  457,  351,  351,  793,  792,  791,
      790,  789,  785,  351,  351,  351,  351,  351,  351,  784,
      783,  782,  779,  518,  778,  518,  777,  776,  775,  774,
      773,  772,  771,  768,  767,  766,  765,  764,  763,  762,
      761,  760,  351,  351,  351,  351,  351,  351,  759,  758,

      757,  518,  756,  518,  355,  355,  755,  754,  753,  752,
      751,  750,  355,  355,  355,  355,  355,  355,  749,  748,
      747,  746,  519,  745,  519,  744,  743,  742,  741,  740,
      739,  738,  737,  736,  735,  734,  733,  732,  731,  730,
      729,  355,  355,  355,  355,  355,  355,  728,  727,  726,
      519,  725,  519,  769,  769,  724,  769,  769,  769,  723,
      769,  769,  769,  769,  769,  722,  769,  721,  720,  719,
      718,  717,  716,  769,  769,  769,  769,  769,  715,  714,
      713,  712,  711,  710,  709,  708,  707,  706,  705,  704,
      703,  702,  701,  700,  699,  698,  697,  696,  695,  694,

      693,  692,  691,  690,  689,  688,  684,  683,  682,  681,
      680,  679,  678,  677,  676,  675,  674,  673,  672,  669,
      668,  667,  666,  665,  664,  663,  662,  661,  769,  769,
      769,  780,  780,  660,  780,  780,  780,  659,  780,  780,
      780,  780,  780,  658,  780,  657,  656,  653,  652,  651,
      650,  780,  780,  780,  780,  780,  649,  648,  647,  646,
      645,  644,  643,  642,  641,  640,  639,  638,  637,  636,
      635,  634,  633,  632,  631,  630,  629,  628,  610,  627,
      626,  625,  604,  624,  623,  622,  621,  620,  619,  618,
      617,  616,  615,  614,  613,  612,  611,  609,  608,  607,

      606,  605,  603,  602,  601,  600,  780,  780,  780,  769,
      769,  599,  769,  769,  769,  598,  769,  769,  769,  769,
      769,  597,  769,  596,  595,  594,  593,  592,  591,  769,
      769,  769,  769,  769,  590,  589,  588,  587,  586,  585,
      584,  583,  582,  581,  580,  579,  578,  577,  576,  575,
      574,  573,  572,  571,  570,  569,  568,  567,  566,  565,
      564,  563,  562,  561,  560,  559,  558,  557,  556,  555,
      398,  399,  395,  551,  550,  549,  548,  547,  546,  545,
      544,  543,  542,  541,  769,  769,  769,  780,  780,  540,
      780,  780,  780,  537,  780,  780,  780,  780,  780,  535,

      780,  534,  533,  532,  531,  530,  529,  780,  780,  780,
      780,  780,  528,  527,  526,  525,  524,  521,  353,  517,
      516,  482,  515,  514,  513,  512,  511,  510,  509,  506,
      505,  504,  503,  502,  500,  497,  494,  493,  492,  491,
      489,  488,  487,  485,  484,  460,  483,  481,  480,  479,
      476,  475,  474,  473,  472,  471,  470,  469,  468,  466,
      465,  464,  780,  780,  780,   20,   20,   20,   20,   20,
       20,   20,   20,   20,   20,  146,  146,  146,  146,  146,
      146,  146,  146,  146,  146,   21,   21,   21,   21,   21,
       21,   21,   21,   21,   21,  193,  193,  193,  193,  193,

      193,  193,  193,  193,  193,  197,  197,  197,  197,  197,
      197,  197,  197,  197,  197,  205,  205,  205,  205,  205,
      205,  205,  205,  205,  205,  207,  207,  207,  207,  207,
      207,  207,  207,  271,  463,  271,  271,  271,  271,  271,
      271,  350,  462,  282,  456,  350,  350,  350,  352,  352,
      352,  352,  352,  352,  352,  352,  352,  352,  354,  455,
      354,  454,  354,  354,  354,  354,  356,  453,  356,  356,
      356,  356,  356,  356,  356,  356,  359,  452,  359,  359,
      359,  359,  359,  359,  359,  359,  396,  451,  396,  396,
      396,  396,  396,  396,  396,  396,  397,  450,  397,  398,

      398,  449,  448,  398,  447,  398,  398,  458,  446,  458,
      458,  458,  458,  458,  458,  770,  445,  770,  770,  770,
      770,  770,  770,  770,  770,  781,  442,  781,  781,  781,
      781,  781,  781,  781,  781,  769,  441,  769,  769,  769,
      769,  769,  769,  769,  769,  780,  440,  780,  780,  780,
      780,  780,  780,  780,  780,  439,  438,  437,  433,  432,
      431,  428,  427,  423,  422,  421,  420,  419,  416,  415,
      414,  413,  410,  409,  408,  407,  406,  405,  404,  403,
      206,  203,  399,  395,  394,  391,  390,  389,  378,  375,
      374,  373,  285,  282,  358,  275,  274,  357,  353,  349,

      348,  347,  346,  345,  338,  328,  327,  312,  310,  309,
      308,  303,  302,  301,  300,  285,  282,  274,  273,  206,
      204,  203,  268,  267,  266,  265,  264,  263,  255,  243,
      242,  241,  240,  221,  213,  212,  211,  206,  204,  203,
     1062,   19, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
     1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
     1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
     1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
     1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
     1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,

     1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
     1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
     1062
    } ;

static yyconst short int yy_chk[2022] =
    {   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,    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,   86,    7,    7,    7,
        7,    7,    7,  173,    7,    7,   43,   43,    7,    7,
        7,    7,    7,    7,   49,    7,    7,   46,    7,   47,

       46,   48,   47,   49,   55,  107,    7,    7,    7,    7,
        7,    7,   46,  107,   55,   48,    7,   71,   86,    7,
        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
        9,    9,    9,    9,    9,   13,  117,    9,    9,    9,
        9,    9,    9,    9,    9,   14,   38,   38,   57,   45,
       50,   45,   59,   50,   93,   93,   50,   58,   57,   45,
       58,   58,   59,   88,   38,   61,   38,   45,   61,   61,
        9,   71,    9,   80,   88,   61,  108,   61,   95,   95,
       61,  131,  125,  133,   61,  125,  108,   80,  832,  835,
      117,  131,   38,  133,   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,  552,  200,   98,  126,   98,   99,  135,
       99,   37,   98,   37,  100,   98,  100,  100,   99,  135,
      126,   99,   98,   98,  100,   99,   99,  101,   10,  101,
       10,  100,  100,  102,  169,  102,  166,  101,  127,   37,
      169,   37,  552,  102,  101,  101,  166,  127,  101,   37,
      102,  102,  200,   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,   15,   15,   15,   15,   15,
       15,  307,   15,   15,   15,   15,   15,   15,   15,   15,
      307,   15,   15,   15,   15,   15,   15,   15,   15,   15,
      114,  124,  114,  123,  124,  123,  128,  132,  400,  128,
      114,  132,  128,  123,  837,  132,  124,  114,  114,  134,

      123,  123,  134,  134,  186,   15,   15,   15,  137,  114,
      838,  137,  137,  164,  164,  165,  165,  186,  137,  231,
      137,  231,  165,  137,  164,  839,  165,  137,  840,  198,
       15,   15,   15,   15,   16,   16,   16,   16,   16,   16,
      400,   16,   16,   16,   16,   16,   16,   16,   16,  841,
       16,   16,   16,   16,   16,   16,   16,   16,   16,  122,
      122,  167,  168,  236,  177,  182,  178,  256,  179,  256,
      182,  167,  168,  167,  177,  168,  178,  122,  179,  122,
      236,  844,  167,  198,   16,   16,   16,  181,  242,  360,
      362,  242,  199,  177,  178,  845,  179,  181,  180,  360,

      362,  242,  177,  179,  846,  122,  245,  122,  180,   16,
       16,   16,   16,   17,   17,   17,   17,   17,   17,  245,
       17,   17,   17,   17,  323,   17,   17,   17,  181,   17,
       17,   17,   17,   17,   17,   17,   17,  199,  180,  216,
      216,  323,  218,  249,  218,  180,  249,  319,  313,  319,
      313,  286,  249,  286,  330,  331,  339,  216,  339,  216,
      786,  286,  331,   17,   17,   17,  402,  330,  286,  286,
      218,   17,  218,   17,  850,  521,  313,   17,  313,  851,
      401,  521,  852,  856,  553,  216,  857,  216,   17,   17,
       17,   17,   18,   18,   18,   18,   18,   18,  685,   18,

       18,   18,   18,  402,   18,   18,   18,  786,   18,   18,
       18,   18,   18,   18,   18,   18,  379,  121,  121,  328,
      553,  287,  328,  287,  333,  858,  379,  333,  401,  280,
      280,  287,  328,  333,  537,  121,  361,  121,  287,  287,
      537,  365,   18,   18,   18,  366,  361,  280,  685,  280,
       18,  365,   18,  361,  381,  366,   18,  554,  365,  859,
      379,  686,  366,  121,  381,  121,  860,   18,   18,   18,
       18,   26,   26,  121,  861,  280,  288,  280,  288,   26,
       26,   26,   26,   26,   26,  280,  288,  293,  863,  293,
      382,  864,  554,  288,  288,  687,  686,  293,  381,  787,

      382,  866,  867,  872,  293,  293,  873,  874,   26,   26,
       26,   26,   26,   26,   78,   78,  877,  878,  879,  311,
      881,  311,   78,   78,   78,   78,   78,   78,  297,  311,
      297,  459,  297,  459,  382,  882,  311,  311,  297,  883,
      687,  886,  314,  314,  787,  297,  297,  887,  888,  889,
      890,   78,   78,   78,   78,   78,   78,   89,   89,  459,
      314,  459,  314,  311,  891,   89,   89,   89,   89,   89,
       89,  896,   89,  869,  467,   89,  467,   89,  869,   89,
      894,  467,  897,  900,  467,  894,  901,   89,  314,  902,
      314,  467,  467,  903,   89,   89,   89,   89,   89,   89,

      461,   89,  461,   89,  904,   89,  905,   89,  907,  908,
      461,  909,  910,   89,   97,   97,  461,  461,  461,  912,
      913,  914,   97,   97,   97,   97,   97,   97,  915,   97,
      917,  919,  921,   97,  923,  924,   97,  926,  927,  928,
       97,   97,  929,  930,   97,  931,  932,  940,  941,  942,
      943,   97,   97,   97,   97,   97,   97,  944,   97,  945,
      946,  947,  948,  949,   97,  950,  951,  952,  953,  954,
       97,  120,  120,  955,  956,  957,  958,  959,  960,  120,
      120,  120,  120,  120,  120,  961,  962,  963,  964,  965,
      966,  968,  969,  970,  971,  972,  973,  974,  975,  976,

      977,  978,  980,  981,  982,  983,  986,  987,  120,  120,
      120,  120,  120,  120,  143,  143,  988,  989,  991,  992,
      993,  994,  143,  143,  143,  143,  143,  143,  995,  997,
      999, 1001, 1002, 1003, 1004, 1006, 1007, 1009, 1010, 1011,
     1012, 1013, 1015, 1016, 1017, 1018, 1019, 1020, 1022, 1023,
     1028,  143,  143,  143,  143,  143,  143,  150,  150, 1029,
     1030, 1031, 1032, 1033, 1034,  150,  150,  150,  150,  150,
      150, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,
     1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053,
     1055, 1057, 1058, 1059,  150,  150,  150,  150,  150,  150,

      163,  163, 1080,  831,  829,  828,  827,  826,  163,  163,
      163,  163,  163,  163,  825,  163,  824,  823,  821,  163,
      820,  819,  163,  818,  816,  815,  814,  813,  810,  809,
      163,  808,  807,  806,  805,  804,  801,  163,  163,  163,
      163,  163,  163,  800,  163,  798,  796,  795,  793,  792,
      163,  791,  790,  789,  788,  785,  163,  208,  208,  783,
      779,  778,  777,  775,  774,  208,  208,  208,  208,  208,
      208,  772,  768,  767,  766,  208,  764,  208,  763,  762,
      761,  760,  757,  756,  754,  753,  752,  751,  750,  749,
      747,  746,  744,  742,  208,  208,  208,  208,  208,  208,

      741,  740,  739,  208,  738,  208,  272,  272,  737,  736,
      735,  734,  733,  731,  272,  272,  272,  272,  272,  272,
      729,  727,  725,  724,  272,  723,  272,  722,  721,  720,
      719,  717,  715,  714,  713,  711,  710,  709,  708,  707,
      706,  705,  704,  272,  272,  272,  272,  272,  272,  703,
      701,  699,  272,  697,  272,  351,  351,  696,  693,  692,
      691,  688,  684,  351,  351,  351,  351,  351,  351,  683,
      681,  680,  676,  351,  675,  351,  671,  670,  669,  668,
      667,  665,  664,  660,  659,  655,  654,  653,  652,  651,
      650,  649,  351,  351,  351,  351,  351,  351,  648,  646,

      645,  351,  644,  351,  355,  355,  642,  641,  640,  639,
      638,  637,  355,  355,  355,  355,  355,  355,  635,  634,
      633,  632,  355,  631,  355,  629,  628,  627,  626,  624,
      623,  622,  621,  620,  619,  618,  616,  613,  612,  611,
      610,  355,  355,  355,  355,  355,  355,  608,  606,  605,
      355,  603,  355,  661,  661,  602,  661,  661,  661,  601,
      661,  661,  661,  661,  661,  600,  661,  599,  598,  597,
      596,  594,  593,  661,  661,  661,  661,  661,  592,  591,
      589,  588,  587,  586,  585,  584,  583,  582,  580,  578,
      577,  575,  573,  572,  571,  570,  568,  567,  566,  565,

      564,  563,  561,  559,  557,  555,  551,  550,  549,  548,
      547,  546,  545,  544,  543,  542,  540,  539,  538,  536,
      535,  534,  533,  532,  531,  530,  529,  528,  661,  661,
      661,  677,  677,  527,  677,  677,  677,  526,  677,  677,
      677,  677,  677,  524,  677,  523,  522,  520,  515,  514,
      513,  677,  677,  677,  677,  677,  512,  511,  510,  509,
      508,  507,  506,  505,  504,  503,  502,  501,  500,  498,
      497,  496,  495,  493,  492,  491,  490,  489,  488,  487,
      486,  485,  484,  483,  482,  481,  480,  479,  478,  477,
      476,  473,  472,  471,  470,  469,  468,  466,  465,  464,

      463,  462,  460,  456,  453,  452,  677,  677,  677,  770,
      770,  451,  770,  770,  770,  450,  770,  770,  770,  770,
      770,  449,  770,  448,  447,  446,  445,  444,  443,  770,
      770,  770,  770,  770,  442,  441,  440,  439,  438,  437,
      436,  435,  434,  433,  432,  430,  429,  428,  427,  426,
      425,  424,  422,  421,  420,  419,  418,  417,  416,  415,
      414,  413,  412,  411,  410,  409,  408,  407,  406,  405,
      399,  398,  395,  394,  393,  392,  391,  390,  389,  388,
      387,  386,  385,  384,  770,  770,  770,  781,  781,  383,
      781,  781,  781,  380,  781,  781,  781,  781,  781,  378,

      781,  377,  376,  375,  374,  373,  372,  781,  781,  781,
      781,  781,  371,  370,  369,  368,  367,  364,  352,  349,
      348,  347,  346,  345,  344,  343,  342,  341,  340,  338,
      337,  336,  335,  334,  332,  329,  327,  326,  325,  324,
      322,  321,  320,  318,  317,  316,  312,  310,  309,  308,
      306,  305,  304,  303,  302,  301,  300,  299,  298,  296,
      295,  294,  781,  781,  781, 1063, 1063, 1063, 1063, 1063,
     1063, 1063, 1063, 1063, 1063, 1064, 1064, 1064, 1064, 1064,
     1064, 1064, 1064, 1064, 1064, 1065, 1065, 1065, 1065, 1065,
     1065, 1065, 1065, 1065, 1065, 1066, 1066, 1066, 1066, 1066,

     1066, 1066, 1066, 1066, 1066, 1067, 1067, 1067, 1067, 1067,
     1067, 1067, 1067, 1067, 1067, 1068, 1068, 1068, 1068, 1068,
     1068, 1068, 1068, 1068, 1068, 1069, 1069, 1069, 1069, 1069,
     1069, 1069, 1069, 1070,  291, 1070, 1070, 1070, 1070, 1070,
     1070, 1071,  290,  279,  268, 1071, 1071, 1071, 1072, 1072,
     1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1073,  267,
     1073,  266, 1073, 1073, 1073, 1073, 1074,  265, 1074, 1074,
     1074, 1074, 1074, 1074, 1074, 1074, 1075,  264, 1075, 1075,
     1075, 1075, 1075, 1075, 1075, 1075, 1076,  263, 1076, 1076,
     1076, 1076, 1076, 1076, 1076, 1076, 1077,  262, 1077, 1078,

     1078,  261,  260, 1078,  259, 1078, 1078, 1079,  258, 1079,
     1079, 1079, 1079, 1079, 1079, 1081,  257, 1081, 1081, 1081,
     1081, 1081, 1081, 1081, 1081, 1082,  255, 1082, 1082, 1082,
     1082, 1082, 1082, 1082, 1082, 1083,  254, 1083, 1083, 1083,
     1083, 1083, 1083, 1083, 1083, 1084,  253, 1084, 1084, 1084,
     1084, 1084, 1084, 1084, 1084,  252,  251,  250,  248,  247,
      246,  244,  243,  241,  240,  239,  238,  237,  235,  234,
      233,  232,  230,  229,  228,  226,  225,  224,  223,  219,
      205,  203,  197,  189,  187,  185,  184,  183,  174,  172,
      171,  170,  161,  158,  156,  154,  152,  151,  149,  142,

      141,  140,  139,  138,  136,  130,  129,  115,  111,  110,
      109,  106,  105,  104,  103,   94,   90,   84,   83,   77,
       76,   75,   69,   68,   67,   66,   63,   62,   60,   54,
       53,   52,   51,   42,   34,   32,   31,   25,   24,   22,
       19, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
     1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
     1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
     1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
     1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
     1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,

     1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
     1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
     1062
    } ;

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
   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>
#include <ctype.h>

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

#include "bfd.h"
#include "sysdep.h"
#include "ld.h"
#include "ldgram.h"
#include "ldmisc.h"
#include "ldexp.h"
#include "ldlang.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 1284 "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 129 "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 1453 "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 >= 1063 )
					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] != 1942 );

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 146 "ldlex.l"
{ comment(); }
	YY_BREAK
case 2:
YY_RULE_SETUP
#line 149 "ldlex.l"
{ RTOKEN('-');}
	YY_BREAK
case 3:
YY_RULE_SETUP
#line 150 "ldlex.l"
{ RTOKEN('+');}
	YY_BREAK
case 4:
YY_RULE_SETUP
#line 151 "ldlex.l"
{ yylval.name = xstrdup(yytext); return NAME; }
	YY_BREAK
case 5:
YY_RULE_SETUP
#line 152 "ldlex.l"
{ RTOKEN('='); }
	YY_BREAK
case 6:
YY_RULE_SETUP
#line 154 "ldlex.l"
{
  				yylval.integer = bfd_scan_vma (yytext+1, 0,16);
				return INT;
			}
	YY_BREAK
case 7:
YY_RULE_SETUP
#line 159 "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);
				   return INT;
				 }
	YY_BREAK
case 8:
YY_RULE_SETUP
#line 183 "ldlex.l"
{
				  char *s = yytext;

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

  }
  BEGIN(SCRIPT);
  ldfile_input_filename = file_name_stack[include_stack_ptr - 1];
  lineno = lineno_stack[include_stack_ptr - 1];

  return END;
}
	YY_BREAK
case 167:
YY_RULE_SETUP
#line 429 "ldlex.l"
lex_warn_invalid(" in script", yytext);
	YY_BREAK
case 168:
YY_RULE_SETUP
#line 430 "ldlex.l"
lex_warn_invalid(" in expression", yytext);
	YY_BREAK
case 169:
YY_RULE_SETUP
#line 432 "ldlex.l"
ECHO;
	YY_BREAK
#line 2488 "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 >= 1063 )
				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 >= 1063 )
			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 == 1062);

	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 432 "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] = 1;
  include_stack[include_stack_ptr] = YY_CURRENT_BUFFER;

  include_stack_ptr++;
  yyin = file;
  yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE));
  BEGIN (SCRIPT);
}

/* 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] = 0;
  include_stack[include_stack_ptr] = YY_CURRENT_BUFFER;
  include_stack_ptr++;
  tmp = yy_create_string_buffer (string, strlen (string));
  yy_switch_to_buffer (tmp);
  BEGIN (SCRIPT);
}

/* 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 = read (fileno (yyin), (char *) buf, max_size);
	  if (*result < 0) 
	    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 ((unsigned char) *what))
    {
      sprintf (buf, "\\%03o", (unsigned int) *what);
      what = buf;
    }

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