#line 2 "scan.c"
/* A lexical scanner generated by flex */

/* Scanner skeleton version:
 * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
 */

#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 165
#define YY_END_OF_BUFFER 166
static yyconst short int yy_accept[769] =
    {   0,
        0,    0,    0,    0,   87,   87,  163,  163,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,  166,  164,
        7,   18,  164,   16,    1,   17,  164,  164,  164,  164,
       15,  108,  100,  101,  108,   93,  108,  107,  108,  108,
      108,  107,   99,   89,  108,  108,   91,   92,   87,   88,
       87,   86,   85,   86,   86,  163,  163,   28,   29,   28,
       28,   28,   28,   28,   28,   31,   30,   32,   31,  113,
      109,  110,  112,  114,  141,  142,  141,  139,  138,  140,

      115,  117,  115,  116,  115,  120,  120,  120,  120,  122,
      124,  122,  122,  122,  122,  123,  151,  155,  151,  154,
      156,  156,  152,  152,  152,  149,  150,  164,   82,  164,
       21,   22,   21,   20,  157,  159,  157,  160,  161,  147,
      147,  148,  147,  147,  147,  147,  147,  147,  147,   81,
       34,   33,   81,   81,   81,   81,   35,   81,   81,   81,
       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
       81,   81,   81,   81,   81,   81,   26,   23,   26,   24,
        7,   18,    0,   16,    1,   17,    0,    0,    0,   14,
        8,    0,    0,    0,    0,    4,    5,    0,    2,   15,

      100,  101,    0,    0,    0,   95,    0,    0,  105,  105,
        0,  162,  162,  162,   94,    0,   99,   89,    0,    0,
        0,   91,   92,  104,   90,    0,   87,   88,   86,   85,
       85,   83,   84,  163,  163,   28,   29,   28,   28,   28,
       28,   31,   30,   32,  111,  112,  142,  138,  117,    0,
      118,  119,  124,  121,  151,  155,    0,  153,    0,  144,
      152,  152,  152,    0,   82,    0,   21,   22,   21,   19,
      157,  159,  158,  147,  147,  147,  148,  143,  147,  147,
      147,   34,   33,    0,   80,    0,    0,   81,   81,   81,
       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,

       81,   81,   81,   36,   81,   81,   81,   81,   81,   81,
       81,   81,   81,   81,    0,   25,   24,    0,   14,    8,
        0,   12,    0,    0,    0,    0,    0,    4,    5,    0,
        6,    0,   96,    0,   97,    0,    0,  105,  105,    0,
      105,  105,  105,  162,  162,    0,  106,   90,   98,    0,
      104,    0,   83,   84,   28,   28,   28,   27,   28,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,  152,  152,  143,  143,  147,  147,    0,    0,   81,
       81,   81,   81,   81,   44,   81,   81,   81,   49,   81,
       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,

       81,   81,   81,   81,   81,   81,   81,   81,    0,   81,
       81,   81,   81,    0,    0,    0,   12,    0,    0,    0,
        0,    0,    0,    4,    5,    0,  105,  105,  105,  105,
      105,  105,  162,    0,    0,   28,   28,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      152,  152,  147,  147,   37,   38,   81,   81,   81,   81,
       81,   81,   81,   81,   50,   51,   81,   81,   81,   55,
       81,   81,   81,   81,   81,   81,   60,   81,   81,   81,
       81,   81,   81,   67,    0,    0,    0,   81,   81,   81,
       81,    0,   13,    0,    0,    0,    0,    0,    0,  105,

      105,  105,  105,  105,  105,    0,    0,   28,   28,  137,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,  152,  152,  147,  147,   39,   81,   41,   81,
       43,   81,   81,   81,   47,   81,   52,   81,   81,   81,
       81,   81,   81,   81,   81,   81,   62,   81,   81,   65,
       81,    0,    0,    0,    0,   81,   81,   81,   81,    3,
        0,    0,    0,    0,  105,  105,  105,    0,    0,   28,
       28,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,  145,  146,  145,  146,   81,   42,   81,
       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,

       81,   78,   61,   81,   64,   81,    0,    0,    0,    0,
       81,   81,   69,   70,    0,   10,    0,   11,    0,  103,
        0,  102,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,   81,   81,   81,   45,   81,   48,
       81,   81,   81,   81,   77,   81,   59,   63,   66,    0,
        0,    0,    0,   79,   81,    0,  102,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,   81,
       81,   81,   46,   81,   81,   56,   81,   81,    0,    0,
        0,    0,   68,    0,    9,    0,  125,  126,  127,  128,
      129,  130,  131,  132,  133,  134,  135,    0,   81,   81,

       81,   81,   81,   81,   81,    0,    0,    0,    0,    0,
      136,   81,   81,   81,   81,   54,   81,   81,    0,    0,
        0,    0,    0,    0,   81,   81,   81,   53,   81,   58,
        0,    0,    0,    0,    0,    0,   81,   81,   81,   81,
       72,    0,    0,    0,    0,   73,   81,   81,   81,   81,
       71,    0,   75,    0,   81,   81,   81,   74,   76,   81,
       81,   81,   81,   81,   81,   57,   40,    0
    } ;

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

       35,   36,   37,   38,   39,   40,   41,   42,   43,   44,
       45,   46,   47,   48,   49,   50,   51,   52,   53,   54,
       55,   47,   56,   57,   58,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,

        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    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[59] =
    {   0,
        1,    1,    2,    1,    3,    1,    1,    1,    4,    1,
        5,    6,    1,    7,    4,    8,    8,    8,    8,    1,
        1,    1,    1,    9,   10,    1,   11,   12,    1,   13,
       14,   14,   14,   14,   14,   14,   15,   15,   15,   15,
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
       15,   15,   15,   15,   15,    4,    1,   16
    } ;

static yyconst short int yy_base[858] =
    {   0,
        0,   58,  115,  172,  120,  129, 2712, 2711,  230, 2705,
      136,  141,  288,    0, 2683, 2682,  144,  151,  185,  191,
      178,  188,  344,  347,  375,    0,  125,  131,  147,  216,
      431,  434,  461,    0,  519,    0,  205,  349, 2710, 2716,
      353, 2716, 2706,    0,  360, 2716, 2705,  144,  570, 2696,
        0, 2716,  577, 2716, 2703, 2716,  438, 2716, 2684,  126,
      149,  427,  591, 2716, 2701,  141, 2682, 2716,    0, 2716,
     2699,    0, 2699, 2697,  155, 2696, 2716,    0, 2716, 2695,
     2716,    0, 2662, 2641, 2637,    0, 2692, 2716, 2690, 2716,
     2716, 2663,    0, 2716, 2716, 2716, 2688, 2716,  431, 2716,

     2716, 2716, 2687, 2716,  567, 2716, 2669,  571,  164, 2716,
     2716, 2685,    0, 2667,  573, 2716,    0, 2716, 2683, 2716,
      573, 2674,    0, 2649, 2628, 2716, 2716,  222, 2716,  356,
      448, 2716,  450, 2667,    0, 2716, 2678, 2716,    0,    0,
      198, 2716, 2677, 2621, 2716, 2667,    0, 2642, 2621, 2716,
     2673, 2716, 2671, 2668, 2640, 2639, 2716,  544, 2639,  579,
     2634, 2635,  318,    0, 2623, 2631,  424,  562, 2614,  587,
     2629, 2613, 2618, 2626, 2629, 2604, 2716, 2716, 2653,  612,
      634, 2716, 2654,    0,  637, 2716, 2653,  600, 2616,    0,
        0,  641,  647,  651,  669,    0,    0,  453, 2716,    0,

      672, 2716, 2651, 2597,  605, 2716, 2649, 2616,  620,  657,
      645, 2716,  662,    0, 2716, 2592,  688, 2716, 2646, 2592,
     2636, 2625, 2716,    0, 2716, 2610,    0, 2716,    0,    0,
     2642,    0,    0, 2640, 2716,    0, 2716,    0, 2602, 2598,
      745,    0, 2638, 2716, 2716,    0, 2716,  688, 2716,  773,
     2716, 2716, 2716, 2716,    0, 2716,  673, 2716,    0, 2716,
        0, 2599, 2595,  690, 2716,  698,  707, 2716,  709, 2716,
        0, 2716, 2716,    0,  596, 2579, 2716,  827,    0, 2596,
     2592, 2632, 2716, 2628, 2716, 2593, 2592,    0,  642, 2582,
      563, 2617, 2579,  620, 2578, 2577, 2583,  669, 2570, 2584,

     2572,    0, 2569, 2716, 2570, 2571, 2579, 2582,  685,  125,
     2570, 2567, 2566,  688, 2608, 2716,  716, 2568,    0,    0,
      720, 2716, 2608,  884, 2562, 2559, 2569,    0,    0,  723,
     2716,  739, 2716,  805, 2716,  808, 2562,  787,  869,  876,
      930,  881,  973,  800,    0, 2548, 2716, 2716, 2716, 2570,
        0, 2559,    0,    0, 2568, 2557,    0, 2716,    0, 1009,
     2581,  678,  870,  871,  874,  879,  913,  992,  974, 1013,
      885, 2565, 2554,    0, 1067, 2563, 2552, 2546, 2545, 2557,
     2562, 2561, 2550, 2557,    0, 2554, 2537, 2556,    0, 2536,
     2543, 2533, 2548, 2568, 2537, 2549, 2544, 2542, 2541, 2532,

     2539, 2540, 2538, 2539,  578, 2520, 2538, 2525,  860, 2526,
     2528, 2521, 2517, 2529,  817, 1044, 2716,  822, 1095,  914,
     2532, 2523, 2517,    0,    0, 2524, 1102, 1025, 1142, 2539,
     1028, 1163, 2716, 2513, 2521, 2523, 2507,    0, 2526, 1058,
      891, 1014, 1019,  894, 1038, 1080, 1072, 1086, 1083, 1081,
     2520, 2504, 2518, 2502, 2716, 2716, 2505, 2493, 2492, 2495,
     2507, 1148, 2507, 2492,    0,    0, 2492, 2493, 2507,    0,
     2525, 2490, 2498, 2522, 2485, 2495,    0, 2500, 2491, 2487,
     2479, 2479, 2483,    0,  875, 2494, 2481, 2494, 2480, 2475,
     2491, 2519, 2716,  920,  999, 2465, 2474, 2468, 2494, 2496,

     1105, 1184, 1081,  902,  969, 2479, 2491, 2463, 2477, 2716,
      165, 1090, 1144, 1143, 1147, 1163, 1095, 1145, 1037, 1085,
     1150, 1173, 2461, 2475, 2459, 2473,    0, 2458,    0, 2460,
        0, 1165, 2454, 2469,    0, 2461,    0, 2471, 2410, 2414,
     2434, 2400, 2393, 2405, 2385, 2382,    0, 2383, 2335,    0,
     2335, 2330, 2326, 2309, 2278, 2259, 2269, 2268, 2256, 2297,
     1046, 2238, 2242, 2253, 1179, 1142, 1145, 2247, 2246,    0,
        0, 1191, 1192, 1172, 1201, 1202, 1204, 1205, 1206, 1207,
     1209, 1210, 1208,    0,    0,    0,    0, 2254,    0, 2221,
     2229, 2218, 2208, 2200, 2209, 2198, 2195, 2165, 2168, 2149,

     2132,    0,    0, 2129,    0, 2139, 2143, 2134, 2124, 2137,
     2117, 2116,    0,    0, 1228, 2716, 1232, 2716, 2111, 2716,
     2117, 2716, 2115, 2114, 2108, 2107, 2106, 2103, 2102, 2098,
     2095, 2063, 2047, 1213, 2012, 1986, 1975,    0, 1954,    0,
     1947, 1950, 1941, 1945,    0, 1942,    0,    0,    0, 1938,
     1940, 1934, 1905,    0, 1872, 1234, 2716, 1888, 1882, 1881,
     1864, 1848, 1832, 1828, 1827, 1826, 1823, 1806, 1809, 1784,
     1787, 1772,    0, 1781, 1786,    0, 1766, 1767, 1759, 1744,
     1213, 1736,    0, 1236, 2716, 1245, 2716, 2716, 2716, 2716,
     2716, 2716, 2716, 2716, 2716, 2716, 2716, 1750, 1727, 1720,

     1701, 1687, 1670, 1681, 1667, 1679, 1659,  689, 1658, 1671,
     2716, 1657, 1627, 1621, 1635,    0, 1603, 1596, 1595, 1608,
     1602, 1587, 1586, 1583, 1581, 1587, 1555,    0, 1547,    0,
     1527, 1507, 1520, 1503, 1483, 1482, 1485, 1443, 1440, 1228,
     2716, 1225, 1224, 1206, 1210, 2716, 1213, 1202, 1018,  948,
     2716,  945, 2716,  884,  780,  771,  779, 2716, 2716,  689,
      673,  581,  408,  318,   86,    0,    0, 2716, 1263, 1279,
     1295, 1311, 1327, 1343, 1359, 1375, 1391, 1407, 1423, 1439,
     1455, 1471, 1481, 1496, 1505, 1520, 1536, 1545, 1560, 1576,
     1592, 1608, 1624, 1634, 1649, 1659, 1674, 1690, 1706, 1718,

     1728, 1743, 1759, 1775, 1791, 1807, 1817, 1832, 1843, 1236,
     1858, 1874, 1890, 1898, 1905, 1920, 1936, 1952, 1968, 1977,
     1985, 2001, 2017, 2033, 2049, 2065, 2081, 2097, 2113, 2123,
     2138, 2148, 2155, 2170, 2182, 2192, 2207, 2223, 2239, 2255,
     2265, 2280, 2291, 2306, 2322, 2338, 2354, 2364, 2373, 2388,
     2404, 2420, 2429, 2437, 2453, 2469, 2485
    } ;

static yyconst short int yy_def[858] =
    {   0,
      768,  768,  769,  769,  770,  771,  772,  772,  768,    9,
      773,  773,  768,   13,  774,  774,  775,  775,  776,  776,
      777,  777,  778,  778,  768,   25,  779,  779,  780,  780,
      781,  781,  768,   33,  768,   35,  782,  782,  768,  768,
      768,  768,  768,  783,  768,  768,  768,  768,  784,  768,
      785,  768,  768,  768,  768,  768,  768,  768,  768,  786,
      787,  788,  768,  768,  768,  768,  768,  768,  789,  768,
      789,  790,  791,  790,  790,  792,  768,  793,  768,  793,
      768,  794,  794,  794,  793,  795,  768,  768,  795,  768,
      768,  768,  796,  768,  768,  768,  768,  768,  768,  768,

      768,  768,  768,  768,  787,  768,  768,  787,  797,  768,
      768,  768,  798,  768,  787,  768,  799,  768,  799,  768,
      800,  768,  801,  801,  801,  768,  768,  802,  768,  802,
      803,  768,  803,  768,  804,  768,  804,  768,  805,  806,
      806,  768,  806,  806,  768,  806,  807,  807,  807,  768,
      768,  768,  768,  808,  768,  768,  768,  809,  809,  809,
      809,  809,  809,  809,  809,  809,  809,  810,  809,  809,
      809,  809,  809,  809,  809,  809,  768,  768,  811,  768,
      768,  768,  768,  783,  768,  768,  768,  768,  768,  812,
      813,  768,  768,  768,  768,  814,  815,  816,  768,  785,

      768,  768,  768,  768,  817,  768,  768,  768,  818,  818,
      819,  768,  768,  820,  768,  821,  768,  768,  768,  768,
      768,  768,  768,  822,  768,  768,  823,  768,  824,  825,
      825,  826,  827,  828,  768,  829,  768,  830,  830,  830,
      768,  831,  768,  768,  768,  832,  768,  768,  768,  833,
      768,  768,  768,  768,  834,  768,  835,  768,  835,  768,
      836,  836,  836,  837,  768,  837,  838,  768,  838,  768,
      839,  768,  768,  840,  840,  840,  768,  768,  841,  841,
      841,  768,  768,  842,  768,  768,  768,  843,  843,  843,
      843,  843,  843,  843,  843,  843,  843,  843,  843,  843,

      843,  843,  843,  768,  843,  843,  843,  843,  843,  843,
      843,  843,  843,  843,  844,  768,  768,  768,  845,  846,
      847,  768,  768,  768,  768,  768,  768,  848,  849,  850,
      768,  850,  768,  851,  768,  851,  768,  852,  852,  852,
      768,  852,  852,  768,  853,  854,  768,  768,  768,  768,
      855,  768,  826,  827,  830,  830,  241,  768,  241,  241,
      833,  833,  833,  833,  833,  833,  833,  833,  833,  833,
      833,  836,  836,  278,  278,  841,  841,  768,  768,  843,
      843,  843,  843,  843,  843,  843,  843,  843,  843,  843,
      843,  843,  843,  843,  843,  843,  843,  843,  843,  843,

      843,  843,  843,  843,  843,  843,  843,  843,  768,  843,
      843,  843,  843,  768,  847,  847,  768,  847,  847,  768,
      768,  768,  768,  848,  849,  768,  341,  852,  343,  341,
      852,  343,  768,  768,  768,  830,  830,  360,  768,  833,
      833,  833,  833,  833,  833,  833,  833,  833,  833,  833,
      836,  836,  841,  841,  768,  768,  843,  843,  843,  843,
      843,  843,  843,  843,  843,  843,  843,  843,  843,  843,
      843,  843,  843,  843,  843,  843,  843,  843,  843,  843,
      843,  843,  843,  843,  768,  768,  768,  843,  843,  843,
      843,  768,  768,  847,  847,  768,  768,  768,  768,  427,

      852,  343,  852,  852,  852,  768,  768,  830,  830,  768,
      833,  833,  833,  833,  833,  833,  833,  833,  833,  833,
      833,  833,  836,  836,  841,  841,  843,  843,  843,  843,
      843,  843,  843,  843,  843,  843,  843,  843,  843,  843,
      843,  843,  843,  843,  843,  843,  843,  843,  843,  843,
      843,  768,  768,  768,  768,  843,  843,  843,  843,  768,
      856,  768,  768,  768,  852,  852,  852,  768,  768,  830,
      830,  833,  833,  833,  833,  833,  833,  833,  833,  833,
      833,  833,  833,  836,  836,  841,  841,  843,  843,  843,
      843,  843,  843,  843,  843,  843,  843,  843,  843,  843,

      843,  843,  843,  843,  843,  843,  768,  768,  768,  768,
      843,  843,  843,  843,  856,  768,  856,  768,  768,  768,
      768,  768,  833,  833,  833,  833,  833,  833,  833,  833,
      833,  833,  833,  833,  843,  843,  843,  843,  843,  843,
      843,  843,  843,  843,  843,  843,  843,  843,  843,  768,
      768,  768,  768,  843,  843,  857,  768,  768,  768,  768,
      768,  768,  768,  768,  768,  768,  768,  768,  833,  843,
      843,  843,  843,  843,  843,  843,  843,  843,  768,  768,
      768,  768,  843,  857,  768,  857,  768,  768,  768,  768,
      768,  768,  768,  768,  768,  768,  768,  768,  843,  843,

      843,  843,  843,  843,  843,  768,  768,  768,  768,  768,
      768,  843,  843,  843,  843,  843,  843,  843,  768,  768,
      768,  768,  768,  768,  843,  843,  843,  843,  843,  843,
      768,  768,  768,  768,  768,  768,  843,  843,  843,  843,
      768,  768,  768,  768,  768,  768,  843,  843,  843,  843,
      768,  768,  768,  768,  843,  843,  843,  768,  768,  843,
      843,  843,  843,  843,  843,  843,  843,    0,  768,  768,
      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,

      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
      768,  768,  768,  768,  768,  768,  768
    } ;

static yyconst short int yy_nxt[2775] =
    {   0,
       40,   41,   42,   43,   40,   40,   40,   40,   40,   40,
       40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
       40,   40,   40,   44,   44,   40,   40,   40,   40,   44,
       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
       44,   44,   44,   44,   44,   40,   40,   40,   40,   45,
       46,   47,   40,   48,   40,   49,   40,   40,   40,   40,
       40,   40,   50,   40,   40,   40,   40,   40,   40,   40,
       40,   51,   51,   40,   40,   40,   40,   51,   51,   51,
       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,

       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
       51,   51,   51,   40,   40,   40,   53,   54,   55,   56,
      767,   57,   70,   71,   58,   58,   58,  129,  130,   58,
       73,   70,   74,  129,  130,   59,   75,   87,   88,   89,
       60,   61,   87,   88,   89,  188,   96,   97,  224,  132,
      133,  210,  211,   96,   97,  404,   98,  134,  405,   99,
       99,   99,   99,   98,  213,  213,   99,   99,   99,   99,
       62,   58,   58,   63,   64,   65,   56,  252,   57,   66,
       40,   58,   58,   58,  439,  189,   58,  102,  103,  104,
       40,  252,   67,  102,  103,  104,  225,   60,   61,  275,

       68,  100,  214,  107,  108,  276,  109,  178,  100,  179,
      232,  105,  233,  107,  108,  572,  109,  105,  132,  133,
      180,  180,  180,  180,  265,  266,  134,   62,   58,   58,
       78,   78,   79,   80,   78,   78,   78,   78,   78,   78,
       81,   78,   78,   78,   78,   78,   78,   78,   78,   78,
       78,   78,   78,   82,   82,   78,   78,   78,   78,   82,
       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
       82,   82,   82,   82,   82,   82,   82,   83,   82,   82,
       82,   82,   82,   82,   84,   78,   78,   78,   90,   90,
       40,   90,   90,   90,   90,   90,   90,   90,   91,   90,

       91,   90,   90,   90,   90,   90,   90,   90,   90,   90,
       92,   93,   93,   90,   90,   90,   90,   93,   93,   93,
       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
       93,   93,   93,   90,   90,   90,  111,  112,  296,  111,
      112,  178,  766,  179,  181,  182,  183,  113,  265,  266,
      113,  185,  186,  187,  180,  180,  180,  180,  297,  114,
      115,  116,  114,  115,  116,  117,  117,  118,  119,  120,
      117,  117,  117,  121,  117,  117,  117,  117,  117,  122,
      117,  117,  117,  117,  117,  117,  117,  117,  123,  123,

      117,  117,  117,  117,  123,  123,  123,  123,  123,  123,
      123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
      123,  123,  124,  123,  123,  123,  123,  123,  123,  125,
      126,  117,  127,  136,  137,  138,  136,  137,  138,  206,
      206,  207,  215,  215,  215,  215,  248,  248,  248,  248,
      268,  269,  268,  269,  300,  331,  332,  139,  301,  765,
      139,  140,  141,  142,  143,  140,  140,  140,  144,  140,
      140,  145,  140,  140,  140,  146,  140,  140,  140,  140,
      140,  140,  140,  140,  147,  147,  140,  140,  140,  140,
      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,

      147,  147,  147,  147,  147,  147,  147,  147,  148,  147,
      147,  147,  147,  147,  147,  149,  140,  140,  140,  150,
      151,  152,  153,  154,  150,  150,  150,  150,  150,  150,
      150,  150,  150,  150,  150,  155,  156,  150,  150,  150,
      157,  150,  150,  150,  150,  150,  150,  150,  150,  158,
      159,  160,  161,  162,  163,  164,  164,  165,  164,  164,
      166,  167,  168,  169,  170,  164,  171,  172,  164,  173,
      174,  175,  164,  176,  150,  150,  150,  191,  201,  202,
      203,  258,  213,  213,  204,  289,  213,  213,  213,  213,
      292,  290,  217,  218,  219,  383,  303,  275,  220,  259,

      192,  188,  193,  276,  193,  221,  304,  335,  336,  293,
      193,  222,  384,  193,  194,  195,  480,  193,  196,  223,
      214,  306,  481,  197,  214,  198,  214,  317,  317,  317,
      317,  307,  764,  205,  308,  181,  182,  183,  185,  186,
      187,  189,  321,  322,  323,  339,  340,  205,  321,  322,
      323,  387,  321,  322,  323,  388,  324,  324,  324,  324,
      342,  342,  324,  324,  324,  324,  324,  324,  324,  324,
      321,  322,  323,  201,  202,  203,  341,  344,  344,  204,
      380,  258,  339,  340,  324,  324,  324,  324,  325,  217,
      218,  219,  265,  266,  381,  220,  326,  439,  343,  259,

      265,  266,  221,  248,  248,  248,  248,  673,  222,  268,
      269,  268,  269,  327,  392,  402,  223,  409,  393,  440,
      410,  416,  417,  418,  403,  331,  332,  763,  205,  411,
      412,  317,  317,  317,  317,  419,  419,  419,  419,  721,
      413,  331,  332,  722,  205,  357,  357,  358,  359,  357,
      357,  357,  357,  357,  357,  360,  357,  357,  357,  357,
      357,  357,  357,  357,  357,  357,  357,  357,  360,  360,
      357,  357,  357,  357,  360,  360,  360,  360,  360,  360,
      360,  360,  360,  360,  360,  360,  360,  360,  360,  360,
      360,  360,  360,  360,  360,  360,  360,  360,  360,  360,

      357,  357,  357,  362,  363,  364,  365,  335,  336,  366,
      335,  336,  339,  340,  367,  212,  212,  762,  368,  493,
      494,  369,  761,  370,  417,  494,  371,  374,  374,  760,
      374,  374,  374,  374,  374,  374,  374,  375,  374,  374,
      374,  374,  374,  374,  374,  374,  374,  374,  374,  374,
      375,  375,  374,  374,  374,  374,  375,  375,  375,  375,
      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
      375,  375,  374,  374,  374,  420,  322,  323,  427,  439,
      439,  428,  428,  439,  339,  340,  431,  431,  439,  324,

      324,  324,  324,  338,  439,  485,  339,  340,  486,  487,
      439,  441,  443,  439,  442,  420,  322,  323,  450,  552,
      759,  513,  493,  494,  516,  553,  444,  339,  340,  429,
      338,  338,  439,  338,  338,  338,  338,  338,  338,  338,
      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
      338,  338,  338,  430,  430,  339,  340,  445,  338,  338,
      430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
      430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
      430,  430,  430,  430,  430,  338,  338,  338,  432,  432,
      432,  432,  758,  439,  339,  340,  432,  757,  339,  340,

      495,  417,  418,  432,  432,  432,  432,  432,  432,  360,
      360,  439,  438,  360,  360,  360,  360,  360,  360,  448,
      360,  360,  360,  360,  360,  360,  360,  360,  360,  360,
      360,  360,  439,  439,  360,  360,  360,  360,  439,  446,
      501,  501,  447,  504,  504,  416,  417,  418,  616,  617,
      339,  340,  638,  339,  340,  515,  439,  439,  449,  419,
      419,  419,  419,  514,  360,  360,  360,  375,  375,  580,
      375,  375,  375,  375,  375,  375,  375,  439,  375,  375,
      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
      517,  439,  375,  375,  375,  375,  495,  417,  418,  439,

      439,  511,  439,  512,  439,  439,  339,  340,  209,  439,
      419,  419,  419,  419,  439,  519,  520,  581,  518,  522,
      566,  566,  375,  375,  375,  500,  500,  573,  521,  578,
      339,  340,  500,  500,  500,  500,  500,  500,  500,  500,
      500,  500,  500,  500,  500,  500,  500,  500,  500,  500,
      500,  500,  500,  500,  500,  500,  500,  502,  502,  502,
      502,  532,  439,  439,  439,  502,  439,  339,  340,  439,
      339,  340,  502,  502,  502,  502,  502,  502,  505,  505,
      505,  505,  439,  533,  582,  576,  505,  574,  579,  534,
      575,  439,  439,  505,  505,  505,  505,  505,  505,  567,

      567,  567,  567,  590,  339,  340,  338,  567,  577,  583,
      439,  439,  625,  591,  567,  567,  567,  567,  567,  567,
      439,  439,  624,  439,  439,  439,  439,  439,  439,  439,
      616,  617,  439,  623,  616,  617,  685,  686,  685,  686,
      756,  628,  626,  632,  708,  755,  634,  685,  686,  302,
      302,  627,  629,  754,  753,  630,  631,  633,  752,  751,
      750,  709,  669,   52,   52,   52,   52,   52,   52,   52,
       52,   52,   52,   52,   52,   52,   52,   52,   52,   69,
       69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
       69,   69,   69,   69,   69,   72,   72,   72,   72,   72,

       72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
       72,   76,   76,   76,   76,   76,   76,   76,   76,   76,
       76,   76,   76,   76,   76,   76,   76,   86,   86,   86,
       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
       86,   86,   86,   40,   40,   40,   40,   40,   40,   40,
       40,   40,   40,   40,   40,   40,   40,   40,   40,   95,
       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
       95,   95,   95,   95,   95,  101,  101,  101,  101,  101,
      101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
      101,  106,  106,  106,  106,  106,  106,  106,  106,  106,

      106,  106,  106,  106,  106,  106,  106,  110,  110,  110,
      110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
      110,  110,  110,  128,  128,  128,  128,  128,  128,  128,
      128,  128,  128,  128,  128,  128,  128,  128,  128,  131,
      131,  131,  131,  131,  131,  131,  131,  131,  131,  131,
      131,  131,  131,  131,  131,  135,  135,  135,  135,  135,
      135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
      135,  177,  177,  177,  177,  177,  177,  177,  177,  177,
      177,  177,  177,  177,  177,  177,  177,  184,  184,  184,
      184,  749,  748,  184,  184,  184,  190,  190,  190,  190,

      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
      190,  200,  200,  200,  200,  747,  746,  200,  200,  200,
      209,  745,  209,  209,  209,  209,  209,  209,  209,  209,
      209,  209,  209,  209,  209,  209,  212,  744,  212,  212,
      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
      212,  212,  216,  216,  216,  743,  742,  216,  216,  216,
      227,  741,  227,  227,  227,  227,  227,  227,  227,  227,
      227,  227,  227,  227,  227,  227,  229,  740,  229,  229,
      229,  229,  229,  229,  229,  229,  229,  229,  229,  229,
      229,  229,  230,  739,  230,  230,  230,  230,  230,  230,

      230,  230,  230,  230,  230,  230,  230,  230,  234,  234,
      234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
      234,  234,  234,  234,  236,  738,  236,  236,  737,  236,
      236,  236,  736,  735,  236,  236,  734,  733,  732,  236,
      238,  238,  238,  238,  731,  730,  238,  238,  238,  242,
      729,  242,  242,  242,  242,  242,  242,  242,  242,  242,
      242,  242,  242,  242,  242,  246,  246,  246,  246,  728,
      727,  246,  246,  246,  251,  726,  251,  251,  251,  251,
      251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
      254,  725,  254,  254,  254,  254,  254,  254,  254,  254,

      254,  724,  254,  254,  254,  254,  255,  723,  720,  719,
      255,  255,  255,  255,  718,  717,  255,  255,  257,  716,
      257,  257,  257,  257,  257,  257,  257,  257,  257,  257,
      257,  257,  257,  257,  261,  261,  261,  261,  715,  714,
      261,  261,  261,  264,  264,  264,  264,  264,  264,  264,
      264,  264,  264,  264,  264,  264,  264,  264,  264,  267,
      267,  267,  267,  713,  267,  267,  267,  267,  267,  267,
      267,  267,  267,  267,  267,  271,  712,  711,  271,  271,
      271,  271,  271,  271,  271,  710,  271,  271,  271,  271,
      271,  273,  707,  273,  273,  273,  273,  273,  273,  273,

      273,  273,  273,  273,  273,  273,  273,  274,  706,  274,
      274,  705,  274,  274,  274,  704,  703,  274,  274,  702,
      701,  700,  274,  279,  279,  279,  279,  699,  698,  279,
      279,  279,  284,  697,  284,  284,  284,  284,  284,  284,
      284,  284,  284,  284,  284,  284,  284,  284,  288,  288,
      696,  288,  288,  695,  694,  693,  288,  288,  315,  692,
      315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
      315,  315,  315,  315,  319,  691,  319,  319,  319,  319,
      319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
      320,  690,  320,  320,  320,  320,  320,  320,  320,  320,

      320,  320,  320,  320,  320,  320,  328,  328,  689,  688,
      328,  328,  328,  329,  329,  687,  683,  329,  329,  329,
      330,  330,  330,  330,  330,  330,  330,  330,  330,  330,
      330,  330,  330,  330,  330,  330,  334,  334,  334,  334,
      334,  334,  334,  334,  334,  334,  334,  334,  334,  334,
      334,  334,  338,  682,  338,  338,  338,  338,  338,  338,
      338,  338,  338,  681,  338,  338,  338,  338,  209,  680,
      209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
      209,  209,  209,  209,  345,  345,  679,  678,  677,  676,
      345,  346,  346,  346,  346,  675,  674,  346,  346,  346,

      346,  351,  673,  351,  351,  351,  351,  351,  351,  351,
      351,  351,  351,  351,  351,  351,  351,  227,  672,  227,
      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
      227,  227,  227,  229,  671,  229,  229,  229,  229,  229,
      229,  229,  229,  229,  229,  229,  229,  229,  229,  230,
      670,  230,  230,  230,  230,  230,  230,  230,  230,  230,
      230,  230,  230,  230,  230,  353,  668,  353,  353,  353,
      353,  353,  353,  353,  353,  353,  353,  353,  353,  353,
      353,  354,  667,  354,  354,  354,  354,  354,  354,  354,
      354,  354,  354,  354,  354,  354,  354,  234,  234,  234,

      234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
      234,  234,  234,  236,  666,  236,  236,  665,  236,  236,
      236,  664,  663,  236,  236,  662,  661,  660,  236,  238,
      238,  238,  238,  659,  658,  238,  238,  238,  242,  657,
      242,  242,  242,  242,  242,  242,  242,  242,  242,  242,
      242,  242,  242,  242,  246,  246,  246,  246,  656,  655,
      246,  246,  246,  361,  361,  654,  653,  652,  361,  361,
      255,  651,  650,  649,  255,  255,  255,  255,  648,  647,
      255,  255,  257,  646,  257,  257,  257,  257,  257,  257,
      257,  257,  257,  257,  257,  257,  257,  257,  261,  261,

      261,  261,  645,  644,  261,  261,  261,  264,  264,  264,
      264,  264,  264,  264,  264,  264,  264,  264,  264,  264,
      264,  264,  264,  267,  267,  267,  267,  643,  267,  267,
      267,  267,  267,  267,  267,  267,  267,  267,  267,  271,
      642,  641,  271,  271,  271,  271,  271,  271,  271,  640,
      271,  271,  271,  271,  271,  274,  639,  274,  274,  638,
      274,  274,  274,  637,  636,  274,  274,  635,  622,  621,
      274,  279,  279,  279,  279,  620,  619,  279,  279,  279,
      284,  618,  284,  284,  284,  284,  284,  284,  284,  284,
      284,  284,  284,  284,  284,  284,  288,  288,  560,  288,

      288,  614,  613,  612,  288,  288,  315,  611,  315,  315,
      315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
      315,  315,  319,  610,  319,  319,  319,  319,  319,  319,
      319,  319,  319,  319,  319,  319,  319,  319,  320,  609,
      320,  320,  320,  320,  320,  320,  320,  320,  320,  320,
      320,  320,  320,  320,  415,  415,  415,  415,  415,  415,
      415,  415,  415,  415,  415,  415,  415,  415,  415,  415,
      424,  424,  424,  424,  608,  607,  424,  424,  424,  425,
      425,  425,  425,  606,  605,  425,  425,  425,  330,  330,
      330,  330,  330,  330,  330,  330,  330,  330,  330,  330,

      330,  330,  330,  330,  334,  334,  334,  334,  334,  334,
      334,  334,  334,  334,  334,  334,  334,  334,  334,  334,
      338,  604,  338,  338,  338,  338,  338,  338,  338,  338,
      338,  603,  338,  338,  338,  338,  433,  433,  602,  601,
      600,  599,  433,  346,  346,  346,  346,  598,  597,  346,
      346,  346,  346,  351,  596,  351,  351,  351,  351,  351,
      351,  351,  351,  351,  351,  351,  351,  351,  351,  615,
      615,  615,  615,  615,  615,  615,  615,  615,  615,  615,
      615,  615,  615,  615,  615,  684,  684,  684,  684,  684,
      684,  684,  684,  684,  684,  684,  684,  684,  684,  684,

      684,  595,  594,  593,  592,  589,  588,  587,  586,  585,
      584,  571,  570,  569,  568,  565,  564,  563,  562,  561,
      560,  559,  558,  557,  556,  555,  554,  551,  550,  549,
      548,  547,  546,  545,  544,  543,  542,  541,  540,  539,
      538,  537,  536,  535,  531,  530,  529,  528,  527,  526,
      525,  524,  523,  510,  509,  508,  507,  506,  503,  499,
      498,  497,  496,  492,  491,  490,  489,  488,  484,  483,
      482,  479,  478,  477,  476,  475,  474,  473,  472,  471,
      470,  469,  468,  467,  466,  465,  464,  463,  462,  461,
      460,  459,  458,  457,  456,  455,  454,  453,  452,  451,

      439,  437,  436,  435,  434,  347,  426,  423,  422,  421,
      322,  414,  316,  408,  407,  406,  401,  400,  399,  398,
      397,  396,  395,  394,  391,  390,  389,  386,  385,  382,
      379,  378,  285,  282,  377,  376,  278,  373,  372,  243,
      356,  355,  235,  231,  352,  350,  349,  348,  218,  347,
      337,  206,  333,  202,  318,  186,  182,  316,  314,  313,
      312,  311,  310,  309,  305,  299,  298,  295,  294,  291,
      287,  286,  285,  283,  282,  281,  280,  260,  278,  277,
      272,  270,  263,  262,  260,  256,  250,  253,  250,  249,
      247,  245,  244,  243,  241,  240,  239,  237,  235,  228,

      231,  228,  226,  218,  208,  202,  199,  186,  182,  768,
       94,   94,   85,   77,   77,   39,  768,  768,  768,  768,
      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
      768,  768,  768,  768
    } ;

static yyconst short int yy_chk[2775] =
    {   0,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    2,    2,
        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,

        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
        2,    2,    2,    2,    2,    2,    3,    3,    3,    3,
      765,    3,    5,    5,    3,    3,    3,   27,   27,    3,
        6,    6,    6,   28,   28,    3,    6,   11,   11,   11,
        3,    3,   12,   12,   12,   48,   17,   17,   66,   29,
       29,   60,   60,   18,   18,  310,   17,   29,  310,   17,
       17,   17,   17,   18,   61,   61,   18,   18,   18,   18,
        3,    3,    3,    4,    4,    4,    4,  109,    4,    4,
       21,    4,    4,    4,  511,   48,    4,   19,   19,   19,
       22,  109,    4,   20,   20,   20,   66,    4,    4,  141,

        4,   17,   61,   21,   21,  141,   21,   37,   18,   37,
       75,   19,   75,   22,   22,  511,   22,   20,   30,   30,
       37,   37,   37,   37,  128,  128,   30,    4,    4,    4,
        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
        9,    9,    9,    9,    9,    9,    9,    9,   13,   13,
       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,

       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
       13,   13,   13,   13,   13,   13,   23,   23,  163,   24,
       24,   38,  764,   38,   41,   41,   41,   23,  130,  130,
       24,   45,   45,   45,   38,   38,   38,   38,  163,   23,
       23,   23,   24,   24,   24,   25,   25,   25,   25,   25,
       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,

       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
       25,   25,   25,   31,   31,   31,   32,   32,   32,   57,
       57,   57,   62,   62,   62,   62,   99,   99,   99,   99,
      131,  131,  133,  133,  167,  198,  198,   31,  167,  763,
       32,   33,   33,   33,   33,   33,   33,   33,   33,   33,
       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,

       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
       33,   33,   33,   33,   33,   33,   33,   33,   33,   35,
       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
       35,   35,   35,   35,   35,   35,   35,   49,   53,   53,
       53,  121,  105,  105,   53,  158,  108,  108,  115,  115,
      160,  158,   63,   63,   63,  291,  168,  275,   63,  121,

       49,  188,   49,  275,   49,   63,  168,  205,  205,  160,
       49,   63,  291,   49,   49,   49,  405,   49,   49,   63,
      105,  170,  405,   49,  108,   49,  115,  180,  180,  180,
      180,  170,  762,   53,  170,  181,  181,  181,  185,  185,
      185,  188,  192,  192,  192,  209,  209,   63,  193,  193,
      193,  294,  194,  194,  194,  294,  192,  192,  192,  192,
      211,  211,  193,  193,  193,  193,  194,  194,  194,  194,
      195,  195,  195,  201,  201,  201,  210,  213,  213,  201,
      289,  257,  210,  210,  195,  195,  195,  195,  192,  217,
      217,  217,  264,  264,  289,  217,  194,  362,  211,  257,

      266,  266,  217,  248,  248,  248,  248,  761,  217,  267,
      267,  269,  269,  195,  298,  309,  217,  314,  298,  362,
      314,  321,  321,  321,  309,  330,  330,  760,  201,  314,
      314,  317,  317,  317,  317,  321,  321,  321,  321,  708,
      314,  332,  332,  708,  217,  241,  241,  241,  241,  241,
      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,

      241,  241,  241,  250,  250,  250,  250,  334,  334,  250,
      336,  336,  338,  338,  250,  344,  344,  757,  250,  415,
      415,  250,  756,  250,  418,  418,  250,  278,  278,  755,
      278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
      278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
      278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
      278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
      278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
      278,  278,  278,  278,  278,  324,  324,  324,  339,  363,
      364,  340,  340,  365,  339,  339,  342,  342,  366,  324,

      324,  324,  324,  340,  371,  409,  342,  342,  409,  409,
      441,  363,  365,  444,  364,  420,  420,  420,  371,  485,
      754,  441,  494,  494,  444,  485,  366,  504,  504,  340,
      341,  341,  367,  341,  341,  341,  341,  341,  341,  341,
      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
      341,  341,  341,  341,  341,  341,  341,  367,  341,  341,
      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
      341,  341,  341,  341,  341,  341,  341,  341,  343,  343,
      343,  343,  752,  369,  505,  505,  343,  750,  343,  343,

      495,  495,  495,  343,  343,  343,  343,  343,  343,  360,
      360,  368,  360,  360,  360,  360,  360,  360,  360,  369,
      360,  360,  360,  360,  360,  360,  360,  360,  360,  360,
      360,  360,  370,  442,  360,  360,  360,  360,  443,  368,
      428,  428,  368,  431,  431,  416,  416,  416,  561,  561,
      428,  428,  749,  431,  431,  443,  519,  445,  370,  416,
      416,  416,  416,  442,  360,  360,  360,  375,  375,  519,
      375,  375,  375,  375,  375,  375,  375,  440,  375,  375,
      375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
      445,  447,  375,  375,  375,  375,  419,  419,  419,  446,

      450,  440,  449,  440,  520,  448,  503,  503,  503,  512,
      419,  419,  419,  419,  517,  447,  448,  520,  446,  450,
      501,  501,  375,  375,  375,  427,  427,  512,  449,  517,
      501,  501,  427,  427,  427,  427,  427,  427,  427,  427,
      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
      427,  427,  427,  427,  427,  427,  427,  429,  429,  429,
      429,  462,  514,  513,  518,  429,  515,  566,  566,  521,
      567,  567,  429,  429,  429,  429,  429,  429,  432,  432,
      432,  432,  516,  462,  521,  515,  432,  513,  518,  462,
      514,  574,  522,  432,  432,  432,  432,  432,  432,  502,

      502,  502,  502,  532,  565,  565,  565,  502,  516,  522,
      572,  573,  574,  532,  502,  502,  502,  502,  502,  502,
      575,  576,  573,  577,  578,  579,  580,  583,  581,  582,
      615,  615,  634,  572,  617,  617,  656,  656,  684,  684,
      748,  577,  575,  581,  681,  747,  583,  686,  686,  810,
      810,  576,  578,  745,  744,  579,  580,  582,  743,  742,
      740,  681,  634,  769,  769,  769,  769,  769,  769,  769,
      769,  769,  769,  769,  769,  769,  769,  769,  769,  770,
      770,  770,  770,  770,  770,  770,  770,  770,  770,  770,
      770,  770,  770,  770,  770,  771,  771,  771,  771,  771,

      771,  771,  771,  771,  771,  771,  771,  771,  771,  771,
      771,  772,  772,  772,  772,  772,  772,  772,  772,  772,
      772,  772,  772,  772,  772,  772,  772,  773,  773,  773,
      773,  773,  773,  773,  773,  773,  773,  773,  773,  773,
      773,  773,  773,  774,  774,  774,  774,  774,  774,  774,
      774,  774,  774,  774,  774,  774,  774,  774,  774,  775,
      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
      775,  775,  775,  775,  775,  776,  776,  776,  776,  776,
      776,  776,  776,  776,  776,  776,  776,  776,  776,  776,
      776,  777,  777,  777,  777,  777,  777,  777,  777,  777,

      777,  777,  777,  777,  777,  777,  777,  778,  778,  778,
      778,  778,  778,  778,  778,  778,  778,  778,  778,  778,
      778,  778,  778,  779,  779,  779,  779,  779,  779,  779,
      779,  779,  779,  779,  779,  779,  779,  779,  779,  780,
      780,  780,  780,  780,  780,  780,  780,  780,  780,  780,
      780,  780,  780,  780,  780,  781,  781,  781,  781,  781,
      781,  781,  781,  781,  781,  781,  781,  781,  781,  781,
      781,  782,  782,  782,  782,  782,  782,  782,  782,  782,
      782,  782,  782,  782,  782,  782,  782,  783,  783,  783,
      783,  739,  738,  783,  783,  783,  784,  784,  784,  784,

      784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
      784,  785,  785,  785,  785,  737,  736,  785,  785,  785,
      786,  735,  786,  786,  786,  786,  786,  786,  786,  786,
      786,  786,  786,  786,  786,  786,  787,  734,  787,  787,
      787,  787,  787,  787,  787,  787,  787,  787,  787,  787,
      787,  787,  788,  788,  788,  733,  732,  788,  788,  788,
      789,  731,  789,  789,  789,  789,  789,  789,  789,  789,
      789,  789,  789,  789,  789,  789,  790,  729,  790,  790,
      790,  790,  790,  790,  790,  790,  790,  790,  790,  790,
      790,  790,  791,  727,  791,  791,  791,  791,  791,  791,

      791,  791,  791,  791,  791,  791,  791,  791,  792,  792,
      792,  792,  792,  792,  792,  792,  792,  792,  792,  792,
      792,  792,  792,  792,  793,  726,  793,  793,  725,  793,
      793,  793,  724,  723,  793,  793,  722,  721,  720,  793,
      794,  794,  794,  794,  719,  718,  794,  794,  794,  795,
      717,  795,  795,  795,  795,  795,  795,  795,  795,  795,
      795,  795,  795,  795,  795,  796,  796,  796,  796,  715,
      714,  796,  796,  796,  797,  713,  797,  797,  797,  797,
      797,  797,  797,  797,  797,  797,  797,  797,  797,  797,
      798,  712,  798,  798,  798,  798,  798,  798,  798,  798,

      798,  710,  798,  798,  798,  798,  799,  709,  707,  706,
      799,  799,  799,  799,  705,  704,  799,  799,  800,  703,
      800,  800,  800,  800,  800,  800,  800,  800,  800,  800,
      800,  800,  800,  800,  801,  801,  801,  801,  702,  701,
      801,  801,  801,  802,  802,  802,  802,  802,  802,  802,
      802,  802,  802,  802,  802,  802,  802,  802,  802,  803,
      803,  803,  803,  700,  803,  803,  803,  803,  803,  803,
      803,  803,  803,  803,  803,  804,  699,  698,  804,  804,
      804,  804,  804,  804,  804,  682,  804,  804,  804,  804,
      804,  805,  680,  805,  805,  805,  805,  805,  805,  805,

      805,  805,  805,  805,  805,  805,  805,  806,  679,  806,
      806,  678,  806,  806,  806,  677,  675,  806,  806,  674,
      672,  671,  806,  807,  807,  807,  807,  670,  669,  807,
      807,  807,  808,  668,  808,  808,  808,  808,  808,  808,
      808,  808,  808,  808,  808,  808,  808,  808,  809,  809,
      667,  809,  809,  666,  665,  664,  809,  809,  811,  663,
      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
      811,  811,  811,  811,  812,  662,  812,  812,  812,  812,
      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
      813,  661,  813,  813,  813,  813,  813,  813,  813,  813,

      813,  813,  813,  813,  813,  813,  814,  814,  660,  659,
      814,  814,  814,  815,  815,  658,  655,  815,  815,  815,
      816,  816,  816,  816,  816,  816,  816,  816,  816,  816,
      816,  816,  816,  816,  816,  816,  817,  817,  817,  817,
      817,  817,  817,  817,  817,  817,  817,  817,  817,  817,
      817,  817,  818,  653,  818,  818,  818,  818,  818,  818,
      818,  818,  818,  652,  818,  818,  818,  818,  819,  651,
      819,  819,  819,  819,  819,  819,  819,  819,  819,  819,
      819,  819,  819,  819,  820,  820,  650,  646,  644,  643,
      820,  821,  821,  821,  821,  642,  641,  821,  821,  821,

      821,  822,  639,  822,  822,  822,  822,  822,  822,  822,
      822,  822,  822,  822,  822,  822,  822,  823,  637,  823,
      823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
      823,  823,  823,  824,  636,  824,  824,  824,  824,  824,
      824,  824,  824,  824,  824,  824,  824,  824,  824,  825,
      635,  825,  825,  825,  825,  825,  825,  825,  825,  825,
      825,  825,  825,  825,  825,  826,  633,  826,  826,  826,
      826,  826,  826,  826,  826,  826,  826,  826,  826,  826,
      826,  827,  632,  827,  827,  827,  827,  827,  827,  827,
      827,  827,  827,  827,  827,  827,  827,  828,  828,  828,

      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
      828,  828,  828,  829,  631,  829,  829,  630,  829,  829,
      829,  629,  628,  829,  829,  627,  626,  625,  829,  830,
      830,  830,  830,  624,  623,  830,  830,  830,  831,  621,
      831,  831,  831,  831,  831,  831,  831,  831,  831,  831,
      831,  831,  831,  831,  832,  832,  832,  832,  619,  612,
      832,  832,  832,  833,  833,  611,  610,  609,  833,  833,
      834,  608,  607,  606,  834,  834,  834,  834,  604,  601,
      834,  834,  835,  600,  835,  835,  835,  835,  835,  835,
      835,  835,  835,  835,  835,  835,  835,  835,  836,  836,

      836,  836,  599,  598,  836,  836,  836,  837,  837,  837,
      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
      837,  837,  837,  838,  838,  838,  838,  597,  838,  838,
      838,  838,  838,  838,  838,  838,  838,  838,  838,  839,
      596,  595,  839,  839,  839,  839,  839,  839,  839,  594,
      839,  839,  839,  839,  839,  840,  593,  840,  840,  592,
      840,  840,  840,  591,  590,  840,  840,  588,  569,  568,
      840,  841,  841,  841,  841,  564,  563,  841,  841,  841,
      842,  562,  842,  842,  842,  842,  842,  842,  842,  842,
      842,  842,  842,  842,  842,  842,  843,  843,  560,  843,

      843,  559,  558,  557,  843,  843,  844,  556,  844,  844,
      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
      844,  844,  845,  555,  845,  845,  845,  845,  845,  845,
      845,  845,  845,  845,  845,  845,  845,  845,  846,  554,
      846,  846,  846,  846,  846,  846,  846,  846,  846,  846,
      846,  846,  846,  846,  847,  847,  847,  847,  847,  847,
      847,  847,  847,  847,  847,  847,  847,  847,  847,  847,
      848,  848,  848,  848,  553,  552,  848,  848,  848,  849,
      849,  849,  849,  551,  549,  849,  849,  849,  850,  850,
      850,  850,  850,  850,  850,  850,  850,  850,  850,  850,

      850,  850,  850,  850,  851,  851,  851,  851,  851,  851,
      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
      852,  548,  852,  852,  852,  852,  852,  852,  852,  852,
      852,  546,  852,  852,  852,  852,  853,  853,  545,  544,
      543,  542,  853,  854,  854,  854,  854,  541,  540,  854,
      854,  854,  854,  855,  539,  855,  855,  855,  855,  855,
      855,  855,  855,  855,  855,  855,  855,  855,  855,  856,
      856,  856,  856,  856,  856,  856,  856,  856,  856,  856,
      856,  856,  856,  856,  856,  857,  857,  857,  857,  857,
      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,

      857,  538,  536,  534,  533,  530,  528,  526,  525,  524,
      523,  509,  508,  507,  506,  500,  499,  498,  497,  496,
      492,  491,  490,  489,  488,  487,  486,  483,  482,  481,
      480,  479,  478,  476,  475,  474,  473,  472,  471,  469,
      468,  467,  464,  463,  461,  460,  459,  458,  457,  454,
      453,  452,  451,  439,  437,  436,  435,  434,  430,  426,
      423,  422,  421,  414,  413,  412,  411,  410,  408,  407,
      406,  404,  403,  402,  401,  400,  399,  398,  397,  396,
      395,  394,  393,  392,  391,  390,  388,  387,  386,  384,
      383,  382,  381,  380,  379,  378,  377,  376,  373,  372,

      361,  356,  355,  352,  350,  346,  337,  327,  326,  325,
      323,  318,  315,  313,  312,  311,  308,  307,  306,  305,
      303,  301,  300,  299,  297,  296,  295,  293,  292,  290,
      287,  286,  284,  282,  281,  280,  276,  263,  262,  243,
      240,  239,  234,  231,  226,  222,  221,  220,  219,  216,
      208,  207,  204,  203,  189,  187,  183,  179,  176,  175,
      174,  173,  172,  171,  169,  166,  165,  162,  161,  159,
      156,  155,  154,  153,  151,  149,  148,  146,  144,  143,
      137,  134,  125,  124,  122,  119,  114,  112,  107,  103,
       97,   92,   89,   87,   85,   84,   83,   80,   76,   74,

       73,   71,   67,   65,   59,   55,   50,   47,   43,   39,
       16,   15,   10,    8,    7,  768,  768,  768,  768,  768,
      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
      768,  768,  768,  768
    } ;

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 "scan.l"
#define INITIAL 0
/* scan.l - scanner for flex input */
#line 4 "scan.l"
/*-
 * Copyright (c) 1990 The Regents of the University of California.
 * All rights reserved.
 *
 * This code is derived from software contributed to Berkeley by
 * Vern Paxson.
 * 
 * The United States Government has rights in this work pursuant
 * to contract no. DE-AC03-76SF00098 between the United States
 * Department of Energy and the University of California.
 *
 * Redistribution and use in source and binary forms with or without
 * modification are permitted provided that: (1) source distributions retain
 * this entire copyright notice and comment, and (2) distributions including
 * binaries display the following acknowledgement:  ``This product includes
 * software developed by the University of California, Berkeley and its
 * contributors'' in the documentation or other materials provided with the
 * distribution and in all advertising materials mentioning features or use
 * of this software.  Neither the name of the University nor the names of
 * its contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 */

/* $Header: /home/daffy/u0/vern/flex/RCS/scan.l,v 2.56 95/04/24 12:17:19 vern Exp $ */

#include "flexdef.h"
#include "parse.h"

#define ACTION_ECHO add_action( yytext )
#define ACTION_IFDEF(def, should_define) \
	{ \
	if ( should_define ) \
		action_define( def, 1 ); \
	}

#define MARK_END_OF_PROLOG mark_prolog();

#define YY_DECL \
	int flexscan()

#define RETURNCHAR \
	yylval = (unsigned char) yytext[0]; \
	return CHAR;

#define RETURNNAME \
	strcpy( nmstr, yytext ); \
	return NAME;

#define PUT_BACK_STRING(str, start) \
	for ( i = strlen( str ) - 1; i >= start; --i ) \
		unput((str)[i])

#define CHECK_REJECT(str) \
	if ( all_upper( str ) ) \
		reject = true;

#define CHECK_YYMORE(str) \
	if ( all_lower( str ) ) \
		yymore_used = true;
#define YY_STACK_USED 1
#define YY_NO_TOP_STATE 1
#define SECT2 1
#define SECT2PROLOG 2
#define SECT3 3
#define CODEBLOCK 4
#define PICKUPDEF 5
#define SC 6
#define CARETISBOL 7
#define NUM 8
#define QUOTE 9

#define FIRSTCCL 10
#define CCL 11
#define ACTION 12
#define RECOVER 13
#define COMMENT 14
#define ACTION_STRING 15
#define PERCENT_BRACE_ACTION 16

#define OPTION 17
#define LINEDIR 18

#line 1333 "scan.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 \
	if ( yyleng > 0 ) \
		yy_current_buffer->yy_at_bol = \
				(yytext[yyleng - 1] == '\n'); \
	YY_USER_ACTION

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

#line 94 "scan.l"

	static int bracelevel, didadef, indented_code;
	static int doing_rule_action = false;
	static int option_sense;

	int doing_codeblock = false;
	int i;
	Char nmdef[MAXLINE], myesc();


#line 1498 "scan.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_current_state += YY_AT_BOL();
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 >= 769 )
					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] != 2716 );

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 105 "scan.l"
indented_code = true; BEGIN(CODEBLOCK);
	YY_BREAK
case 2:
YY_RULE_SETUP
#line 106 "scan.l"
ACTION_ECHO; yy_push_state( COMMENT );
	YY_BREAK
case 3:
YY_RULE_SETUP
#line 107 "scan.l"
yy_push_state( LINEDIR );
	YY_BREAK
case 4:
YY_RULE_SETUP
#line 108 "scan.l"
return SCDECL;
	YY_BREAK
case 5:
YY_RULE_SETUP
#line 109 "scan.l"
return XSCDECL;
	YY_BREAK
case 6:
YY_RULE_SETUP
#line 110 "scan.l"
{
			++linenum;
			line_directive_out( (FILE *) 0, 1 );
			indented_code = false;
			BEGIN(CODEBLOCK);
			}
	YY_BREAK
case 7:
YY_RULE_SETUP
#line 117 "scan.l"
/* discard */
	YY_BREAK
case 8:
YY_RULE_SETUP
#line 119 "scan.l"
{
			sectnum = 2;
			bracelevel = 0;
			mark_defs1();
			line_directive_out( (FILE *) 0, 1 );
			BEGIN(SECT2PROLOG);
			return SECTEND;
			}
	YY_BREAK
case 9:
YY_RULE_SETUP
#line 128 "scan.l"
yytext_is_array = false; ++linenum;
	YY_BREAK
case 10:
YY_RULE_SETUP
#line 129 "scan.l"
yytext_is_array = true; ++linenum;
	YY_BREAK
case 11:
YY_RULE_SETUP
#line 131 "scan.l"
BEGIN(OPTION); return OPTION_OP;
	YY_BREAK
case 12:
YY_RULE_SETUP
#line 133 "scan.l"
++linenum; /* ignore */
	YY_BREAK
case 13:
YY_RULE_SETUP
#line 134 "scan.l"
++linenum;	/* ignore */
	YY_BREAK
case 14:
YY_RULE_SETUP
#line 136 "scan.l"
synerr( _( "unrecognized '%' directive" ) );
	YY_BREAK
case 15:
YY_RULE_SETUP
#line 138 "scan.l"
{
			strcpy( nmstr, yytext );
			didadef = false;
			BEGIN(PICKUPDEF);
			}
	YY_BREAK
case 16:
YY_RULE_SETUP
#line 144 "scan.l"
RETURNNAME;
	YY_BREAK
case 17:
YY_RULE_SETUP
#line 145 "scan.l"
++linenum; /* allows blank lines in section 1 */
	YY_BREAK
case 18:
YY_RULE_SETUP
#line 146 "scan.l"
ACTION_ECHO; ++linenum; /* maybe end of comment line */
	YY_BREAK


case 19:
YY_RULE_SETUP
#line 151 "scan.l"
ACTION_ECHO; yy_pop_state();
	YY_BREAK
case 20:
YY_RULE_SETUP
#line 152 "scan.l"
ACTION_ECHO;
	YY_BREAK
case 21:
YY_RULE_SETUP
#line 153 "scan.l"
ACTION_ECHO;
	YY_BREAK
case 22:
YY_RULE_SETUP
#line 154 "scan.l"
++linenum; ACTION_ECHO;
	YY_BREAK


case 23:
YY_RULE_SETUP
#line 158 "scan.l"
yy_pop_state();
	YY_BREAK
case 24:
YY_RULE_SETUP
#line 159 "scan.l"
linenum = myctoi( yytext );
	YY_BREAK
case 25:
YY_RULE_SETUP
#line 161 "scan.l"
{
			flex_free( (void *) infilename );
			infilename = copy_string( yytext + 1 );
			infilename[strlen( infilename ) - 1] = '\0';
			}
	YY_BREAK
case 26:
YY_RULE_SETUP
#line 166 "scan.l"
/* ignore spurious characters */
	YY_BREAK


case 27:
YY_RULE_SETUP
#line 170 "scan.l"
++linenum; BEGIN(INITIAL);
	YY_BREAK
case 28:
YY_RULE_SETUP
#line 172 "scan.l"
ACTION_ECHO;
	YY_BREAK
case 29:
YY_RULE_SETUP
#line 174 "scan.l"
{
			++linenum;
			ACTION_ECHO;
			if ( indented_code )
				BEGIN(INITIAL);
			}
	YY_BREAK


case 30:
YY_RULE_SETUP
#line 184 "scan.l"
/* separates name and definition */
	YY_BREAK
case 31:
YY_RULE_SETUP
#line 186 "scan.l"
{
			strcpy( (char *) nmdef, yytext );

			/* Skip trailing whitespace. */
			for ( i = strlen( (char *) nmdef ) - 1;
			      i >= 0 && (nmdef[i] == ' ' || nmdef[i] == '\t');
			      --i )
				;

			nmdef[i + 1] = '\0';

			ndinstal( nmstr, nmdef );
			didadef = true;
			}
	YY_BREAK
case 32:
YY_RULE_SETUP
#line 201 "scan.l"
{
			if ( ! didadef )
				synerr( _( "incomplete name definition" ) );
			BEGIN(INITIAL);
			++linenum;
			}
	YY_BREAK


case 33:
YY_RULE_SETUP
#line 211 "scan.l"
++linenum; BEGIN(INITIAL);
	YY_BREAK
case 34:
YY_RULE_SETUP
#line 212 "scan.l"
option_sense = true;
	YY_BREAK
case 35:
YY_RULE_SETUP
#line 214 "scan.l"
return '=';
	YY_BREAK
case 36:
YY_RULE_SETUP
#line 216 "scan.l"
option_sense = ! option_sense;
	YY_BREAK
case 37:
YY_RULE_SETUP
#line 218 "scan.l"
csize = option_sense ? 128 : 256;
	YY_BREAK
case 38:
YY_RULE_SETUP
#line 219 "scan.l"
csize = option_sense ? 256 : 128;
	YY_BREAK
case 39:
YY_RULE_SETUP
#line 221 "scan.l"
long_align = option_sense;
	YY_BREAK
case 40:
YY_RULE_SETUP
#line 222 "scan.l"
{
			action_define( "YY_ALWAYS_INTERACTIVE", option_sense );
			}
	YY_BREAK
case 41:
YY_RULE_SETUP
#line 225 "scan.l"
yytext_is_array = option_sense;
	YY_BREAK
case 42:
YY_RULE_SETUP
#line 226 "scan.l"
backing_up_report = option_sense;
	YY_BREAK
case 43:
YY_RULE_SETUP
#line 227 "scan.l"
interactive = ! option_sense;
	YY_BREAK
case 44:
YY_RULE_SETUP
#line 228 "scan.l"
C_plus_plus = option_sense;
	YY_BREAK
case 45:
YY_RULE_SETUP
#line 229 "scan.l"
caseins = ! option_sense;
	YY_BREAK
case 46:
YY_RULE_SETUP
#line 230 "scan.l"
caseins = option_sense;
	YY_BREAK
case 47:
YY_RULE_SETUP
#line 231 "scan.l"
ddebug = option_sense;
	YY_BREAK
case 48:
YY_RULE_SETUP
#line 232 "scan.l"
spprdflt = ! option_sense;
	YY_BREAK
case 49:
YY_RULE_SETUP
#line 233 "scan.l"
useecs = option_sense;
	YY_BREAK
case 50:
YY_RULE_SETUP
#line 234 "scan.l"
{
			useecs = usemecs = false;
			use_read = fullspd = true;
			}
	YY_BREAK
case 51:
YY_RULE_SETUP
#line 238 "scan.l"
{
			useecs = usemecs = false;
			use_read = fulltbl = true;
			}
	YY_BREAK
case 52:
YY_RULE_SETUP
#line 242 "scan.l"
ACTION_IFDEF("YY_NO_INPUT", ! option_sense);
	YY_BREAK
case 53:
YY_RULE_SETUP
#line 243 "scan.l"
interactive = option_sense;
	YY_BREAK
case 54:
YY_RULE_SETUP
#line 244 "scan.l"
lex_compat = option_sense;
	YY_BREAK
case 55:
YY_RULE_SETUP
#line 245 "scan.l"
{
			action_define( "YY_MAIN", option_sense );
			do_yywrap = ! option_sense;
			}
	YY_BREAK
case 56:
YY_RULE_SETUP
#line 249 "scan.l"
usemecs = option_sense;
	YY_BREAK
case 57:
YY_RULE_SETUP
#line 250 "scan.l"
{
			action_define( "YY_NEVER_INTERACTIVE", option_sense );
			}
	YY_BREAK
case 58:
YY_RULE_SETUP
#line 253 "scan.l"
performance_report += option_sense ? 1 : -1;
	YY_BREAK
case 59:
YY_RULE_SETUP
#line 254 "scan.l"
yytext_is_array = ! option_sense;
	YY_BREAK
case 60:
YY_RULE_SETUP
#line 255 "scan.l"
use_read = option_sense;
	YY_BREAK
case 61:
YY_RULE_SETUP
#line 256 "scan.l"
reject_really_used = option_sense;
	YY_BREAK
case 62:
YY_RULE_SETUP
#line 257 "scan.l"
action_define( "YY_STACK_USED", option_sense );
	YY_BREAK
case 63:
YY_RULE_SETUP
#line 258 "scan.l"
do_stdinit = option_sense;
	YY_BREAK
case 64:
YY_RULE_SETUP
#line 259 "scan.l"
use_stdout = option_sense;
	YY_BREAK
case 65:
YY_RULE_SETUP
#line 260 "scan.l"
ACTION_IFDEF("YY_NO_UNPUT", ! option_sense);
	YY_BREAK
case 66:
YY_RULE_SETUP
#line 261 "scan.l"
printstats = option_sense;
	YY_BREAK
case 67:
YY_RULE_SETUP
#line 262 "scan.l"
nowarn = ! option_sense;
	YY_BREAK
case 68:
YY_RULE_SETUP
#line 263 "scan.l"
do_yylineno = option_sense;
	YY_BREAK
case 69:
YY_RULE_SETUP
#line 264 "scan.l"
yymore_really_used = option_sense;
	YY_BREAK
case 70:
YY_RULE_SETUP
#line 265 "scan.l"
do_yywrap = option_sense;
	YY_BREAK
case 71:
YY_RULE_SETUP
#line 267 "scan.l"
ACTION_IFDEF("YY_NO_PUSH_STATE", ! option_sense);
	YY_BREAK
case 72:
YY_RULE_SETUP
#line 268 "scan.l"
ACTION_IFDEF("YY_NO_POP_STATE", ! option_sense);
	YY_BREAK
case 73:
YY_RULE_SETUP
#line 269 "scan.l"
ACTION_IFDEF("YY_NO_TOP_STATE", ! option_sense);
	YY_BREAK
case 74:
YY_RULE_SETUP
#line 271 "scan.l"
ACTION_IFDEF("YY_NO_SCAN_BUFFER", ! option_sense);
	YY_BREAK
case 75:
YY_RULE_SETUP
#line 272 "scan.l"
ACTION_IFDEF("YY_NO_SCAN_BYTES", ! option_sense);
	YY_BREAK
case 76:
YY_RULE_SETUP
#line 273 "scan.l"
ACTION_IFDEF("YY_NO_SCAN_STRING", ! option_sense);
	YY_BREAK
case 77:
YY_RULE_SETUP
#line 275 "scan.l"
return OPT_OUTFILE;
	YY_BREAK
case 78:
YY_RULE_SETUP
#line 276 "scan.l"
return OPT_PREFIX;
	YY_BREAK
case 79:
YY_RULE_SETUP
#line 277 "scan.l"
return OPT_YYCLASS;
	YY_BREAK
case 80:
YY_RULE_SETUP
#line 279 "scan.l"
{
			strcpy( nmstr, yytext + 1 );
			nmstr[strlen( nmstr ) - 1] = '\0';
			return NAME;
			}
	YY_BREAK
case 81:
YY_RULE_SETUP
#line 285 "scan.l"
{
			format_synerr( _( "unrecognized %%option: %s" ),
				yytext );
			BEGIN(RECOVER);
			}
	YY_BREAK

case 82:
YY_RULE_SETUP
#line 292 "scan.l"
++linenum; BEGIN(INITIAL);
	YY_BREAK

case 83:
YY_RULE_SETUP
#line 296 "scan.l"
++bracelevel; yyless( 2 );	/* eat only %{ */
	YY_BREAK
case 84:
YY_RULE_SETUP
#line 297 "scan.l"
--bracelevel; yyless( 2 );	/* eat only %} */
	YY_BREAK
case 85:
YY_RULE_SETUP
#line 299 "scan.l"
ACTION_ECHO;	/* indented code in prolog */
	YY_BREAK
case 86:
YY_RULE_SETUP
#line 301 "scan.l"
{	/* non-indented code */
			if ( bracelevel <= 0 )
				{ /* not in %{ ... %} */
				yyless( 0 );	/* put it all back */
				yy_set_bol( 1 );
				mark_prolog();
				BEGIN(SECT2);
				}
			else
				ACTION_ECHO;
			}
	YY_BREAK
case 87:
YY_RULE_SETUP
#line 313 "scan.l"
ACTION_ECHO;
	YY_BREAK
case 88:
YY_RULE_SETUP
#line 314 "scan.l"
++linenum; ACTION_ECHO;
	YY_BREAK
case YY_STATE_EOF(SECT2PROLOG):
#line 316 "scan.l"
{
			mark_prolog();
			sectnum = 0;
			yyterminate(); /* to stop the parser */
			}
	YY_BREAK


case 89:
YY_RULE_SETUP
#line 324 "scan.l"
++linenum; /* allow blank lines in section 2 */
	YY_BREAK
case 90:
YY_RULE_SETUP
#line 326 "scan.l"
{
			indented_code = false;
			doing_codeblock = true;
			bracelevel = 1;
			BEGIN(PERCENT_BRACE_ACTION);
			}
	YY_BREAK
case 91:
YY_RULE_SETUP
#line 333 "scan.l"
BEGIN(SC); return '<';
	YY_BREAK
case 92:
YY_RULE_SETUP
#line 334 "scan.l"
return '^';
	YY_BREAK
case 93:
YY_RULE_SETUP
#line 335 "scan.l"
BEGIN(QUOTE); return '"';
	YY_BREAK
case 94:
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
yy_c_buf_p = yy_cp = yy_bp + 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 336 "scan.l"
BEGIN(NUM); return '{';
	YY_BREAK
case 95:
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
yy_c_buf_p = yy_cp = yy_bp + 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 337 "scan.l"
return '$';
	YY_BREAK
case 96:
YY_RULE_SETUP
#line 339 "scan.l"
{
			bracelevel = 1;
			BEGIN(PERCENT_BRACE_ACTION);

			if ( in_rule )
				{
				doing_rule_action = true;
				in_rule = false;
				return '\n';
				}
			}
	YY_BREAK
case 97:
YY_RULE_SETUP
#line 350 "scan.l"
continued_action = true; ++linenum; return '\n';
	YY_BREAK
case 98:
YY_RULE_SETUP
#line 352 "scan.l"
{
			yyless( yyleng - 2 );	/* put back '/', '*' */
			bracelevel = 0;
			continued_action = false;
			BEGIN(ACTION);
			}
	YY_BREAK
case 99:
YY_RULE_SETUP
#line 359 "scan.l"
/* allow indented rules */
	YY_BREAK
case 100:
YY_RULE_SETUP
#line 361 "scan.l"
{
			/* This rule is separate from the one below because
			 * otherwise we get variable trailing context, so
			 * we can't build the scanner using -{f,F}.
			 */
			bracelevel = 0;
			continued_action = false;
			BEGIN(ACTION);

			if ( in_rule )
				{
				doing_rule_action = true;
				in_rule = false;
				return '\n';
				}
			}
	YY_BREAK
case 101:
YY_RULE_SETUP
#line 378 "scan.l"
{
			bracelevel = 0;
			continued_action = false;
			BEGIN(ACTION);
			unput( '\n' );	/* so <ACTION> sees it */

			if ( in_rule )
				{
				doing_rule_action = true;
				in_rule = false;
				return '\n';
				}
			}
	YY_BREAK
case 102:
#line 393 "scan.l"
case 103:
YY_RULE_SETUP
#line 393 "scan.l"
return EOF_OP;
	YY_BREAK
case 104:
YY_RULE_SETUP
#line 395 "scan.l"
{
			sectnum = 3;
			BEGIN(SECT3);
			yyterminate(); /* to stop the parser */
			}
	YY_BREAK
case 105:
YY_RULE_SETUP
#line 401 "scan.l"
{
			int cclval;

			strcpy( nmstr, yytext );

			/* Check to see if we've already encountered this
			 * ccl.
			 */
			if ( (cclval = ccllookup( (Char *) nmstr )) != 0 )
				{
				if ( input() != ']' )
					synerr( _( "bad character class" ) );

				yylval = cclval;
				++cclreuse;
				return PREVCCL;
				}
			else
				{
				/* We fudge a bit.  We know that this ccl will
				 * soon be numbered as lastccl + 1 by cclinit.
				 */
				cclinstal( (Char *) nmstr, lastccl + 1 );

				/* Push back everything but the leading bracket
				 * so the ccl can be rescanned.
				 */
				yyless( 1 );

				BEGIN(FIRSTCCL);
				return '[';
				}
			}
	YY_BREAK
case 106:
YY_RULE_SETUP
#line 435 "scan.l"
{
			register Char *nmdefptr;
			Char *ndlookup();

			strcpy( nmstr, yytext + 1 );
			nmstr[yyleng - 2] = '\0';  /* chop trailing brace */

			if ( (nmdefptr = ndlookup( nmstr )) == 0 )
				format_synerr(
					_( "undefined definition {%s}" ),
						nmstr );

			else
				{ /* push back name surrounded by ()'s */
				int len = strlen( (char *) nmdefptr );

				if ( lex_compat || nmdefptr[0] == '^' ||
				     (len > 0 && nmdefptr[len - 1] == '$') )
					{ /* don't use ()'s after all */
					PUT_BACK_STRING((char *) nmdefptr, 0);

					if ( nmdefptr[0] == '^' )
						BEGIN(CARETISBOL);
					}

				else
					{
					unput(')');
					PUT_BACK_STRING((char *) nmdefptr, 0);
					unput('(');
					}
				}
			}
	YY_BREAK
case 107:
YY_RULE_SETUP
#line 469 "scan.l"
return (unsigned char) yytext[0];
	YY_BREAK
case 108:
YY_RULE_SETUP
#line 470 "scan.l"
RETURNCHAR;
	YY_BREAK


case 109:
YY_RULE_SETUP
#line 475 "scan.l"
return (unsigned char) yytext[0];
	YY_BREAK
case 110:
YY_RULE_SETUP
#line 476 "scan.l"
BEGIN(SECT2); return '>';
	YY_BREAK
case 111:
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
yy_c_buf_p = yy_cp = yy_bp + 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 477 "scan.l"
BEGIN(CARETISBOL); return '>';
	YY_BREAK
case 112:
YY_RULE_SETUP
#line 478 "scan.l"
RETURNNAME;
	YY_BREAK
case 113:
YY_RULE_SETUP
#line 479 "scan.l"
{
			format_synerr( _( "bad <start condition>: %s" ),
				yytext );
			}
	YY_BREAK

case 114:
YY_RULE_SETUP
#line 485 "scan.l"
BEGIN(SECT2); return '^';
	YY_BREAK

case 115:
YY_RULE_SETUP
#line 489 "scan.l"
RETURNCHAR;
	YY_BREAK
case 116:
YY_RULE_SETUP
#line 490 "scan.l"
BEGIN(SECT2); return '"';
	YY_BREAK
case 117:
YY_RULE_SETUP
#line 492 "scan.l"
{
			synerr( _( "missing quote" ) );
			BEGIN(SECT2);
			++linenum;
			return '"';
			}
	YY_BREAK


case 118:
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
yy_c_buf_p = yy_cp = yy_bp + 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 502 "scan.l"
BEGIN(CCL); return '^';
	YY_BREAK
case 119:
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
yy_c_buf_p = yy_cp = yy_bp + 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 503 "scan.l"
return '^';
	YY_BREAK
case 120:
YY_RULE_SETUP
#line 504 "scan.l"
BEGIN(CCL); RETURNCHAR;
	YY_BREAK


case 121:
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
yy_c_buf_p = yy_cp = yy_bp + 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 508 "scan.l"
return '-';
	YY_BREAK
case 122:
YY_RULE_SETUP
#line 509 "scan.l"
RETURNCHAR;
	YY_BREAK
case 123:
YY_RULE_SETUP
#line 510 "scan.l"
BEGIN(SECT2); return ']';
	YY_BREAK
case 124:
YY_RULE_SETUP
#line 511 "scan.l"
{
			synerr( _( "bad character class" ) );
			BEGIN(SECT2);
			return ']';
			}
	YY_BREAK


case 125:
YY_RULE_SETUP
#line 519 "scan.l"
BEGIN(CCL); return CCE_ALNUM;
	YY_BREAK
case 126:
YY_RULE_SETUP
#line 520 "scan.l"
BEGIN(CCL); return CCE_ALPHA;
	YY_BREAK
case 127:
YY_RULE_SETUP
#line 521 "scan.l"
BEGIN(CCL); return CCE_BLANK;
	YY_BREAK
case 128:
YY_RULE_SETUP
#line 522 "scan.l"
BEGIN(CCL); return CCE_CNTRL;
	YY_BREAK
case 129:
YY_RULE_SETUP
#line 523 "scan.l"
BEGIN(CCL); return CCE_DIGIT;
	YY_BREAK
case 130:
YY_RULE_SETUP
#line 524 "scan.l"
BEGIN(CCL); return CCE_GRAPH;
	YY_BREAK
case 131:
YY_RULE_SETUP
#line 525 "scan.l"
BEGIN(CCL); return CCE_LOWER;
	YY_BREAK
case 132:
YY_RULE_SETUP
#line 526 "scan.l"
BEGIN(CCL); return CCE_PRINT;
	YY_BREAK
case 133:
YY_RULE_SETUP
#line 527 "scan.l"
BEGIN(CCL); return CCE_PUNCT;
	YY_BREAK
case 134:
YY_RULE_SETUP
#line 528 "scan.l"
BEGIN(CCL); return CCE_SPACE;
	YY_BREAK
case 135:
YY_RULE_SETUP
#line 529 "scan.l"
BEGIN(CCL); return CCE_UPPER;
	YY_BREAK
case 136:
YY_RULE_SETUP
#line 530 "scan.l"
BEGIN(CCL); return CCE_XDIGIT;
	YY_BREAK
case 137:
YY_RULE_SETUP
#line 531 "scan.l"
{
			format_synerr(
				_( "bad character class expression: %s" ),
					yytext );
			BEGIN(CCL); return CCE_ALNUM;
			}
	YY_BREAK


case 138:
YY_RULE_SETUP
#line 540 "scan.l"
{
			yylval = myctoi( yytext );
			return NUMBER;
			}
	YY_BREAK
case 139:
YY_RULE_SETUP
#line 545 "scan.l"
return ',';
	YY_BREAK
case 140:
YY_RULE_SETUP
#line 546 "scan.l"
BEGIN(SECT2); return '}';
	YY_BREAK
case 141:
YY_RULE_SETUP
#line 548 "scan.l"
{
			synerr( _( "bad character inside {}'s" ) );
			BEGIN(SECT2);
			return '}';
			}
	YY_BREAK
case 142:
YY_RULE_SETUP
#line 554 "scan.l"
{
			synerr( _( "missing }" ) );
			BEGIN(SECT2);
			++linenum;
			return '}';
			}
	YY_BREAK


case 143:
YY_RULE_SETUP
#line 564 "scan.l"
bracelevel = 0;
	YY_BREAK
case 144:
YY_RULE_SETUP
#line 566 "scan.l"
ACTION_ECHO; yy_push_state( COMMENT );
	YY_BREAK

case 145:
YY_RULE_SETUP
#line 569 "scan.l"
{
			ACTION_ECHO;
			CHECK_REJECT(yytext);
			}
	YY_BREAK
case 146:
YY_RULE_SETUP
#line 573 "scan.l"
{
			ACTION_ECHO;
			CHECK_YYMORE(yytext);
			}
	YY_BREAK

case 147:
YY_RULE_SETUP
#line 579 "scan.l"
ACTION_ECHO;
	YY_BREAK
case 148:
YY_RULE_SETUP
#line 580 "scan.l"
{
			++linenum;
			ACTION_ECHO;
			if ( bracelevel == 0 ||
			     (doing_codeblock && indented_code) )
				{
				if ( doing_rule_action )
					add_action( "\tYY_BREAK\n" );

				doing_rule_action = doing_codeblock = false;
				BEGIN(SECT2);
				}
			}
	YY_BREAK

/* Reject and YYmore() are checked for above, in PERCENT_BRACE_ACTION */

case 149:
YY_RULE_SETUP
#line 598 "scan.l"
ACTION_ECHO; ++bracelevel;
	YY_BREAK
case 150:
YY_RULE_SETUP
#line 599 "scan.l"
ACTION_ECHO; --bracelevel;
	YY_BREAK
case 151:
YY_RULE_SETUP
#line 600 "scan.l"
ACTION_ECHO;
	YY_BREAK
case 152:
YY_RULE_SETUP
#line 601 "scan.l"
ACTION_ECHO;
	YY_BREAK
case 153:
YY_RULE_SETUP
#line 602 "scan.l"
ACTION_ECHO; /* character constant */
	YY_BREAK
case 154:
YY_RULE_SETUP
#line 603 "scan.l"
ACTION_ECHO; BEGIN(ACTION_STRING);
	YY_BREAK
case 155:
YY_RULE_SETUP
#line 604 "scan.l"
{
			++linenum;
			ACTION_ECHO;
			if ( bracelevel == 0 )
				{
				if ( doing_rule_action )
					add_action( "\tYY_BREAK\n" );

				doing_rule_action = false;
				BEGIN(SECT2);
				}
			}
	YY_BREAK
case 156:
YY_RULE_SETUP
#line 616 "scan.l"
ACTION_ECHO;
	YY_BREAK


case 157:
YY_RULE_SETUP
#line 620 "scan.l"
ACTION_ECHO;
	YY_BREAK
case 158:
YY_RULE_SETUP
#line 621 "scan.l"
ACTION_ECHO;
	YY_BREAK
case 159:
YY_RULE_SETUP
#line 622 "scan.l"
++linenum; ACTION_ECHO;
	YY_BREAK
case 160:
YY_RULE_SETUP
#line 623 "scan.l"
ACTION_ECHO; BEGIN(ACTION);
	YY_BREAK
case 161:
YY_RULE_SETUP
#line 624 "scan.l"
ACTION_ECHO;
	YY_BREAK

case YY_STATE_EOF(COMMENT):
case YY_STATE_EOF(ACTION):
case YY_STATE_EOF(ACTION_STRING):
#line 627 "scan.l"
{
			synerr( _( "EOF encountered inside an action" ) );
			yyterminate();
			}
	YY_BREAK
case 162:
YY_RULE_SETUP
#line 633 "scan.l"
{
			yylval = myesc( (Char *) yytext );

			if ( YY_START == FIRSTCCL )
				BEGIN(CCL);

			return CHAR;
			}
	YY_BREAK

case 163:
YY_RULE_SETUP
#line 644 "scan.l"
ECHO;
	YY_BREAK
case YY_STATE_EOF(SECT3):
#line 645 "scan.l"
sectnum = 0; yyterminate();
	YY_BREAK

case 164:
YY_RULE_SETUP
#line 648 "scan.l"
format_synerr( _( "bad character: %s" ), yytext );
	YY_BREAK
case 165:
YY_RULE_SETUP
#line 650 "scan.l"
YY_FATAL_ERROR( "flex scanner jammed" );
	YY_BREAK
#line 2736 "scan.c"
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(SECT2):
case YY_STATE_EOF(CODEBLOCK):
case YY_STATE_EOF(PICKUPDEF):
case YY_STATE_EOF(SC):
case YY_STATE_EOF(CARETISBOL):
case YY_STATE_EOF(NUM):
case YY_STATE_EOF(QUOTE):
case YY_STATE_EOF(FIRSTCCL):
case YY_STATE_EOF(CCL):
case YY_STATE_EOF(RECOVER):
case YY_STATE_EOF(PERCENT_BRACE_ACTION):
case YY_STATE_EOF(OPTION):
case YY_STATE_EOF(LINEDIR):
	yyterminate();

	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;
	yy_current_state += YY_AT_BOL();

	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 >= 769 )
				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 >= 769 )
			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 == 768);

	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;

	yy_current_buffer->yy_at_bol = (c == '\n');

	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 650 "scan.l"



int yywrap()
	{
	if ( --num_input_files > 0 )
		{
		set_input_file( *++input_files );
		return 0;
		}

	else
		return 1;
	}


/* set_input_file - open the given file (if NULL, stdin) for scanning */

void set_input_file( file )
char *file;
	{
	if ( file && strcmp( file, "-" ) )
		{
		infilename = copy_string( file );
		yyin = fopen( infilename, "r" );

		if ( yyin == NULL )
			lerrsf( _( "can't open %s" ), file );
		}

	else
		{
		yyin = stdin;
		infilename = copy_string( "<stdin>" );
		}

	linenum = 1;
	}


/* Wrapper routines for accessing the scanner's malloc routines. */

void *flex_alloc( size )
size_t size;
	{
	return (void *) malloc( size );
	}

void *flex_realloc( ptr, size )
void *ptr;
size_t size;
	{
	return (void *) realloc( ptr, size );
	}

void flex_free( ptr )
void *ptr;
	{
	if ( ptr )
		free( ptr );
	}
