Logo Search packages:      
Sourcecode: vcg version File versions  Download package

lex.yy.c

/* A lexical scanner generated by flex */

/* Scanner skeleton version:
 * $Header: flex.skl,v 1.2 94/01/04 14:33:15 vern Exp $
 */

#define FLEX_SCANNER

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

#ifdef __STDC__

#define YY_USE_PROTOS
#define YY_USE_CONST

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


#ifdef __TURBOC__
#define YY_USE_CONST
#endif


#ifndef YY_USE_CONST
#ifndef const
#define const
#endif
#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.
 */
#define YY_START ((yy_start - 1) / 2)

/* 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".  Now included
 * only for backward compatibility with previous versions of flex.
 */
#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;

#ifdef __cplusplus
extern "C" {
#endif
      extern int yywrap YY_PROTO(( void ));
#ifdef __cplusplus
      }
#endif

#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_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 )


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.
       */
      int yy_buf_size;

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

      /* 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 to try to fill the input buffer when we reach the
       * end of it.
       */
      int yy_fill_buffer;

      /* Whether we've seen an EOF on this buffer. */
      int yy_eof_status;
#define EOF_NOT_SEEN 0
      /* "Pending" happens when the EOF has been seen but there's still
       * some text to process.  Note that when we actually see the EOF,
       * we switch the status back to "not seen" (via yyrestart()), so
       * that the user can continue scanning by just pointing yyin at
       * a new input file.
       */
#define EOF_PENDING 1
      };

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;

static void yyunput YY_PROTO(( int c, char *buf_ptr ));
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 ));

static int yy_start_stack_ptr = 0;
static int yy_start_stack_depth = 0;
static int *yy_start_stack = 0;
static void yy_push_state YY_PROTO(( int new_state ));
static void yy_pop_state YY_PROTO(( void ));
static int yy_top_state YY_PROTO(( void ));

#ifndef yytext_ptr
static void yy_flex_strcpy YY_PROTO(( char *, const char * ));
#endif

static void *yy_flex_alloc YY_PROTO(( unsigned int ));
static void *yy_flex_realloc YY_PROTO(( void *ptr, unsigned int ));
static void yy_flex_free YY_PROTO(( void * ));

#define yy_new_buffer yy_create_buffer

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

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

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(( const 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 = yy_cp - yy_bp; \
      yy_hold_char = *yy_cp; \
      *yy_cp = '\0'; \
      yy_c_buf_p = yy_cp;

#define YY_END_OF_BUFFER 356
static const short int yy_accept[2052] =
    {   0,
        0,    0,  356,  354,  336,  337,  335,  354,  354,  354,
      350,  353,  354,  338,  346,  351,  352,  354,  354,  354,
      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
      354,  354,  354,  354,  354,  354,  354,  354,  347,  348,
      349,  344,  345,    0,    0,  335,    0,  341,    0,    0,
        0,    0,    0,    0,    0,    0,  338,    0,  343,    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,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,

        0,    0,    0,    0,    0,    0,    0,    0,    0,  237,
        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,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,  333,    0,    0,    0,
        0,  340,    0,    0,  343,    0,  339,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,   48,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,   84,    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,  151,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,  202,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,  255,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,  304,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,

        0,    0,    0,  327,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,  342,    0,    0,    0,    0,    0,
        0,    0,   32,    0,    0,    0,    0,   37,   38,    0,
        0,    0,    0,    0,    0,   59,   58,    0,    0,    0,
        0,   72,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,  106,
      116,    0,  120,    0,    0,  121,    0,    0,    0,  127,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,  180,    0,    0,    0,    0,  194,  197,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,

        0,    0,    0,    0,  222,    0,    0,    0,    0,  236,
        0,    0,    0,    0,    0,  244,    0,  247,  246,    0,
        0,    0,    0,    0,    0,  267,  266,    0,    0,    0,
      276,    0,    0,  271,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,  305,
        0,    0,    0,    0,    0,  314,    0,    0,    0,    0,
        0,  318,    0,    0,    0,    0,    0,  328,    0,    0,
        0,    0,  332,    0,    0,    0,    0,    0,    0,  339,
        1,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,   35,    0,    0,   36,    0,    0,    0,   53,

       56,    0,   62,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,   91,   92,
       93,    0,  101,  102,    0,    0,    0,  105,    0,    0,
        0,    0,    0,    0,    0,    0,    0,  119,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,  143,  144,  145,    0,    0,    0,    0,
      152,  155,    0,    0,    0,    0,    0,    0,    0,    0,
      181,    0,  192,  193,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,  231,  232,    0,    0,  233,    0,

        0,    0,    0,    0,  243,    0,    0,    0,    0,    0,
      254,  256,  265,    0,  269,    0,    0,    0,  278,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      297,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,  315,  316,  317,    0,    0,
        0,    0,    0,  324,    0,    0,    0,    0,    0,    0,
        0,    4,    0,    6,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,   34,    0,    0,
        0,   47,   52,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,   81,    0,    0,

        0,    0,    0,    0,   90,    0,    0,    0,    0,    0,
      103,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      104,  117,    0,  122,  128,    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,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,  208,    0,    0,    0,    0,  214,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,  238,  239,    0,    0,  245,    0,    0,    0,  253,

        0,    0,    0,    0,    0,    0,  270,    0,    0,    0,
        0,    0,  286,    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,
      322,  326,    0,    0,  331,    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,    0,    0,   57,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,   79,    0,
        0,    0,    0,    0,    0,    0,   94,    0,    0,    0,

        0,    0,    0,    0,    0,    0,    0,    0,  113,    0,
        0,    0,  118,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,  141,
        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,
        0,    0,    0,    0,    0,    0,    0,  203,    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,    0,    0,

      268,  277,    0,    0,    0,    0,    0,  281,    0,    0,
        0,  287,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,  299,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,  323,  319,    0,    0,  329,
        0,    0,  334,    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,    0,    0,    0,    0,    0,    0,    0,
        0,    0,   73,   74,   76,    0,   77,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,

        0,   99,    0,    0,    0,    0,    0,    0,    0,  115,
        0,    0,    0,    0,    0,    0,    0,    0,    0,  132,
        0,    0,    0,    0,    0,  150,  142,    0,    0,  148,
        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,
        0,    0,  190,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,  210,    0,    0,    0,    0,    0,  217,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,  252,    0,    0,    0,    0,

        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,  295,    0,    0,
      298,    0,    0,    0,    0,    0,  308,    0,    0,  311,
        0,    0,    0,  320,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    8,   18,
        0,    0,    0,    0,    0,   29,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
       55,    0,    0,    0,    0,    0,    0,    0,    0,   75,
        0,    0,    0,    0,   85,    0,    0,    0,    0,    0,
        0,  100,    0,    0,    0,    0,    0,    0,  110,  112,

      114,    0,    0,    0,    0,    0,  131,    0,    0,    0,
        0,  136,  138,    0,    0,    0,    0,  149,    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,  184,  185,  187,    0,  188,    0,
        0,    0,  196,    0,    0,    0,  200,    0,    0,  211,
        0,    0,    0,    0,    0,  218,    0,    0,    0,    0,
      224,  227,  225,    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,    0,    0,    0,  294,  293,  296,    0,
        0,  300,    0,    0,    0,  309,  310,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    5,    0,    0,    7,
       17,    0,    0,   14,    0,   16,   12,    0,   28,    0,
        0,    0,    0,   31,   33,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,   54,    0,   61,    0,
       65,    0,    0,    0,    0,    0,    0,    0,   80,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      108,  109,  111,    0,    0,    0,  125,    0,    0,  135,
      137,  134,    0,    0,    0,    0,    0,  154,    0,    0,

        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,  174,
        0,    0,  186,    0,    0,  195,  201,    0,    0,    0,
        0,    0,    0,    0,    0,    0,  215,    0,    0,    0,
        0,  223,  226,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,  280,    0,    0,    0,
        0,    0,    0,    0,  291,  292,  301,    0,    0,    0,
      307,    0,    0,    0,    0,  321,    0,  330,    0,    0,
       13,    0,   15,   11,   10,    0,    0,    0,    0,    0,

        0,   30,    0,    0,    0,    0,    0,   40,   42,    0,
        0,    0,   45,   60,   64,   63,    0,    0,    0,    0,
        0,    0,   78,    0,    0,    0,    0,    0,    0,    0,
        0,   95,    0,  107,    0,  123,  126,    0,    0,  133,
        0,    0,    0,    0,  153,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,  175,    0,    0,  172,    0,  178,    0,  191,
        0,    0,    0,    0,    0,    0,    0,  212,    0,  221,
        0,  219,    0,    0,    0,    0,    0,  228,  240,    0,
        0,    0,  248,    0,    0,    0,    0,    0,    0,    0,

      259,    0,  263,    0,    0,    0,    0,  279,    0,    0,
        0,  285,    0,    0,  290,    0,  302,  306,    0,    0,
        0,    0,  325,    0,    3,    9,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,   39,   41,    0,
        0,   44,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,   96,    0,    0,  124,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      173,    0,    0,  176,  189,    0,    0,    0,    0,    0,
        0,  209,  213,  216,  220,    0,  230,    0,    0,    0,

        0,  249,    0,    0,    0,  260,    0,    0,  257,    0,
        0,    0,    0,    0,    0,  283,  284,    0,    0,    0,
        0,    0,    0,    0,    2,    0,    0,    0,    0,    0,
        0,    0,   27,    0,    0,    0,   51,   43,   46,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,   97,    0,    0,    0,  140,    0,  147,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,  177,  179,    0,  198,    0,
        0,    0,    0,  229,    0,  234,    0,    0,    0,  250,
      258,    0,  264,  261,    0,    0,    0,    0,  282,    0,

      288,  303,    0,  312,    0,  182,    0,    0,    0,    0,
       26,    0,   21,   24,    0,   50,    0,    0,    0,    0,
       71,   67,    0,    0,    0,    0,    0,    0,   98,    0,
        0,  139,  146,    0,  156,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,  166,  199,
        0,  205,    0,  204,  235,    0,  242,  251,  262,    0,
        0,    0,    0,  289,  313,  183,    0,   25,    0,   20,
       23,   49,    0,   70,   66,    0,    0,    0,    0,   86,
        0,    0,    0,  129,    0,    0,    0,    0,    0,    0,
        0,  167,  159,    0,  161,    0,  163,    0,  207,  206,

      241,    0,  273,    0,  272,   19,   22,    0,    0,    0,
       83,    0,    0,    0,  130,  157,  158,    0,  160,    0,
      162,    0,  164,  168,    0,  275,  274,    0,    0,    0,
       87,    0,   88,  165,  169,    0,    0,    0,    0,   82,
        0,    0,  170,    0,    0,   89,  171,    0,   69,   68,
        0
    } ;

static const int yy_ec[256] =
    {   0,
        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
        1,    4,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    4,    1,    5,    6,    1,    1,    1,    7,    1,
        1,    8,    9,    1,   10,   11,   12,   13,   14,   15,
       16,   13,   13,   13,   13,   13,   13,   17,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,   18,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
       19,   20,   21,    1,   22,    1,   23,   24,   25,   26,

       27,   28,   29,   30,   31,   32,   33,   34,   35,   36,
       37,   38,   39,   40,   41,   42,   43,   44,   45,   46,
       47,   48,   49,    1,   50,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,

        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    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 const int yy_meta[51] =
    {   0,
        1,    1,    2,    1,    1,    1,    3,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    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 const short int yy_base[2062] =
    {   0,
        0,    0, 2185, 2186,   49, 2186,   50,   52,   71, 2164,
     2186,   45,   54,   54, 2186, 2186, 2186,   40,   55,   66,
       84,   84,   89,   34,   71,  105, 2153,  108,   68,  110,
       76,  120,  135,  142,  162, 2144,  105,   66,  147,  171,
     2186, 2186, 2186,  136,    0,  172,  139, 2186, 2178,    0,
      200,  215, 2149, 2139,   97,  146,  210, 2170,    0,  222,
     2140, 2151, 2132,   85,  143,  160,   40, 2151,  110, 2137,
     2141,  184,  138,  167, 2134, 2147,  193, 2131, 2127,  204,
     2125, 2137, 2131, 2121, 2136, 2134,  164,  206, 2133, 2133,
     2125,  181, 2127,  217, 2117, 2119, 2119,  225, 2123, 2130,

      217,  147,  220,  223,  229, 2126, 2115, 2115,  229,  235,
      247, 2107, 2117, 2111, 2123,  243, 2105, 2113, 2103, 2106,
     2115, 2103, 2110,  250, 2115,  239, 2089, 2113,  242,  243,
      257, 2095, 2088, 2102, 2090, 2093,  255, 2090, 2091, 2090,
     2087, 2099, 2094, 2098, 2100,  247, 2099, 2098,  264, 2097,
      250, 2096, 2095,  265,  289,  296,  290,  291,  310, 2081,
     2093, 2186, 2107,  296,    0,  303,  314, 2070, 2083, 2089,
     2068, 2073, 2076, 2061, 2076, 2069, 2063, 2079, 2076, 2056,
     2075, 2058, 2186, 2057, 2057, 2056, 2055, 2049, 2058, 2056,
      264, 2051, 2055, 2057, 2059, 2046, 2186, 2060, 2044, 2047,

     2042, 2056, 2051, 2058, 2040, 2048, 2051, 2050, 2050, 2033,
     2043, 2046, 2046,  284,  310, 2042,  283, 2040, 2038, 2032,
     2030, 2038, 2031, 2027, 2020, 2035, 2030, 2186, 2027, 2032,
     2031, 2020, 2014, 2028, 2024, 2030, 2021, 2024, 2033,  312,
     2022,  277,  309, 2017,  312, 2020, 2006, 2016, 2008, 2016,
     2015, 2005, 2010, 2012, 2000, 1996, 2003, 1999, 1988, 1997,
     1990, 1994, 1992, 2000, 2186, 1993, 1997, 1980, 1989, 1990,
     1985, 1991, 1994,  308, 1989, 1979, 1987, 1990, 1974,  318,
     1986, 1972, 1988, 1978,  326, 1984, 1987, 1970, 1981, 1980,
     1964, 1960, 1962, 1961, 1961, 1978, 1962, 1953, 1957, 1957,

     1973, 1954, 1960, 2186, 1947, 1951, 1951, 1967,  345, 1986,
     1985, 1960, 1957, 1977, 2186,  360, 1957, 1946, 1947, 1945,
     1935,  329,  337, 1943, 1933,  341, 1944, 2186, 2186, 1949,
     1938, 1947, 1943, 1931, 1929, 2186, 2186, 1930, 1927, 1937,
     1926, 2186,  354, 1939, 1935, 1928, 1916, 1928, 1934,  347,
     1922, 1925, 1911, 1916,  338, 1930,  359,  349, 1914, 2186,
     2186, 1924, 2186, 1911, 1916, 2186, 1921, 1923,  102,  331,
     1901,  369, 1908, 1907, 1903,  388, 1903, 1904, 1902, 1911,
     1907,  360, 1897,  376, 1905, 1896, 1912, 1894,  374, 2186,
     1900, 1894, 1910, 1896, 1908, 1907, 1902, 1892, 1884, 1903,

     1902, 1897, 1887, 1879, 2186,  378, 1891, 1893,  405, 1896,
     1889, 1886, 1880, 1872, 1884, 2186, 1890, 2186, 2186,  384,
     1872, 1877, 1883, 1885, 1866, 2186, 2186, 1876, 1879, 1869,
     2186, 1870, 1873, 2186, 1876, 1876, 1864, 1876, 1855, 1866,
     1854, 1868,  395, 1861, 1866,  391, 1869, 1854, 1853,  385,
     1853, 1845,  387, 1847, 1855, 2186, 1858, 1854, 1856, 1841,
     1858, 2186, 1838, 1842, 1853, 1850, 1839, 2186, 1833, 1837,
     1848, 1869, 2186,  427, 1836, 1862,  426,  434,  441,  445,
     2186, 1829, 1845, 1841,  440,  412, 1826, 1839, 1839, 1836,
     1835, 1835, 2186, 1824, 1832, 2186, 1818, 1822, 1816, 2186,

      430, 1828,  441, 1814, 1817, 1821, 1817, 1803, 1809, 1825,
     1820, 1819, 1819,  445, 1803,  442, 1820, 1816, 2186, 2186,
     2186, 1800,  449, 2186, 1810, 1797, 1795, 2186,  357, 1811,
     1800, 1798, 1798, 1810, 1802, 1814, 1803, 2186, 1787, 1792,
     1786, 1795, 1790, 1801, 1786,  449, 1791, 1794, 1778, 1788,
     1791, 1780, 1790, 2186, 2186, 2186, 1792,  450, 1770, 1782,
     2186,  458, 1785, 1785, 1768,  456, 1766, 1785, 1780, 1769,
     2186,  471, 2186, 2186, 1764, 1762, 1780,  471, 1762, 1759,
     1758, 1765,  407, 1772, 1755, 1760, 1770,  470, 1768, 1751,
     1765, 1765, 1766, 1766, 2186, 2186, 1765, 1753, 2186, 1746,

     1758, 1758, 1741, 1740, 2186, 1741, 1739, 1749, 1747, 1750,
     2186, 2186,  480, 1740, 2186, 1742, 1747, 1750, 2186, 1745,
     1744, 1744, 1728, 1739, 1742, 1724,  451, 1728, 1727, 1727,
     2186, 1739, 1724, 1723, 1719, 1718, 1733, 1728, 1732, 1725,
     1716, 1716, 1728,  481, 1725, 2186, 2186, 2186, 1707, 1723,
     1720, 1712, 1718, 2186, 1699, 1716, 1708, 1714,  517, 1717,
      510,  475, 1699, 2186,  504, 1701, 1710, 1699,   46, 1704,
     1694, 1707, 1692, 1702, 1703, 1693, 1702, 2186, 1700, 1703,
      513,  506, 2186, 1689, 1701, 1683, 1695, 1685, 1697, 1676,
     1682, 1674, 1693,  478, 1686, 1688, 1679, 2186, 1684, 1680,

     1679, 1682, 1682, 1660, 2186, 1679,  512, 1668, 1667, 1666,
     2186, 1659, 1665, 1674, 1662, 1669, 1668, 1670, 1672, 1659,
     2186, 2186, 1653, 2186, 2186, 1661, 1655, 1667, 1649, 1652,
     1640,  137,  144,  166,  188,  220,  274,  329,  514,  356,
      392,  386,  425,  439,  461,  480,  484,  473,  488,  491,
      537,  497,  519,  516,  507,  505,  507,  520,  513,  520,
      509,  517,  538,  535,  537,  524,  520,  528,  533,  543,
      542,  549,  532, 2186,  536,  535,  552,  555,  558,  550,
      544,  543,  559,  561,  562,  560,  553,  551,  558,  562,
      567, 2186, 2186,  572,  574, 2186,  567,  575,  557, 2186,

      568,  558,  582,  579,  570,  579, 2186,  569,  569,  590,
      591,  593, 2186,  584,  586,  595,  581,  583,  587,  596,
      596,  584,  585,  606,  600,  588,  596,  611,  610,  602,
      606,  615,  604,  604,  614,  619,  616,  617,  605,  612,
     2186,  618,  608,  615, 2186,  647,  613,  615,  622,  617,
      628,  619,  626,  627,  625,  629,  635,  614,  616,  638,
      625,  637,  630,  642,  634,  629,  641,  650,  634,  650,
      639,  646,  643,  656,  643,  658,  647, 2186,  647,  642,
      655,  650,  659,  662,  654,  644,  665,  666, 2186,  660,
      665,  657,  661,  673,  671,  679, 2186,  665,  666,  667,

      671,  666,  663,  673,  679,  682,  687,  687, 2186,  688,
      681,  690, 2186,  682,  690,  680,  692,  680,  689,  693,
      678,  700,  700,  699,  695,  688,  690,  701,  691, 2186,
      707,  692,  700,  703,  704,  702,  706,  712,  715,  720,
      710,  708,  707,  722,  727,  713,  714,  712,  714,  724,
      735,  717,  731,  733,  733,  722,  743,  744,  739,  743,
      736,  725,  739,  745,  748,  745,  746, 2186,  755,  752,
      750,  752,  756,  761,  740,  759,  757,  759,  762,  761,
      764,  752,  771,  763,  766,  770,  755,  771,  757,  778,
      762,  756,  761,  782,  779,  770,  767,  769,  779,  777,

     2186, 2186,  770,  777,  791,  787,  793, 2186,  783,  791,
      777, 2186,  784,  798,  788,  797,  787,  798,  785,  798,
      786,  805,  799, 2186,  789,  807,  791,  807,  794,  801,
      810,  811,  808,  806,  801, 2186, 2186,  818,  803, 2186,
      820,  842, 2186,  809,  816,  812,  815,  819,  825,  804,
      806,  828,  818,  827,  830,  831,  825,  818,  824,  835,
      818,  847,  823,  839,  844,  828,  842,  833,  840,  838,
      847,  851,  838,  836,  835,  843,  852,  838,  841,  846,
      840,  862, 2186, 2186, 2186,  849, 2186,  850,  850,  848,
      848,  854,  862,  865,  866,  868,  861,  855,  852,  855,

      870, 2186,  871,  867,  877,  878,  895,  897,  882, 2186,
      881,  877,  883,  882,  891,  888,  887,  883,  876, 2186,
      889,  893,  891,  891,  887, 2186, 2186,  888,  900, 2186,
      899,  893,  891,  902,  896,  897,  895,  893,  907,  912,
      898,  899,  909,  894,  913,  918,  902,  909,  916,  903,
      917,  918,  908,  918,  919,  921,  923,  926,  918,  908,
      929,  930, 2186,  924,  925,  933,  930,  931,  934,  928,
      929,  930,  940,  927,  929,  941,  931,  949,  946,  933,
      935,  948,  951,  962,  939,  954,  956,  954,  948,  956,
      955,  944,  952,  949,  959,  969,  951,  953,  963,  973,

      954,  968,  969,  972,  977,  978,  967,  982,  981,  981,
      965,  988,  988,  977,  976,  987,  975, 2186,  975,  986,
     2186,  981,  983,  978,  979,  985, 2186,  996,  997, 2186,
      994,  998, 1006, 2186, 1006, 1003, 1008, 1001,  997, 1007,
      998, 1007, 1010, 1011, 1005,  998, 1001, 1012, 2186, 2186,
     1017, 1015, 1001, 1030, 1026, 2186, 1022, 1010, 1016, 1031,
     1028, 1021, 1030, 1020, 1017, 1020, 1039, 1033, 1026, 1037,
     2186, 1025, 1019, 1026, 1028, 1033, 1034, 1043, 1047, 2186,
     1033, 1031, 1036, 1037, 2186, 1053, 1047, 1056, 1054, 1041,
     1054, 2186, 1051, 1045, 1052, 1060, 1079, 1080, 2186, 2186,

     2186, 1058, 1066, 1063, 1059, 1062, 2186, 1067, 1071, 1069,
     1058, 2186, 2186, 1065, 1073, 1078, 1062, 2186, 1068, 1066,
     1085, 1085, 1080, 1065, 1084, 1089, 1073, 1080, 1087, 1079,
     1081, 1079, 1079, 1097, 1090, 1099, 1092, 1093, 1095, 1095,
     1099, 1092, 1105, 1100, 2186, 2186, 2186, 1095, 2186, 1096,
     1096, 1107, 2186, 1099, 1107, 1107, 2186, 1116, 1117, 2186,
     1106, 1114, 1102, 1098, 1106, 2186, 1113, 1121, 1109, 1133,
     2186, 2186, 2186, 1125, 1123, 1117, 1119, 1128, 1119, 1121,
     1133, 1128, 1124, 1123, 1132, 1121, 1135, 1136, 1132, 1136,
     1137, 1139, 1142, 1135, 1136, 1138, 1148, 1151, 1135, 1134,

     1152, 1142, 1151, 1147, 1156, 1144, 2186, 2186, 2186, 1149,
     1144, 2186, 1150, 1151, 1149, 2186, 2186, 1161, 1161, 1155,
     1153, 1154, 1168, 1156, 1161, 1156, 2186, 1159, 1170, 2186,
     2186, 1174, 1172, 2186, 1161, 2186, 2186, 1182, 2186, 1180,
     1169, 1176, 1168, 2186, 2186, 1182, 1184, 1182, 1175, 1171,
     1174, 1185, 1187, 1175, 1188, 1182, 2186, 1175, 2186, 1206,
     2186, 1186, 1195, 1199, 1185, 1205, 1198, 1207, 2186, 1189,
     1191, 1211, 1211, 1206, 1209, 1202, 1196, 1203, 1209, 1212,
     2186, 2186, 2186, 1215, 1202, 1208, 2186, 1223, 1204, 2186,
     2186, 2186, 1219, 1215, 1208, 1220, 1212, 2186, 1219, 1230,

     1218, 1220, 1218, 1218, 1236, 1230, 1239, 1223, 1236, 1222,
     1238, 1232, 1232, 1244, 1242, 1235, 1248, 1244, 1227, 2186,
     1238, 1234, 2186, 1235, 1233, 2186, 2186, 1249, 1256, 1254,
     1256, 1256, 1258, 1248, 1259, 1260, 2186, 1262, 1252, 1263,
     1264, 2186, 2186, 1263, 1266, 1259, 1268, 1255, 1261, 1273,
     1257, 1264, 1272, 1272, 1280, 1273, 1274, 1276, 1280, 1280,
     1273, 1286, 1269, 1290, 1291, 1287, 2186, 1273, 1279, 1292,
     1286, 1291, 1299, 1296, 2186, 2186, 2186, 1282, 1290, 1286,
     2186, 1297, 1304, 1289, 1304, 2186, 1295, 2186, 1290, 1292,
     2186, 1292, 2186, 2186, 2186, 1310, 1299, 1306, 1304, 1291,

     1293, 2186, 1315, 1313, 1316, 1304, 1315, 2186, 2186, 1315,
     1310, 1313, 2186, 2186, 2186, 2186, 1308, 1329, 1322, 1323,
     1314, 1327, 2186, 1335, 1331, 1325, 1336, 1334, 1328, 1327,
     1333, 2186, 1328, 2186, 1325, 2186, 2186, 1330, 1328, 2186,
     1335, 1343, 1340, 1335, 2186, 1350, 1347, 1335, 1348, 1334,
     1350, 1344, 1344, 1356, 1351, 1360, 1357, 1362, 1359, 1360,
     1346, 1342, 2186, 1353, 1361, 2186, 1352, 2186, 1370, 2186,
     1370, 1358, 1370, 1368, 1372, 1370, 1355, 2186, 1374, 2186,
     1357, 2186, 1376, 1377, 1364, 1379, 1371, 2186, 2186, 1366,
     1378, 1381, 2186, 1388, 1371, 1385, 1378, 1391, 1388, 1370,

     2186, 1381, 2186, 1392, 1394, 1394, 1396, 2186, 1386, 1384,
     1391, 2186, 1403, 1386, 2186, 1391, 2186, 2186, 1405, 1393,
     1405, 1405, 2186, 1392, 2186, 2186, 1397, 1404, 1402, 1389,
     1391, 1402, 1413, 1407, 1413, 1416, 1427, 2186, 2186, 1409,
     1409, 2186, 1417, 1408, 1421, 1416, 1425, 1423, 1413, 1432,
     1433, 1430, 1436, 1436, 2186, 1423, 1425, 2186, 1422, 1437,
     1437, 1424, 1429, 1431, 1444, 1435, 1439, 1448, 1445, 1450,
     1447, 1448, 1434, 1435, 1453, 1443, 1455, 1439, 1454, 1446,
     2186, 1444, 1443, 2186, 2186, 1449, 1447, 1459, 1462, 1461,
     1464, 2186, 2186, 2186, 2186, 1451, 2186, 1457, 1452, 1464,

     1459, 2186, 1456, 1471, 1452, 2186, 1463, 1459, 2186, 1462,
     1477, 1475, 1479, 1477, 1467, 2186, 2186, 1467, 1482, 1475,
     1474, 1472, 1486, 1474, 2186, 1481, 1468, 1470, 1481, 1492,
     1486, 1481, 2186, 1495, 1496, 1507, 2186, 2186, 2186, 1490,
     1499, 1497, 1497, 1514, 1488, 1504, 1492, 1509, 1500, 1501,
     1512, 1501, 2186, 1512, 1512, 1499, 2186, 1505, 2186, 1515,
     1502, 1502, 1520, 1510, 1522, 1506, 1521, 1513, 1521, 1510,
     1528, 1512, 1528, 1533, 1517, 2186, 2186, 1518, 2186, 1532,
     1519, 1534, 1521, 2186, 1521, 2186, 1527, 1529, 1539, 2186,
     2186, 1527, 2186, 2186, 1539, 1542, 1541, 1544, 2186, 1545,

     2186, 2186, 1533, 2186, 1534, 2186, 1538, 1549, 1543, 1538,
     2186, 1552, 2186, 2186, 1563, 2186, 1550, 1567, 1541, 1536,
     2186, 2186, 1562, 1561, 1560, 1547, 1566, 1563, 2186, 1564,
     1552, 2186, 2186, 1559, 2186, 1564, 1553, 1571, 1555, 1571,
     1576, 1560, 1566, 1565, 1556, 1567, 1565, 1581, 2186, 2186,
     1566, 2186, 1567, 2186, 2186, 1573, 2186, 2186, 2186, 1583,
     1570, 1585, 1572, 2186, 2186, 2186, 1574, 2186, 1588, 2186,
     2186, 2186, 1568, 2186, 2186, 1594, 1578, 1589, 1586, 2186,
     1597, 1588, 1583, 2186, 1583, 1590, 1589, 1580, 1591, 1589,
     1605, 2186, 2186, 1591, 2186, 1592, 2186, 1591, 2186, 2186,

     2186, 1593, 2186, 1594, 2186, 2186, 2186, 1613, 1595, 1613,
     2186, 1598, 1613, 1600, 2186, 2186, 2186, 1602, 2186, 1603,
     2186, 1602, 2186, 2186, 1608, 2186, 2186, 1604, 1616, 1618,
     2186, 1615, 2186, 2186, 2186, 1613, 1611, 1621, 1616, 2186,
     1613, 1615, 2186, 1619, 1621, 2186, 2186, 1622, 2186, 2186,
     2186, 1658, 1661, 1663, 1666, 1669, 1672, 1675, 1678, 1681,
     1684
    } ;

static const short int yy_def[2062] =
    {   0,
     2051,    1, 2051, 2051, 2051, 2051, 2051, 2052, 2051, 2053,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051,    9, 2051, 2052, 2051, 2052,    9,
     2051, 2054, 2051, 2051, 2053, 2053, 2051, 2055, 2056, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,

     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2054, 2054, 2054, 2057, 2054, 2051,
     2051, 2051, 2055, 2058, 2056, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,

     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,

     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2057, 2059,
     2057, 2051, 2051, 2060, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,

     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2059, 2051, 2051, 2051, 2060, 2058, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,

     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,

     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,

     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,

     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2061, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,

     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,

     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2061, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,

     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,

     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,

     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,

     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,

     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,

     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,

     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,

     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,

     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,

     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
        0, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051
    } ;

static const short int yy_nxt[2237] =
    {   0,
        4,    5,    6,    7,    8,    9,   10,   11,    4,   12,
        4,   13,   14,   14,   14,   14,   15,    4,   16,    4,
       17,    4,   18,   19,   20,   21,   22,   23,   24,   25,
       26,    4,   27,   28,   29,   30,   31,   32,    4,   33,
       34,   35,   36,   37,   38,   39,   40,   41,   42,   43,
       44,   44,   44,   46,   45,   45,   48,   57,   57,   57,
       57,   58,  178,   61,   60,   59,   57,   57,   57,   57,
       91,   49,   50,   92,   50,   62,  858,   65,   63,   64,
       51,   66,  179,   52,   52,   52,   52,  859,   67,   68,
      105,   69,   70,   71,  106,  143,  144,   93,  107,   72,

       73,   94,   74,  162,   53,   75,   77,   95,   54,   82,
       78,   79,   76,   86,   80,  111,   56,   83,  112,   87,
       81,  171,   84,  541,  172,   88,   89,   85,   90,   96,
      101,  141,  108,   97,  102,  142,  109,   44,  103,   44,
       98,   45,  542,   48,  104,   99,  110,  113, 2051,  181,
      114,  182,   55,  115,  116,  183,  117,  120,   49,  118,
      188,  121,  119,  920,  122,  123,  125,  173,  189,  124,
      145,  126,  127,   44,  233,   46,  128,   45,  129,  130,
      146,  147,  174,  131,  132,  921,  148,  149,  133,  175,
      234,  134,  135,  176,  150,  177,  922,  151,  136,  207,

      190,  137,  191,  214,  138,  152,  186,  215,  139,  208,
      153,  154,   52,   52,   52,   52,  156,  157,  156,  158,
       60,  923,   57,   57,   57,   57,  187,  159,  159,  159,
      159,  166,  194,  195,  167,  167,  167,  167,  198,  209,
      230,  210,  217,  199,  200,  218,  222,  239,  235,  223,
      924,  247,  224,  236,  237,  238,  249,  241,  231,  248,
      250,  271,  225,  232,  242,  259,  226,  240,  227,  252,
      251,  253,  268,  260,  243,  275,  277,  254,  272,  279,
      269,  286,  278,  303,  276,  287,  296,  297,  300,  307,
      304,  157,  157, 2051, 2051,  310,  280,  156,  157,  156,

      158,  301,  308,  164,  339,  340,  395,  315,  368,  369,
      311,  156,  157,  156,  158,  167,  167,  167,  167,  396,
      925,  362,  159,  159,  159,  159,  167,  167,  167,  167,
      363,  316,  364,  391,  397,  401,  365,  402,  392,  398,
      440,  432,  403,  433,  441,  399,  393,  446,  404,  310,
      486,  487,  543,  434,  926,  488,  366,  519,  489,  526,
      447,  490,  494,  520,  311,  544,  448,  449,  478,  479,
      533,  491,  480,  480,  480,  480,  495,  507,  508,  527,
      529,  563,  509,  714,  534,  530,  564,  521,  510,  531,
      546,  929,  715,  511,  532,  575,  547,  566,  548,  591,

      512,  554,  555,  556,  592,  607,  638,  567,  642,  549,
      568,  569,  639,  550,  576,  595,  627,  570,  930,  628,
      931,  596,  643,  557,  608,  632,  597,  598,  659,  629,
      659,  633,  634,  477,  671,  775,   51,  315,  672,   52,
       52,   52,   52,  661,  776,  599,  480,  480,  480,  480,
      661,  684,  932,  480,  480,  480,  480,  480,  480,  480,
      480,  665,  687,  702,  666,  685,  699,  688,  703,  667,
      707,  743,  700,  708,  668,  817,  731,  744,  732,  747,
      669,  933,  748,  934,  670,  818,  709,  752,  710,  733,
      753,  754,  769,  734,  760,  761,  847,  755,  781,  762,

      886,  801,  834,  935,  887,  763,  770,  782,  936,  937,
      764,  802,  848,  938,  803,  804,  835,  765,  659,  939,
      659,  805,  480,  480,  480,  480,   51,  873,  850,   52,
       52,   52,   52,  851,  870,  927,  898,  871,  852,  948,
      874,  949,  950,  951,  853,  952,  953,  875,  854,  899,
      954,  900,  955,  956,  928,  957,  958,  872,  940,  941,
      959,  960,  942,  961,  943,  962,  963,  964,  965,  966,
      967,  968,  944,  969,  945,  970,  971,  946,  972,  947,
      973,  974,  975,  976,  977,  978,  979,  980,  981,  982,
      983,  984,  985,  986,  987,  988,  990,  991,  992,  993,

      997,  989,  994,  995,  998,  999, 1000, 1001, 1002,  996,
     1003, 1004, 1006, 1011, 1009, 1012, 1013, 1015, 1007, 1016,
     1017, 1018, 1019, 1020, 1021, 1005, 1010, 1022, 1023, 1024,
     1014, 1008, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032,
     1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1043,
     1044, 1045, 1046, 1047, 1048, 1049, 1050, 1052, 1053, 1054,
     1055, 1056, 1057, 1058, 1059, 1060, 1061, 1051, 1062, 1063,
     1064, 1065, 1066, 1067, 1068, 1070, 1071, 1072, 1074, 1075,
     1076, 1077, 1078, 1079, 1073, 1080, 1081, 1082, 1083, 1084,
     1085, 1086, 1088, 1089, 1069, 1090, 1091, 1092, 1093, 1094,

     1095, 1097, 1098, 1099, 1100, 1096, 1101, 1102, 1103, 1104,
     1105, 1087, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113,
     1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123,
     1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133,
     1134, 1135, 1136, 1143, 1144, 1137, 1145, 1138, 1146, 1147,
     1148, 1149, 1150, 1151, 1152, 1139, 1153, 1140, 1154, 1155,
     1141, 1156, 1142, 1157, 1158, 1159, 1160, 1162, 1163, 1164,
     1161, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1173, 1174,
     1175, 1172, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183,
     1184, 1185, 1186, 1188, 1189, 1190, 1191, 1187, 1192, 1193,

     1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203,
     1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213,
     1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223,
     1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233,
     1234, 1235, 1236, 1237, 1043, 1238, 1239, 1240, 1241, 1242,
     1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252,
     1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262,
     1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272,
     1273, 1274, 1275, 1276, 1280, 1281, 1282, 1283, 1284, 1285,
     1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1277, 1278,

     1294, 1295, 1296, 1297, 1298, 1299, 1279, 1300, 1301, 1302,
     1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312,
     1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322,
     1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332,
     1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342,
     1343, 1344, 1345, 1346, 1347, 1348, 1350, 1351, 1352, 1353,
     1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363,
     1364, 1365, 1366, 1367, 1368, 1349, 1369, 1370, 1371, 1373,
     1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383,
     1384, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394,

     1396, 1397, 1372, 1395, 1398, 1399, 1385, 1400, 1401, 1402,
     1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413,
     1414, 1415, 1416, 1417, 1418, 1403, 1419, 1420, 1422, 1423,
     1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433,
     1434, 1435, 1421, 1436, 1437, 1438, 1439, 1440, 1443, 1444,
     1441, 1445, 1446, 1448, 1449, 1450, 1451, 1447, 1452, 1453,
     1454, 1455, 1456, 1457, 1458, 1459, 1442, 1460, 1461, 1462,
     1463, 1465, 1466, 1467, 1468, 1469, 1470, 1464, 1471, 1472,
     1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482,
     1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492,

     1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502,
     1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512,
     1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522,
     1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1532, 1534,
     1535, 1536, 1531, 1533, 1537, 1538, 1539, 1540, 1541, 1542,
     1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553,
     1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563,
     1564, 1565, 1566, 1543, 1567, 1568, 1569, 1570, 1571, 1572,
     1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582,
     1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592,

     1593, 1594, 1595, 1596, 1597, 1599, 1600, 1602, 1603, 1604,
     1605, 1606, 1607, 1608, 1609, 1610, 1611, 1601, 1612, 1613,
     1598, 1614, 1615, 1617, 1618, 1619, 1620, 1621, 1622, 1623,
     1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633,
     1634, 1635, 1636, 1637, 1638, 1640, 1616, 1641, 1642, 1643,
     1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1639,
     1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662,
     1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672,
     1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682,
     1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692,

     1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702,
     1703, 1704, 1706, 1708, 1709, 1710, 1705, 1707, 1711, 1712,
     1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722,
     1723, 1724, 1725, 1726, 1727, 1729, 1730, 1732, 1733, 1734,
     1735, 1736, 1737, 1738, 1739, 1740, 1741, 1731, 1742, 1743,
     1728, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752,
     1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762,
     1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772,
     1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782,
     1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792,

     1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802,
     1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812,
     1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822,
     1823, 1824, 1825, 1826, 1827, 1829, 1830, 1831, 1832, 1833,
     1834, 1835, 1836, 1837, 1838, 1828, 1839, 1840, 1841, 1842,
     1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852,
     1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862,
     1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872,
     1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882,
     1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892,

     1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902,
     1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912,
     1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922,
     1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932,
     1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942,
     1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952,
     1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962,
     1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972,
     1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982,
     1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992,

     1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
     2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012,
     2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022,
     2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032,
     2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042,
     2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050,   47,   47,
       47,   55,   55,  155,  155,  155,  163,  163,  163,  165,
      919,  165,  309,  309,  309,  314,  314,  314,  472,  472,
      472,  476,  476,  476, 1042, 1042, 1042,  918,  917,  916,
      915,  914,  913,  912,  911,  910,  909,  908,  907,  906,

      905,  904,  903,  902,  901,  897,  896,  895,  894,  893,
      892,  891,  890,  889,  888,  885,  884,  883,  882,  881,
      880,  879,  878,  877,  876,  869,  868,  867,  866,  865,
      864,  863,  862,  861,  860,  857,  856,  855,  849,  846,
      845,  844,  843,  842,  841,  840,  839,  838,  837,  836,
      833,  832,  831,  830,  829,  828,  827,  826,  825,  824,
      823,  822,  821,  820,  819,  816,  815,  814,  813,  812,
      811,  810,  809,  808,  807,  806,  800,  799,  798,  797,
      796,  795,  794,  793,  792,  791,  790,  789,  788,  787,
      786,  785,  784,  783,  780,  779,  778,  777,  774,  773,

      772,  771,  768,  767,  766,  759,  758,  757,  756,  751,
      750,  749,  746,  745,  742,  741,  740,  739,  738,  737,
      736,  735,  730,  729,  728,  727,  726,  725,  724,  723,
      722,  721,  720,  719,  718,  717,  716,  713,  712,  711,
      706,  705,  704,  701,  698,  697,  696,  695,  694,  693,
      692,  691,  690,  689,  686,  683,  682,  681,  680,  679,
      678,  677,  676,  675,  674,  673,  664,  663,  662,  477,
      660,  473,  658,  657,  656,  655,  654,  653,  652,  651,
      650,  649,  648,  647,  646,  645,  644,  641,  640,  637,
      636,  635,  631,  630,  626,  625,  624,  623,  622,  621,

      620,  619,  618,  617,  616,  615,  614,  613,  612,  611,
      610,  609,  606,  605,  604,  603,  602,  601,  600,  594,
      593,  590,  589,  588,  587,  586,  585,  584,  583,  582,
      581,  580,  579,  578,  577,  574,  573,  572,  571,  565,
      562,  561,  560,  559,  558,  553,  552,  551,  545,  540,
      539,  538,  537,  536,  535,  528,  525,  524,  523,  522,
      518,  517,  516,  515,  514,  513,  506,  505,  504,  503,
      502,  501,  500,  499,  498,  497,  496,  493,  492,  485,
      484,  483,  482,  481,  477,  475,  474, 2051,  473,  471,
      470,  469,  468,  467,  466,  465,  464,  463,  462,  461,

      460,  459,  458,  457,  456,  455,  454,  453,  452,  451,
      450,  445,  444,  443,  442,  439,  438,  437,  436,  435,
      431,  430,  429,  428,  427,  426,  425,  424,  423,  422,
      421,  420,  419,  418,  417,  416,  415,  414,  413,  412,
      411,  410,  409,  408,  407,  406,  405,  400,  394,  390,
      389,  388,  387,  386,  385,  384,  383,  382,  381,  380,
      379,  378,  377,  376,  375,  374,  373,  372,  371,  370,
      367,  361,  360,  359,  358,  357,  356,  355,  354,  353,
      352,  351,  350,  349,  348,  347,  346,  345,  344,  343,
      342,  341,  338,  337,  336,  335,  334,  333,  332,  331,

      330,  329,  328,  327,  326,  325,  324,  323,  322,  321,
      320,  319,  318,  317,  164,  313,  312,  306,  305,  302,
      299,  298,  295,  294,  293,  292,  291,  290,  289,  288,
      285,  284,  283,  282,  281,  274,  273,  270,  267,  266,
      265,  264,  263,  262,  261,  258,  257,  256,  255,  246,
      245,  244,  229,  228,  221,  220,  219,  216,  213,  212,
      211,  206,  205,  204,  203,  202,  201,  197,  196,  193,
      192,  185,  184,  180,  170,  169,  168,  164,  161,  160,
     2051,  140,  100,   56, 2051,    3, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,

     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051
    } ;

static const short int yy_chk[2237] =
    {   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,
        5,    7,    5,    7,    5,    7,    8,   12,   12,   12,
       12,   13,   67,   18,   14,   13,   14,   14,   14,   14,
       24,    8,    9,   24,    9,   18,  669,   19,   18,   18,
        9,   19,   67,    9,    9,    9,    9,  669,   19,   19,
       29,   19,   20,   20,   29,   38,   38,   25,   29,   20,

       20,   25,   20,   55,    9,   20,   21,   25,    9,   22,
       21,   21,   20,   23,   21,   31,   55,   22,   31,   23,
       21,   64,   22,  369,   64,   23,   23,   22,   23,   26,
       28,   37,   30,   26,   28,   37,   30,   44,   28,   44,
       26,   44,  369,   47,   28,   26,   30,   32,   56,   69,
       32,   69,   56,   32,   32,   69,   32,   33,   47,   32,
       73,   33,   32,  732,   33,   33,   34,   65,   73,   33,
       39,   34,   34,   46,  102,   46,   34,   46,   34,   34,
       39,   39,   65,   34,   35,  733,   39,   39,   35,   66,
      102,   35,   35,   66,   40,   66,  734,   40,   35,   87,

       74,   35,   74,   92,   35,   40,   72,   92,   35,   87,
       40,   40,   51,   51,   51,   51,   52,   52,   52,   52,
       57,  735,   57,   57,   57,   57,   72,   52,   52,   52,
       52,   60,   77,   77,   60,   60,   60,   60,   80,   88,
      101,   88,   94,   80,   80,   94,   98,  104,  103,   98,
      736,  109,   98,  103,  103,  103,  110,  105,  101,  109,
      110,  126,   98,  101,  105,  116,   98,  104,   98,  111,
      110,  111,  124,  116,  105,  129,  130,  111,  126,  131,
      124,  137,  130,  151,  129,  137,  146,  146,  149,  154,
      151,  155,  157,  155,  157,  158,  131,  156,  156,  156,

      156,  149,  154,  164,  191,  191,  242,  164,  217,  217,
      158,  159,  159,  159,  159,  166,  166,  166,  166,  242,
      737,  214,  159,  159,  159,  159,  167,  167,  167,  167,
      214,  167,  215,  240,  243,  245,  215,  245,  240,  243,
      280,  274,  245,  274,  280,  243,  240,  285,  245,  309,
      322,  322,  370,  274,  738,  322,  215,  350,  323,  355,
      285,  323,  326,  350,  309,  370,  285,  285,  316,  316,
      358,  323,  316,  316,  316,  316,  326,  343,  343,  355,
      357,  382,  343,  529,  358,  357,  382,  350,  343,  357,
      372,  740,  529,  343,  357,  389,  372,  384,  372,  406,

      343,  376,  376,  376,  406,  420,  450,  384,  453,  372,
      384,  384,  450,  372,  389,  409,  443,  384,  741,  443,
      742,  409,  453,  376,  420,  446,  409,  409,  474,  443,
      474,  446,  446,  477,  486,  583,  474,  477,  486,  474,
      474,  474,  474,  478,  583,  409,  478,  478,  478,  478,
      479,  501,  743,  479,  479,  479,  479,  480,  480,  480,
      480,  485,  503,  516,  485,  501,  514,  503,  516,  485,
      523,  558,  514,  523,  485,  627,  546,  558,  546,  562,
      485,  744,  562,  745,  485,  627,  523,  566,  523,  546,
      566,  566,  578,  546,  572,  572,  662,  566,  588,  572,

      694,  613,  644,  746,  694,  572,  578,  588,  747,  748,
      572,  613,  662,  749,  613,  613,  644,  572,  659,  750,
      659,  613,  661,  661,  661,  661,  659,  682,  665,  659,
      659,  659,  659,  665,  681,  739,  707,  681,  665,  752,
      682,  753,  754,  755,  665,  756,  757,  682,  665,  707,
      758,  707,  759,  760,  739,  761,  762,  681,  751,  751,
      763,  764,  751,  765,  751,  766,  767,  768,  769,  770,
      771,  772,  751,  773,  751,  775,  776,  751,  777,  751,
      778,  779,  780,  781,  782,  783,  784,  785,  786,  787,
      788,  789,  790,  791,  794,  795,  797,  798,  799,  801,

      802,  795,  801,  801,  803,  804,  805,  806,  808,  801,
      809,  810,  811,  814,  812,  815,  816,  817,  811,  818,
      819,  820,  821,  822,  823,  810,  812,  824,  825,  826,
      816,  811,  827,  828,  829,  830,  831,  832,  833,  834,
      835,  836,  837,  838,  839,  840,  842,  843,  844,  846,
      847,  848,  849,  850,  851,  852,  853,  854,  855,  856,
      857,  858,  859,  860,  861,  862,  863,  853,  864,  865,
      866,  867,  868,  869,  870,  871,  872,  873,  874,  875,
      876,  877,  879,  880,  873,  881,  882,  883,  884,  885,
      886,  887,  888,  890,  870,  891,  892,  893,  894,  895,

      896,  898,  899,  900,  901,  896,  902,  903,  904,  905,
      906,  887,  907,  908,  910,  911,  912,  914,  915,  916,
      917,  918,  919,  920,  921,  922,  923,  924,  925,  926,
      927,  928,  929,  931,  932,  933,  934,  935,  936,  937,
      938,  939,  940,  941,  942,  940,  943,  940,  944,  945,
      946,  947,  948,  949,  950,  940,  951,  940,  952,  953,
      940,  954,  940,  955,  956,  957,  958,  959,  960,  961,
      958,  962,  963,  964,  965,  966,  967,  969,  970,  971,
      972,  969,  973,  974,  975,  976,  977,  978,  979,  980,
      981,  982,  983,  984,  985,  986,  987,  983,  988,  989,

      990,  991,  992,  993,  994,  995,  996,  997,  998,  999,
     1000, 1003, 1004, 1005, 1006, 1007, 1009, 1010, 1011, 1013,
     1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023,
     1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034,
     1035, 1038, 1039, 1041, 1042, 1044, 1045, 1046, 1047, 1048,
     1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058,
     1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068,
     1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078,
     1079, 1080, 1081, 1082, 1086, 1088, 1089, 1090, 1091, 1092,
     1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1082, 1082,

     1101, 1103, 1104, 1105, 1106, 1107, 1082, 1108, 1109, 1111,
     1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1121, 1122,
     1123, 1124, 1125, 1128, 1129, 1131, 1132, 1133, 1134, 1135,
     1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145,
     1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155,
     1156, 1157, 1158, 1159, 1160, 1161, 1162, 1164, 1165, 1166,
     1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176,
     1177, 1178, 1179, 1180, 1181, 1161, 1182, 1183, 1184, 1185,
     1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195,
     1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205,

     1206, 1207, 1184, 1205, 1208, 1209, 1196, 1210, 1211, 1212,
     1213, 1214, 1215, 1216, 1217, 1219, 1220, 1222, 1223, 1224,
     1225, 1226, 1228, 1229, 1231, 1212, 1232, 1233, 1235, 1236,
     1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246,
     1247, 1248, 1233, 1251, 1252, 1253, 1254, 1255, 1257, 1258,
     1255, 1259, 1260, 1261, 1262, 1263, 1264, 1260, 1265, 1266,
     1267, 1268, 1269, 1270, 1272, 1273, 1255, 1274, 1275, 1276,
     1276, 1277, 1278, 1279, 1281, 1282, 1283, 1276, 1284, 1286,
     1287, 1288, 1289, 1290, 1291, 1293, 1294, 1295, 1296, 1297,
     1298, 1302, 1303, 1304, 1305, 1306, 1308, 1309, 1310, 1311,

     1314, 1315, 1316, 1317, 1319, 1320, 1321, 1322, 1323, 1324,
     1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334,
     1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344,
     1348, 1350, 1351, 1352, 1354, 1355, 1356, 1358, 1359, 1361,
     1362, 1363, 1358, 1359, 1364, 1365, 1367, 1368, 1369, 1370,
     1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383,
     1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393,
     1394, 1395, 1396, 1370, 1397, 1398, 1399, 1400, 1401, 1402,
     1403, 1404, 1405, 1406, 1410, 1411, 1413, 1414, 1415, 1418,
     1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1428, 1429,

     1432, 1433, 1435, 1438, 1440, 1441, 1442, 1443, 1446, 1447,
     1448, 1449, 1450, 1451, 1452, 1453, 1454, 1442, 1455, 1456,
     1440, 1458, 1460, 1462, 1463, 1464, 1465, 1466, 1467, 1468,
     1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479,
     1480, 1484, 1485, 1486, 1488, 1489, 1460, 1493, 1494, 1495,
     1496, 1497, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1488,
     1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515,
     1516, 1517, 1518, 1519, 1521, 1522, 1524, 1525, 1528, 1529,
     1530, 1531, 1532, 1533, 1534, 1535, 1536, 1538, 1539, 1540,
     1541, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552,

     1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562,
     1563, 1564, 1565, 1566, 1568, 1569, 1564, 1565, 1570, 1571,
     1572, 1573, 1574, 1578, 1579, 1580, 1582, 1583, 1584, 1585,
     1587, 1589, 1590, 1592, 1596, 1597, 1598, 1599, 1600, 1601,
     1603, 1604, 1605, 1606, 1607, 1610, 1611, 1598, 1612, 1617,
     1596, 1618, 1619, 1620, 1621, 1622, 1624, 1625, 1626, 1627,
     1628, 1629, 1630, 1631, 1633, 1635, 1638, 1639, 1641, 1642,
     1643, 1644, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653,
     1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1664,
     1665, 1667, 1669, 1671, 1672, 1673, 1674, 1675, 1676, 1677,

     1679, 1681, 1683, 1684, 1685, 1686, 1687, 1690, 1691, 1692,
     1694, 1695, 1696, 1697, 1698, 1699, 1700, 1702, 1704, 1705,
     1706, 1707, 1709, 1710, 1711, 1713, 1714, 1716, 1719, 1720,
     1721, 1722, 1724, 1727, 1728, 1729, 1730, 1731, 1732, 1733,
     1734, 1735, 1736, 1737, 1740, 1728, 1741, 1743, 1744, 1745,
     1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1756,
     1757, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767,
     1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777,
     1778, 1779, 1780, 1782, 1783, 1786, 1787, 1788, 1789, 1790,
     1791, 1796, 1798, 1799, 1800, 1801, 1803, 1804, 1805, 1807,

     1808, 1810, 1811, 1812, 1813, 1814, 1815, 1818, 1819, 1820,
     1821, 1822, 1823, 1824, 1826, 1827, 1828, 1829, 1830, 1831,
     1832, 1834, 1835, 1836, 1840, 1841, 1842, 1843, 1844, 1845,
     1846, 1847, 1848, 1849, 1850, 1851, 1852, 1854, 1855, 1856,
     1858, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868,
     1869, 1870, 1871, 1872, 1873, 1874, 1875, 1878, 1880, 1881,
     1882, 1883, 1885, 1887, 1888, 1889, 1892, 1895, 1896, 1897,
     1898, 1900, 1903, 1905, 1907, 1908, 1909, 1910, 1912, 1915,
     1917, 1918, 1919, 1920, 1923, 1924, 1925, 1926, 1927, 1928,
     1930, 1931, 1934, 1936, 1937, 1938, 1939, 1940, 1941, 1942,

     1943, 1944, 1945, 1946, 1947, 1948, 1951, 1953, 1956, 1960,
     1961, 1962, 1963, 1967, 1969, 1973, 1976, 1977, 1978, 1979,
     1981, 1982, 1983, 1985, 1986, 1987, 1988, 1989, 1990, 1991,
     1994, 1996, 1998, 2002, 2004, 2008, 2009, 2010, 2012, 2013,
     2014, 2018, 2020, 2022, 2025, 2028, 2029, 2030, 2032, 2036,
     2037, 2038, 2039, 2041, 2042, 2044, 2045, 2048, 2052, 2052,
     2052, 2053, 2053, 2054, 2054, 2054, 2055, 2055, 2055, 2056,
      731, 2056, 2057, 2057, 2057, 2058, 2058, 2058, 2059, 2059,
     2059, 2060, 2060, 2060, 2061, 2061, 2061,  730,  729,  728,
      727,  726,  723,  720,  719,  718,  717,  716,  715,  714,

      713,  712,  710,  709,  708,  706,  704,  703,  702,  701,
      700,  699,  697,  696,  695,  693,  692,  691,  690,  689,
      688,  687,  686,  685,  684,  680,  679,  677,  676,  675,
      674,  673,  672,  671,  670,  668,  667,  666,  663,  660,
      658,  657,  656,  655,  653,  652,  651,  650,  649,  645,
      643,  642,  641,  640,  639,  638,  637,  636,  635,  634,
      633,  632,  630,  629,  628,  626,  625,  624,  623,  622,
      621,  620,  618,  617,  616,  614,  610,  609,  608,  607,
      606,  604,  603,  602,  601,  600,  598,  597,  594,  593,
      592,  591,  590,  589,  587,  586,  585,  584,  582,  581,

      580,  579,  577,  576,  575,  570,  569,  568,  567,  565,
      564,  563,  560,  559,  557,  553,  552,  551,  550,  549,
      548,  547,  545,  544,  543,  542,  541,  540,  539,  537,
      536,  535,  534,  533,  532,  531,  530,  527,  526,  525,
      522,  518,  517,  515,  513,  512,  511,  510,  509,  508,
      507,  506,  505,  504,  502,  499,  498,  497,  495,  494,
      492,  491,  490,  489,  488,  487,  484,  483,  482,  476,
      475,  472,  471,  470,  469,  467,  466,  465,  464,  463,
      461,  460,  459,  458,  457,  455,  454,  452,  451,  449,
      448,  447,  445,  444,  442,  441,  440,  439,  438,  437,

      436,  435,  433,  432,  430,  429,  428,  425,  424,  423,
      422,  421,  417,  415,  414,  413,  412,  411,  410,  408,
      407,  404,  403,  402,  401,  400,  399,  398,  397,  396,
      395,  394,  393,  392,  391,  388,  387,  386,  385,  383,
      381,  380,  379,  378,  377,  375,  374,  373,  371,  368,
      367,  365,  364,  362,  359,  356,  354,  353,  352,  351,
      349,  348,  347,  346,  345,  344,  341,  340,  339,  338,
      335,  334,  333,  332,  331,  330,  327,  325,  324,  321,
      320,  319,  318,  317,  314,  313,  312,  311,  310,  308,
      307,  306,  305,  303,  302,  301,  300,  299,  298,  297,

      296,  295,  294,  293,  292,  291,  290,  289,  288,  287,
      286,  284,  283,  282,  281,  279,  278,  277,  276,  275,
      273,  272,  271,  270,  269,  268,  267,  266,  264,  263,
      262,  261,  260,  259,  258,  257,  256,  255,  254,  253,
      252,  251,  250,  249,  248,  247,  246,  244,  241,  239,
      238,  237,  236,  235,  234,  233,  232,  231,  230,  229,
      227,  226,  225,  224,  223,  222,  221,  220,  219,  218,
      216,  213,  212,  211,  210,  209,  208,  207,  206,  205,
      204,  203,  202,  201,  200,  199,  198,  196,  195,  194,
      193,  192,  190,  189,  188,  187,  186,  185,  184,  182,

      181,  180,  179,  178,  177,  176,  175,  174,  173,  172,
      171,  170,  169,  168,  163,  161,  160,  153,  152,  150,
      148,  147,  145,  144,  143,  142,  141,  140,  139,  138,
      136,  135,  134,  133,  132,  128,  127,  125,  123,  122,
      121,  120,  119,  118,  117,  115,  114,  113,  112,  108,
      107,  106,  100,   99,   97,   96,   95,   93,   91,   90,
       89,   86,   85,   84,   83,   82,   81,   79,   78,   76,
       75,   71,   70,   68,   63,   62,   61,   58,   54,   53,
       49,   36,   27,   10,    3, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,

     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051,
     2051, 2051, 2051, 2051, 2051, 2051
    } ;

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
char *yytext;
# line 1 "grammar.l"
# line 2 "grammar.l"


#line 2 "/RW/esprit/users/sander/src/PARSEGEN/scan.skel"

/*--------------------------------------------------------------------*/
/*            A flex scanner specification made by parsegen           */
/*--------------------------------------------------------------------*/
 
#ifndef lint
static char *scanskel_id_string="$Id: scan.skel,v 1.6 1994/04/13 10:23:44 sander Exp sander $";
#endif




#line 32000 "/RW/esprit/users/sander/src/PARSEGEN/parse.skel"
typedef struct stree_node *syntaxtree;
#undef yysyntaxtree
#define yysyntaxtree syntaxtree


#line 580 "grammar.pgs"

#define BISONGEN
#undef  YACCGEN

#include <stdio.h>

#include <string.h>

#include "y.tab.h"


#line 24 "grammar.pgs"

#ifndef lint
static char *id_string="$Id: grammar.pgs,v 3.17 1995/02/08 18:35:02 sander Exp $";
#endif

/*
 *   Copyright (C) 1993--1995 by Georg Sander, Iris Lemke, and
 *                               the Compare Consortium 
 *
 *  This program and documentation is free software; you can redistribute 
 *  it under the terms of the  GNU General Public License as published by
 *  the  Free Software Foundation;  either version 2  of the License,  or
 *  (at your option) any later version.
 *
 *  This  program  is  distributed  in  the hope that it will be useful,
 *  but  WITHOUT ANY WARRANTY;  without  even  the  implied  warranty of
 *  MERCHANTABILITY  or  FITNESS  FOR  A  PARTICULAR  PURPOSE.  See  the
 *  GNU General Public License for more details.
 *
 *  You  should  have  received a copy of the GNU General Public License
 *  along  with  this  program;  if  not,  write  to  the  Free Software
 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 *  The software is available per anonymous ftp at ftp.cs.uni-sb.de.
 *  Contact  sander@cs.uni-sb.de  for additional information.
 */


/* $Log: grammar.pgs,v $
# Revision 3.17  1995/02/08  18:35:02  sander
# Small bug for K&R C corrected.
#
# Revision 3.16  1995/02/08  11:11:14  sander
# Distribution version 1.3.
#
# Revision 3.15  1994/12/23  18:12:45  sander
# Manhatten layout added.
#
# Revision 3.14  1994/11/23  14:50:47  sander
# Hash table to 22079 expanded. Better string hash function implemented.
#
# Revision 3.13  1994/08/08  16:01:47  sander
# Attributes xraster, xlraster, yraster added.
#
# Revision 3.12  1994/08/05  12:13:25  sander
# Treelayout added. Attributes "treefactor" and "spreadlevel" added.
# Scaling as abbreviation of "stretch/shrink" added.
#
# Revision 3.11  1994/08/04  08:58:20  sander
# Attributes crossing_weight and crossing_optimization added.
#
# Revision 3.10  1994/08/03  13:58:44  sander
# Horizontal order mechanism changed.
# Attribute horizontal_order for edges added.
#
# Revision 3.9  1994/06/07  14:09:59  sander
# Splines implemented.
# HP-UX, Linux, AIX, Sun-Os, IRIX compatibility tested.
# The tool is now ready to be distributed.
#
# Revision 3.8  1994/05/17  16:35:59  sander
# attribute node_align added to allow nodes to be centered in the levels.
#
# Revision 3.7  1994/05/16  08:56:03  sander
# shape attribute (boxes, rhombs, ellipses, triangles) added.
#
# Revision 3.6  1994/05/05  08:20:30  sander
# Algorithm late labels added: If labels are inserted
# after partitioning, this may yield a better layout.
#
# Revision 3.5  1994/04/27  16:05:19  sander
# attributes of graph nodes adapted to the of normal nodes.
#
# Revision 3.4  1994/03/04  19:11:24  sander
# Specification of levels per node added.
# X11 geometry behaviour (option -geometry) changed such
# that the window is now opened automatically.
#
# Revision 3.3  1994/03/03  15:35:39  sander
# Edge line style `invisible' added.
#
# Revision 3.2  1994/03/02  11:48:54  sander
# Layoutalgoritms mindepthslow, maxdepthslow, minindegree, ... mandegree
# added.
# Anchors and nearedges are not anymore allowed to be intermixed.
# Escapes in strings are now allowed.
#
# Revision 3.1  1994/03/01  10:59:55  sander
# Copyright and Gnu Licence message added.
# Problem with "nearedges: no" and "selfloops" solved.
#
# Revision 2.4  1994/02/13  17:25:54  sander
# attribute 'finetuning' added.
#
# Revision 2.3  1994/01/21  19:33:46  sander
# VCG Version tested on Silicon Graphics IRIX, IBM R6000 AIX and Sun 3/60.
# Option handling improved. Option -grabinputfocus installed.
# X11 Font selection scheme implemented. The user can now select a font
# during installation.
# Sun K&R C (a nonansi compiler) tested. Some portabitility problems solved.
#
# Revision 2.1  1993/12/08  21:19:21  sander
# Reasonable fast and stable version
#
 */


#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include "globals.h"
#include "main.h"
#include "options.h"

#ifndef YY_CHAR
#define YY_CHAR char
extern YY_CHAR *yytext;
#endif

/* the following is added for flex 2.4.6 */

#ifndef YY_MALLOC_DECL
#define YY_MALLOC_DECL
#include <malloc.h>
#endif
 
#undef YYVALGLOBAL
 
extern yysyntaxtree Syntax_Tree;

#define exit(a) gs_exit(a)
extern void gs_exit            _PP((int x));
 
void   line_directive _PP((char *text));
void   escape_transl  _PP((char *text));
char  *my_itoa        _PP((int x));
long   long_atoi      _PP((char *c));
void   syntaxerror    _PP((int line,int pos,char *mesge));
void   warning        _PP((int line,int pos,char *mesge));
 
#ifndef yysyntaxerror
#define yysyntaxerror(l,p,m) syntaxerror(l,p,m)
#endif
 
#ifndef yyerror
#define yyerror(x) { \
        SPRINTF(message,"unexpected %s \"%s\" (%s)", \
                 ((yychar<0)?"(?)":yytokname[YYTRANSLATE(yychar)]),     \
                 (strlen(yytext)<48?yytext:"(?)"),x); \
        syntaxerror(line_nr,pos_nr,message);\
    }
#endif
 
/* Memory Management */

#ifdef MEMBLOCKSIZE
#define PARSEBLOCKSIZE (MEMBLOCKSIZE/sizeof(struct stree_node)+1)
#endif

/* Hash Table */

#define hash_size 22079
 



#line 580 "grammar.pgs"

#ifdef ANSI_C
char * ParseMalloc(int x);
#else
char * ParseMalloc();
#endif
#undef PARSEGENSTD
#define PARSEGENSTD


#line 1 "/RW/esprit/users/sander/src/PARSEGEN/stdth.skel"
 
#ifndef STDHASH
#define STDHASH

/* $Id: stdth.skel,v 1.3 1994/01/07 19:35:32 sander Exp sander $ */

#undef  HASHGENSTD
#define HASHGENSTD


/*--------------------------------------------------------------------*/
/*  Standard Hash Table Routines                                      */
/*--------------------------------------------------------------------*/

/* Global Variables */
/*------------------*/

extern long   table_size;

#ifndef PARSEGENSTD

#ifndef ALIGN
#define ALIGN 8
#define IALIGN (ALIGN-1)
#endif
#ifndef STRINGBLOCKSIZE
#define STRINGBLOCKSIZE 5000
#endif

#ifdef ANSI_C
char *StringHeapMalloc(int x);
void StringHeapFree(void);
else
char *StringHeapMalloc();
void StringHeapFree();
#endif

#endif /* PARSEGENSTD */

#ifndef hash_size
#define hash_size 211
#endif
#ifndef hashtable_size
#define hashtable_size 10000L
#endif


#ifdef ANSI_C
void FreeHash(void);
long HashInsert(register char *s);
long HashTableSize(void);
char *Decode(long x);
#else
void FreeHash();
long HashInsert();
long HashTableSize();
char *Decode();
#endif /* ANSI_C */

#endif /* STDHASH */

/*-- end of standard hash table interface ----------------------------*/
 


#line 12 "/RW/esprit/users/sander/src/PARSEGEN/scan.skel"


/*--------------------------------------------------------------------*/

/* Global Variables */
/*------------------*/

int line_nr;
int pos_nr;
extern int nr_errors;  /* from Scanner */

/* Local Variables */
/*-----------------*/

static char message[256];

#define SKIPYYTEXT { char *c; c = yytext; while (*c) { \
     if (*c == '\n') { pos_nr = 1; line_nr++; }  \
     else pos_nr++; c++; }}
  

/*--------------------------------------------------------------------*/
/*   Character classes                                                */
/*--------------------------------------------------------------------*/


#line 188 "grammar.pgs"
# line 328 "grammar.l"



#line 44 "/RW/esprit/users/sander/src/PARSEGEN/scan.skel"

#ifndef yywrap
/* Changed for flex 2.4.6 (static removed) */
int yywrap() { return (1); }
#endif

#ifndef RETURN
#ifndef YYLTYPE
#define RETURN(x) {     pos_nr += strlen(yytext); \
                  return(x); }
#else
extern YYLTYPE yylloc;
#define RETURN(x) {     pos_nr += strlen(yytext); \
                  yylloc.first_line = yylloc.last_line = line_nr; \
                  yylloc.first_column = pos_nr-strlen(yytext);    \
                  yylloc.last_column  = pos_nr;                   \
                  return(x); }
#endif
#endif

#ifndef yysyntaxerror 
#define yysyntaxerror(l,p,m) {(void)printf("Line %d Pos %d: %s !\n",l,p,m);\
      nr_errors++;}
#endif

/*--------------------------------------------------------------------*/
/*   Token rules                                                      */
/*--------------------------------------------------------------------*/


#line 203 "grammar.pgs"

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

#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 = getc( yyin ); \
            result = c == EOF ? 0 : 1; \
            buf[0] = (char) c; \
            } \
      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

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

# line 365 "grammar.l"




      if ( yy_init )
            {
#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_init_buffer( yy_current_buffer, yyin );
            else
                  yy_current_buffer =
                        yy_create_buffer( yyin, YY_BUF_SIZE );

            yy_load_buffer_state();

            yy_init = 0;
            }

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

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

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

            yy_current_state = yy_start;
yy_match:
            do
                  {
                  register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
                  if ( yy_accept[yy_current_state] )
                        {
                        yy_last_accepting_state = yy_current_state;
                        yy_last_accepting_cpos = yy_cp;
                        }
                  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
                        if ( yy_current_state >= 2052 )
                              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] != 2186 );

yy_find_action:
            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_USER_ACTION
# line 368 "grammar.l"
{
#line 209 "grammar.pgs"
             RETURN(LEXWORD_ABOVE);               }
      YY_BREAK
case 2:
YY_USER_ACTION
# line 371 "grammar.l"
{
#line 210 "grammar.pgs"
             RETURN(LEXWORD_ANCHORPOINTS);        }
      YY_BREAK
case 3:
YY_USER_ACTION
# line 374 "grammar.l"
{
#line 211 "grammar.pgs"
             RETURN(LEXWORD_ANCHORPOINTS);        }
      YY_BREAK
case 4:
YY_USER_ACTION
# line 377 "grammar.l"
{
#line 212 "grammar.pgs"
             RETURN(LEXWORD_ANCHOR);              }
      YY_BREAK
case 5:
YY_USER_ACTION
# line 380 "grammar.l"
{
#line 213 "grammar.pgs"
             RETURN(LEXWORD_AQUAMARINE);          }
      YY_BREAK
case 6:
YY_USER_ACTION
# line 383 "grammar.l"
{
#line 214 "grammar.pgs"
             RETURN(LEXWORD_AROUND);              }
      YY_BREAK
case 7:
YY_USER_ACTION
# line 386 "grammar.l"
{
#line 215 "grammar.pgs"
             RETURN(LEXWORD_ARROWMODE);           }
      YY_BREAK
case 8:
YY_USER_ACTION
# line 389 "grammar.l"
{
#line 216 "grammar.pgs"
             RETURN(LEXWORD_ARROWMODE);           }
      YY_BREAK
case 9:
YY_USER_ACTION
# line 392 "grammar.l"
{
#line 217 "grammar.pgs"
             RETURN(LEXWORD_ARROWHEIGHT);         }
      YY_BREAK
case 10:
YY_USER_ACTION
# line 395 "grammar.l"
{
#line 218 "grammar.pgs"
             RETURN(LEXWORD_ARROWHEIGHT);         }
      YY_BREAK
case 11:
YY_USER_ACTION
# line 398 "grammar.l"
{
#line 219 "grammar.pgs"
             RETURN(LEXWORD_ARROWWIDTH);          }
      YY_BREAK
case 12:
YY_USER_ACTION
# line 401 "grammar.l"
{
#line 220 "grammar.pgs"
             RETURN(LEXWORD_ARROWWIDTH);          }
      YY_BREAK
case 13:
YY_USER_ACTION
# line 404 "grammar.l"
{
#line 221 "grammar.pgs"
             RETURN(LEXWORD_ARROWCOLOR);          }
      YY_BREAK
case 14:
YY_USER_ACTION
# line 407 "grammar.l"
{
#line 222 "grammar.pgs"
             RETURN(LEXWORD_ARROWCOLOR);          }
      YY_BREAK
case 15:
YY_USER_ACTION
# line 410 "grammar.l"
{
#line 223 "grammar.pgs"
             RETURN(LEXWORD_ARROWSTYLE);          }
      YY_BREAK
case 16:
YY_USER_ACTION
# line 413 "grammar.l"
{
#line 224 "grammar.pgs"
             RETURN(LEXWORD_ARROWSTYLE);          }
      YY_BREAK
case 17:
YY_USER_ACTION
# line 416 "grammar.l"
{
#line 225 "grammar.pgs"
             RETURN(LEXWORD_ARROWSIZE);           }
      YY_BREAK
case 18:
YY_USER_ACTION
# line 419 "grammar.l"
{
#line 226 "grammar.pgs"
             RETURN(LEXWORD_ARROWSIZE);           }
      YY_BREAK
case 19:
YY_USER_ACTION
# line 422 "grammar.l"
{
#line 227 "grammar.pgs"
             RETURN(LEXWORD_BARROWCOLOR);         }
      YY_BREAK
case 20:
YY_USER_ACTION
# line 425 "grammar.l"
{
#line 228 "grammar.pgs"
             RETURN(LEXWORD_BARROWCOLOR);         }
      YY_BREAK
case 21:
YY_USER_ACTION
# line 428 "grammar.l"
{
#line 229 "grammar.pgs"
             RETURN(LEXWORD_BARROWCOLOR);         }
      YY_BREAK
case 22:
YY_USER_ACTION
# line 431 "grammar.l"
{
#line 230 "grammar.pgs"
             RETURN(LEXWORD_BARROWSTYLE);         }
      YY_BREAK
case 23:
YY_USER_ACTION
# line 434 "grammar.l"
{
#line 231 "grammar.pgs"
             RETURN(LEXWORD_BARROWSTYLE);         }
      YY_BREAK
case 24:
YY_USER_ACTION
# line 437 "grammar.l"
{
#line 232 "grammar.pgs"
             RETURN(LEXWORD_BARROWSTYLE);         }
      YY_BREAK
case 25:
YY_USER_ACTION
# line 440 "grammar.l"
{
#line 233 "grammar.pgs"
             RETURN(LEXWORD_BARROWSIZE);          }
      YY_BREAK
case 26:
YY_USER_ACTION
# line 443 "grammar.l"
{
#line 234 "grammar.pgs"
             RETURN(LEXWORD_BARROWSIZE);          }
      YY_BREAK
case 27:
YY_USER_ACTION
# line 446 "grammar.l"
{
#line 235 "grammar.pgs"
             RETURN(LEXWORD_BARROWSIZE);          }
      YY_BREAK
case 28:
YY_USER_ACTION
# line 449 "grammar.l"
{
#line 236 "grammar.pgs"
             RETURN(LEXWORD_BACKEDGE);            }
      YY_BREAK
case 29:
YY_USER_ACTION
# line 452 "grammar.l"
{
#line 237 "grammar.pgs"
             RETURN(LEXWORD_BACKEDGE);            }
      YY_BREAK
case 30:
YY_USER_ACTION
# line 455 "grammar.l"
{
#line 238 "grammar.pgs"
             RETURN(LEXWORD_BARYCENTER);          }
      YY_BREAK
case 31:
YY_USER_ACTION
# line 458 "grammar.l"
{
#line 239 "grammar.pgs"
             RETURN(LEXWORD_BARYCENTER);          }
      YY_BREAK
case 32:
YY_USER_ACTION
# line 461 "grammar.l"
{
#line 240 "grammar.pgs"
             RETURN(LEXWORD_BARY);                }
      YY_BREAK
case 33:
YY_USER_ACTION
# line 464 "grammar.l"
{
#line 241 "grammar.pgs"
             RETURN(LEXWORD_BARYMEDIAN);          } 
      YY_BREAK
case 34:
YY_USER_ACTION
# line 467 "grammar.l"
{
#line 242 "grammar.pgs"
             RETURN(LEXWORD_BEHIND);              }
      YY_BREAK
case 35:
YY_USER_ACTION
# line 470 "grammar.l"
{
#line 243 "grammar.pgs"
             RETURN(LEXWORD_BELOW);               }
      YY_BREAK
case 36:
YY_USER_ACTION
# line 473 "grammar.l"
{
#line 244 "grammar.pgs"
             RETURN(LEXWORD_BLACK);               }
      YY_BREAK
case 37:
YY_USER_ACTION
# line 476 "grammar.l"
{
#line 245 "grammar.pgs"
             RETURN(LEXWORD_BLUE);                }
      YY_BREAK
case 38:
YY_USER_ACTION
# line 479 "grammar.l"
{
#line 246 "grammar.pgs"
             RETURN(LEXWORD_BMAX);                }
      YY_BREAK
case 39:
YY_USER_ACTION
# line 482 "grammar.l"
{
#line 247 "grammar.pgs"
             RETURN(LEXWORD_BORDERCOLOR);         }
      YY_BREAK
case 40:
YY_USER_ACTION
# line 485 "grammar.l"
{
#line 248 "grammar.pgs"
             RETURN(LEXWORD_BORDERCOLOR);         }
      YY_BREAK
case 41:
YY_USER_ACTION
# line 488 "grammar.l"
{
#line 249 "grammar.pgs"
             RETURN(LEXWORD_BORDERWIDTH);         }
      YY_BREAK
case 42:
YY_USER_ACTION
# line 491 "grammar.l"
{
#line 250 "grammar.pgs"
             RETURN(LEXWORD_BORDERWIDTH);         }
      YY_BREAK
case 43:
YY_USER_ACTION
# line 494 "grammar.l"
{
#line 251 "grammar.pgs"
             RETURN(LEXWORD_BOTTOM_MARGIN);       }
      YY_BREAK
case 44:
YY_USER_ACTION
# line 497 "grammar.l"
{
#line 252 "grammar.pgs"
             RETURN(LEXWORD_BOTTOM_MARGIN);       }
      YY_BREAK
case 45:
YY_USER_ACTION
# line 500 "grammar.l"
{
#line 253 "grammar.pgs"
             RETURN(LEXWORD_BOTTOM_TO_TOP);       }
      YY_BREAK
case 46:
YY_USER_ACTION
# line 503 "grammar.l"
{
#line 254 "grammar.pgs"
             RETURN(LEXWORD_BOTTOM_TO_TOP);       }
      YY_BREAK
case 47:
YY_USER_ACTION
# line 506 "grammar.l"
{
#line 255 "grammar.pgs"
             RETURN(LEXWORD_BOTTOM);              }
      YY_BREAK
case 48:
YY_USER_ACTION
# line 509 "grammar.l"
{
#line 256 "grammar.pgs"
             RETURN(LEXWORD_BOX);                 }
      YY_BREAK
case 49:
YY_USER_ACTION
# line 512 "grammar.l"
{
#line 257 "grammar.pgs"
             RETURN(LEXWORD_BENTNEAREDGE);        }
      YY_BREAK
case 50:
YY_USER_ACTION
# line 515 "grammar.l"
{
#line 258 "grammar.pgs"
             RETURN(LEXWORD_BENTNEAREDGE);        }
      YY_BREAK
case 51:
YY_USER_ACTION
# line 518 "grammar.l"
{
#line 259 "grammar.pgs"
             RETURN(LEXWORD_BENTNEAREDGE);        }
      YY_BREAK
case 52:
YY_USER_ACTION
# line 521 "grammar.l"
{
#line 260 "grammar.pgs"
             RETURN(LEXWORD_CENTER);              }
      YY_BREAK
case 53:
YY_USER_ACTION
# line 524 "grammar.l"
{
#line 261 "grammar.pgs"
             RETURN(LEXWORD_CFISH);               }
      YY_BREAK
case 54:
YY_USER_ACTION
# line 527 "grammar.l"
{
#line 262 "grammar.pgs"
             RETURN(LEXWORD_CLASSNAME);           }
      YY_BREAK
case 55:
YY_USER_ACTION
# line 530 "grammar.l"
{
#line 263 "grammar.pgs"
             RETURN(LEXWORD_CLASSNAME);           }
      YY_BREAK
case 56:
YY_USER_ACTION
# line 533 "grammar.l"
{
#line 264 "grammar.pgs"
             RETURN(LEXWORD_CLASS);               }
      YY_BREAK
case 57:
YY_USER_ACTION
# line 536 "grammar.l"
{
#line 265 "grammar.pgs"
             RETURN(LEXWORD_CLUSTER);             }
      YY_BREAK
case 58:
YY_USER_ACTION
# line 539 "grammar.l"
{
#line 266 "grammar.pgs"
             RETURN(LEXWORD_CMIN);                }
      YY_BREAK
case 59:
YY_USER_ACTION
# line 542 "grammar.l"
{
#line 267 "grammar.pgs"
             RETURN(LEXWORD_CMAX);                }
      YY_BREAK
case 60:
YY_USER_ACTION
# line 545 "grammar.l"
{
#line 268 "grammar.pgs"
             RETURN(LEXWORD_COLORENTRY);          }
      YY_BREAK
case 61:
YY_USER_ACTION
# line 548 "grammar.l"
{
#line 269 "grammar.pgs"
             RETURN(LEXWORD_COLORENTRY);          }
      YY_BREAK
case 62:
YY_USER_ACTION
# line 551 "grammar.l"
{
#line 270 "grammar.pgs"
             RETURN(LEXWORD_COLOR);               }
      YY_BREAK
case 63:
YY_USER_ACTION
# line 554 "grammar.l"
{
#line 271 "grammar.pgs"
             RETURN(LEXWORD_CONSTRAINTS);         }
      YY_BREAK
case 64:
YY_USER_ACTION
# line 557 "grammar.l"
{
#line 272 "grammar.pgs"
             RETURN(LEXWORD_CONSTRAINT);          }
      YY_BREAK
case 65:
YY_USER_ACTION
# line 560 "grammar.l"
{
#line 273 "grammar.pgs"
             RETURN(LEXWORD_CONTINUOUS);          }
      YY_BREAK
case 66:
YY_USER_ACTION
# line 563 "grammar.l"
{
#line 274 "grammar.pgs"
             RETURN(LEXWORD_CROSSING_WEIGHT);     }
      YY_BREAK
case 67:
YY_USER_ACTION
# line 566 "grammar.l"
{
#line 275 "grammar.pgs"
             RETURN(LEXWORD_CROSSING_WEIGHT);     }
      YY_BREAK
case 68:
YY_USER_ACTION
# line 569 "grammar.l"
{
#line 276 "grammar.pgs"
             RETURN(LEXWORD_CROSSING_OPT);        }
      YY_BREAK
case 69:
YY_USER_ACTION
# line 572 "grammar.l"
{
#line 277 "grammar.pgs"
             RETURN(LEXWORD_CROSSING_OPT);        }
      YY_BREAK
case 70:
YY_USER_ACTION
# line 575 "grammar.l"
{
#line 278 "grammar.pgs"
             RETURN(LEXWORD_CROSSING_P2);         }
      YY_BREAK
case 71:
YY_USER_ACTION
# line 578 "grammar.l"
{
#line 279 "grammar.pgs"
             RETURN(LEXWORD_CROSSING_P2);         }
      YY_BREAK
case 72:
YY_USER_ACTION
# line 581 "grammar.l"
{
#line 280 "grammar.pgs"
             RETURN(LEXWORD_CYAN);                }
      YY_BREAK
case 73:
YY_USER_ACTION
# line 584 "grammar.l"
{
#line 281 "grammar.pgs"
             RETURN(LEXWORD_DARKBLUE);            }
      YY_BREAK
case 74:
YY_USER_ACTION
# line 587 "grammar.l"
{
#line 282 "grammar.pgs"
             RETURN(LEXWORD_DARKCYAN);            }
      YY_BREAK
case 75:
YY_USER_ACTION
# line 590 "grammar.l"
{
#line 283 "grammar.pgs"
             RETURN(LEXWORD_DARKGREEN);           }
      YY_BREAK
case 76:
YY_USER_ACTION
# line 593 "grammar.l"
{
#line 284 "grammar.pgs"
             RETURN(LEXWORD_DARKGREY);            }
      YY_BREAK
case 77:
YY_USER_ACTION
# line 596 "grammar.l"
{
#line 285 "grammar.pgs"
             RETURN(LEXWORD_DARKGREY);            }
      YY_BREAK
case 78:
YY_USER_ACTION
# line 599 "grammar.l"
{
#line 286 "grammar.pgs"
             RETURN(LEXWORD_DARKMAGENTA);         }
      YY_BREAK
case 79:
YY_USER_ACTION
# line 602 "grammar.l"
{
#line 287 "grammar.pgs"
             RETURN(LEXWORD_DARKRED);             }
      YY_BREAK
case 80:
YY_USER_ACTION
# line 605 "grammar.l"
{
#line 288 "grammar.pgs"
             RETURN(LEXWORD_DARKYELLOW);          }
      YY_BREAK
case 81:
YY_USER_ACTION
# line 608 "grammar.l"
{
#line 289 "grammar.pgs"
             RETURN(LEXWORD_DASHED);              } 
      YY_BREAK
case 82:
YY_USER_ACTION
# line 611 "grammar.l"
{
#line 290 "grammar.pgs"
             RETURN(LEXWORD_DFS);                } 
      YY_BREAK
case 83:
YY_USER_ACTION
# line 614 "grammar.l"
{
#line 291 "grammar.pgs"
             RETURN(LEXWORD_DFS);                } 
      YY_BREAK
case 84:
YY_USER_ACTION
# line 617 "grammar.l"
{
#line 292 "grammar.pgs"
             RETURN(LEXWORD_DFS);                } 
      YY_BREAK
case 85:
YY_USER_ACTION
# line 620 "grammar.l"
{
#line 293 "grammar.pgs"
             RETURN(LEXWORD_DIMENSION);           }
      YY_BREAK
case 86:
YY_USER_ACTION
# line 623 "grammar.l"
{
#line 294 "grammar.pgs"
             RETURN(LEXWORD_DIRTY_EDGE_LABELS);   }
      YY_BREAK
case 87:
YY_USER_ACTION
# line 626 "grammar.l"
{
#line 295 "grammar.pgs"
             RETURN(LEXWORD_DIRTY_EDGE_LABELS);   }
      YY_BREAK
case 88:
YY_USER_ACTION
# line 629 "grammar.l"
{
#line 296 "grammar.pgs"
             RETURN(LEXWORD_DISPLAY_EDGE_LABELS); }
      YY_BREAK
case 89:
YY_USER_ACTION
# line 632 "grammar.l"
{
#line 297 "grammar.pgs"
             RETURN(LEXWORD_DISPLAY_EDGE_LABELS); }
      YY_BREAK
case 90:
YY_USER_ACTION
# line 635 "grammar.l"
{
#line 298 "grammar.pgs"
             RETURN(LEXWORD_DOTTED);              }
      YY_BREAK
case 91:
YY_USER_ACTION
# line 638 "grammar.l"
{
#line 299 "grammar.pgs"
             RETURN(LEXWORD_EDGE1);               }
      YY_BREAK
case 92:
YY_USER_ACTION
# line 641 "grammar.l"
{
#line 300 "grammar.pgs"
             RETURN(LEXWORD_EDGE2);               }
      YY_BREAK
case 93:
YY_USER_ACTION
# line 644 "grammar.l"
{
#line 301 "grammar.pgs"
             RETURN(LEXWORD_EDGES);               }
      YY_BREAK
case 94:
YY_USER_ACTION
# line 647 "grammar.l"
{
#line 302 "grammar.pgs"
             RETURN(LEXWORD_ELLIPSE);             }
      YY_BREAK
case 95:
YY_USER_ACTION
# line 650 "grammar.l"
{
#line 303 "grammar.pgs"
             RETURN(LEXWORD_EQUAL_COLUMN);        }
      YY_BREAK
case 96:
YY_USER_ACTION
# line 653 "grammar.l"
{
#line 304 "grammar.pgs"
             RETURN(LEXWORD_EQUAL_COLUMN);        }
      YY_BREAK
case 97:
YY_USER_ACTION
# line 656 "grammar.l"
{
#line 305 "grammar.pgs"
             RETURN(LEXWORD_EQUAL_POSITION);      }
      YY_BREAK
case 98:
YY_USER_ACTION
# line 659 "grammar.l"
{
#line 306 "grammar.pgs"
             RETURN(LEXWORD_EQUAL_POSITION);      }
      YY_BREAK
case 99:
YY_USER_ACTION
# line 662 "grammar.l"
{
#line 307 "grammar.pgs"
             RETURN(LEXWORD_EQUAL_ROW);           }
      YY_BREAK
case 100:
YY_USER_ACTION
# line 665 "grammar.l"
{
#line 308 "grammar.pgs"
             RETURN(LEXWORD_EQUAL_ROW);           }
      YY_BREAK
case 101:
YY_USER_ACTION
# line 668 "grammar.l"
{
#line 309 "grammar.pgs"
             RETURN(LEXWORD_EQUAL);               }
      YY_BREAK
case 102:
YY_USER_ACTION
# line 671 "grammar.l"
{
#line 310 "grammar.pgs"
             RETURN(LEXWORD_EVERY);               }
      YY_BREAK
case 103:
YY_USER_ACTION
# line 674 "grammar.l"
{
#line 311 "grammar.pgs"
             RETURN(LEXWORD_FCFISH);              }
      YY_BREAK
case 104:
YY_USER_ACTION
# line 677 "grammar.l"
{
#line 312 "grammar.pgs"
             RETURN(LEXWORD_FPFISH);              }
      YY_BREAK
case 105:
YY_USER_ACTION
# line 680 "grammar.l"
{
#line 313 "grammar.pgs"
             RETURN(LEXWORD_FIXED);               }
      YY_BREAK
case 106:
YY_USER_ACTION
# line 683 "grammar.l"
{
#line 314 "grammar.pgs"
             RETURN(LEXWORD_FREE);                }
      YY_BREAK
case 107:
YY_USER_ACTION
# line 686 "grammar.l"
{
#line 315 "grammar.pgs"
             RETURN(LEXWORD_FINETUNING);          }
      YY_BREAK
case 108:
YY_USER_ACTION
# line 689 "grammar.l"
{
#line 316 "grammar.pgs"
             RETURN(LEXWORD_FINETUNING);          }
      YY_BREAK
case 109:
YY_USER_ACTION
# line 692 "grammar.l"
{
#line 317 "grammar.pgs"
             RETURN(LEXWORD_FOLDEDGE);            }
      YY_BREAK
case 110:
YY_USER_ACTION
# line 695 "grammar.l"
{
#line 318 "grammar.pgs"
             RETURN(LEXWORD_FOLDEDGE);            }
      YY_BREAK
case 111:
YY_USER_ACTION
# line 698 "grammar.l"
{
#line 319 "grammar.pgs"
             RETURN(LEXWORD_FOLDNODE);            }
      YY_BREAK
case 112:
YY_USER_ACTION
# line 701 "grammar.l"
{
#line 320 "grammar.pgs"
             RETURN(LEXWORD_FOLDNODE);            }
      YY_BREAK
case 113:
YY_USER_ACTION
# line 704 "grammar.l"
{
#line 321 "grammar.pgs"
             RETURN(LEXWORD_FOLDING);             }
      YY_BREAK
case 114:
YY_USER_ACTION
# line 707 "grammar.l"
{
#line 322 "grammar.pgs"
             RETURN(LEXWORD_FONTNAME);            }
      YY_BREAK
case 115:
YY_USER_ACTION
# line 710 "grammar.l"
{
#line 323 "grammar.pgs"
             RETURN(LEXWORD_FONTNAME);            }
      YY_BREAK
case 116:
YY_USER_ACTION
# line 713 "grammar.l"
{
#line 324 "grammar.pgs"
             RETURN(LEXWORD_GOLD);                }
      YY_BREAK
case 117:
YY_USER_ACTION
# line 716 "grammar.l"
{
#line 325 "grammar.pgs"
             RETURN(LEXWORD_GRAPH);               }
      YY_BREAK
case 118:
YY_USER_ACTION
# line 719 "grammar.l"
{
#line 326 "grammar.pgs"
             RETURN(LEXWORD_GREATER);             }
      YY_BREAK
case 119:
YY_USER_ACTION
# line 722 "grammar.l"
{
#line 327 "grammar.pgs"
             RETURN(LEXWORD_GREEN);               }
      YY_BREAK
case 120:
YY_USER_ACTION
# line 725 "grammar.l"
{
#line 328 "grammar.pgs"
             RETURN(LEXWORD_GREY);                }
      YY_BREAK
case 121:
YY_USER_ACTION
# line 728 "grammar.l"
{
#line 329 "grammar.pgs"
             RETURN(LEXWORD_GREY);                }
      YY_BREAK
case 122:
YY_USER_ACTION
# line 731 "grammar.l"
{
#line 330 "grammar.pgs"
             RETURN(LEXWORD_HEIGHT);              }
      YY_BREAK
case 123:
YY_USER_ACTION
# line 734 "grammar.l"
{
#line 331 "grammar.pgs"
             RETURN(LEXWORD_HIDESINGLES);         }
      YY_BREAK
case 124:
YY_USER_ACTION
# line 737 "grammar.l"
{
#line 332 "grammar.pgs"
             RETURN(LEXWORD_HIDESINGLES);         }
      YY_BREAK
case 125:
YY_USER_ACTION
# line 740 "grammar.l"
{
#line 333 "grammar.pgs"
             RETURN(LEXWORD_HIGH_MARGIN);         }
      YY_BREAK
case 126:
YY_USER_ACTION
# line 743 "grammar.l"
{
#line 334 "grammar.pgs"
             RETURN(LEXWORD_HIGH_MARGIN);         }
      YY_BREAK
case 127:
YY_USER_ACTION
# line 746 "grammar.l"
{
#line 335 "grammar.pgs"
             RETURN(LEXWORD_HIGH);               }
      YY_BREAK
case 128:
YY_USER_ACTION
# line 749 "grammar.l"
{
#line 336 "grammar.pgs"
             RETURN(LEXWORD_HIDDEN);              }
      YY_BREAK
case 129:
YY_USER_ACTION
# line 752 "grammar.l"
{
#line 337 "grammar.pgs"
             RETURN(LEXWORD_HORDER);              }
      YY_BREAK
case 130:
YY_USER_ACTION
# line 755 "grammar.l"
{
#line 338 "grammar.pgs"
             RETURN(LEXWORD_HORDER);              }
      YY_BREAK
case 131:
YY_USER_ACTION
# line 758 "grammar.l"
{
#line 339 "grammar.pgs"
             RETURN(LEXWORD_ICONFILE);            }
      YY_BREAK
case 132:
YY_USER_ACTION
# line 761 "grammar.l"
{
#line 340 "grammar.pgs"
             RETURN(LEXWORD_ICONFILE);            }
      YY_BREAK
case 133:
YY_USER_ACTION
# line 764 "grammar.l"
{
#line 341 "grammar.pgs"
             RETURN(LEXWORD_ICONHEIGHT);          }
      YY_BREAK
case 134:
YY_USER_ACTION
# line 767 "grammar.l"
{
#line 342 "grammar.pgs"
             RETURN(LEXWORD_ICONHEIGHT);          }
      YY_BREAK
case 135:
YY_USER_ACTION
# line 770 "grammar.l"
{
#line 343 "grammar.pgs"
             RETURN(LEXWORD_ICONSTYLE);           }
      YY_BREAK
case 136:
YY_USER_ACTION
# line 773 "grammar.l"
{
#line 344 "grammar.pgs"
             RETURN(LEXWORD_ICONSTYLE);           }
      YY_BREAK
case 137:
YY_USER_ACTION
# line 776 "grammar.l"
{
#line 345 "grammar.pgs"
             RETURN(LEXWORD_ICONWIDTH);           }
      YY_BREAK
case 138:
YY_USER_ACTION
# line 779 "grammar.l"
{
#line 346 "grammar.pgs"
             RETURN(LEXWORD_ICONWIDTH);           }
      YY_BREAK
case 139:
YY_USER_ACTION
# line 782 "grammar.l"
{
#line 347 "grammar.pgs"
             RETURN(LEXWORD_HIDESINGLES);         }
      YY_BREAK
case 140:
YY_USER_ACTION
# line 785 "grammar.l"
{
#line 348 "grammar.pgs"
             RETURN(LEXWORD_HIDESINGLES);         }
      YY_BREAK
case 141:
YY_USER_ACTION
# line 788 "grammar.l"
{
#line 349 "grammar.pgs"
             RETURN(LEXWORD_INCLUDE);             }
      YY_BREAK
case 142:
YY_USER_ACTION
# line 791 "grammar.l"
{
#line 350 "grammar.pgs"
             RETURN(LEXWORD_INFONAME);            }
      YY_BREAK
case 143:
YY_USER_ACTION
# line 794 "grammar.l"
{
#line 351 "grammar.pgs"
             RETURN(LEXWORD_INFO1);               }
      YY_BREAK
case 144:
YY_USER_ACTION
# line 797 "grammar.l"
{
#line 352 "grammar.pgs"
             RETURN(LEXWORD_INFO2);               }
      YY_BREAK
case 145:
YY_USER_ACTION
# line 800 "grammar.l"
{
#line 353 "grammar.pgs"
             RETURN(LEXWORD_INFO3);               }
      YY_BREAK
case 146:
YY_USER_ACTION
# line 803 "grammar.l"
{
#line 354 "grammar.pgs"
             RETURN(LEXWORD_INPUTFUNCTION);       }
      YY_BREAK
case 147:
YY_USER_ACTION
# line 806 "grammar.l"
{
#line 355 "grammar.pgs"
             RETURN(LEXWORD_INPUTFUNCTION);       }
      YY_BREAK
case 148:
YY_USER_ACTION
# line 809 "grammar.l"
{
#line 356 "grammar.pgs"
             RETURN(LEXWORD_INTERVAL);            }
      YY_BREAK
case 149:
YY_USER_ACTION
# line 812 "grammar.l"
{
#line 357 "grammar.pgs"
             RETURN(LEXWORD_INVISIBLE);           }
      YY_BREAK
case 150:
YY_USER_ACTION
# line 815 "grammar.l"
{
#line 358 "grammar.pgs"
             RETURN(LEXWORD_IN_FRONT);            }
      YY_BREAK
case 151:
YY_USER_ACTION
# line 818 "grammar.l"
{
#line 359 "grammar.pgs"
             RETURN(LEXWORD_ISI);                 }
      YY_BREAK
case 152:
YY_USER_ACTION
# line 821 "grammar.l"
{
#line 360 "grammar.pgs"
             RETURN(LEXWORD_KHAKI);               }
      YY_BREAK
case 153:
YY_USER_ACTION
# line 824 "grammar.l"
{
#line 361 "grammar.pgs"
             RETURN(LEXWORD_TEXTCOLOR);           }
      YY_BREAK
case 154:
YY_USER_ACTION
# line 827 "grammar.l"
{
#line 362 "grammar.pgs"
             RETURN(LEXWORD_TEXTCOLOR);           }
      YY_BREAK
case 155:
YY_USER_ACTION
# line 830 "grammar.l"
{
#line 363 "grammar.pgs"
             RETURN(LEXWORD_LABEL);               }
      YY_BREAK
case 156:
YY_USER_ACTION
# line 833 "grammar.l"
{
#line 364 "grammar.pgs"
             RETURN(LEXWORD_LATE_LABELS);         }
      YY_BREAK
case 157:
YY_USER_ACTION
# line 836 "grammar.l"
{
#line 365 "grammar.pgs"
             RETURN(LEXWORD_LATE_LABELS);         }
      YY_BREAK
case 158:
YY_USER_ACTION
# line 839 "grammar.l"
{
#line 366 "grammar.pgs"
             RETURN(LEXWORD_LAYOUTALGORITHM);     }
      YY_BREAK
case 159:
YY_USER_ACTION
# line 842 "grammar.l"
{
#line 367 "grammar.pgs"
             RETURN(LEXWORD_LAYOUTALGORITHM);     }
      YY_BREAK
case 160:
YY_USER_ACTION
# line 845 "grammar.l"
{
#line 368 "grammar.pgs"
             RETURN(LEXWORD_LAYOUTFREQUENCY);     }
      YY_BREAK
case 161:
YY_USER_ACTION
# line 848 "grammar.l"
{
#line 369 "grammar.pgs"
             RETURN(LEXWORD_LAYOUTFREQUENCY);     }
      YY_BREAK
case 162:
YY_USER_ACTION
# line 851 "grammar.l"
{
#line 370 "grammar.pgs"
             RETURN(LEXWORD_LAYOUTPARAMETER);     }
      YY_BREAK
case 163:
YY_USER_ACTION
# line 854 "grammar.l"
{
#line 371 "grammar.pgs"
             RETURN(LEXWORD_LAYOUTPARAMETER);     }
      YY_BREAK
case 164:
YY_USER_ACTION
# line 857 "grammar.l"
{
#line 372 "grammar.pgs"
             RETURN(LEXWORD_LAYOUTDOWNFACTOR);    }
      YY_BREAK
case 165:
YY_USER_ACTION
# line 860 "grammar.l"
{
#line 373 "grammar.pgs"
             RETURN(LEXWORD_LAYOUTDOWNFACTOR);    }
      YY_BREAK
case 166:
YY_USER_ACTION
# line 863 "grammar.l"
{
#line 374 "grammar.pgs"
             RETURN(LEXWORD_LAYOUTUPFACTOR);      }
      YY_BREAK
case 167:
YY_USER_ACTION
# line 866 "grammar.l"
{
#line 375 "grammar.pgs"
             RETURN(LEXWORD_LAYOUTUPFACTOR);      }
      YY_BREAK
case 168:
YY_USER_ACTION
# line 869 "grammar.l"
{
#line 376 "grammar.pgs"
             RETURN(LEXWORD_LAYOUTNEARFACTOR);    }
      YY_BREAK
case 169:
YY_USER_ACTION
# line 872 "grammar.l"
{
#line 377 "grammar.pgs"
             RETURN(LEXWORD_LAYOUTNEARFACTOR);    }
      YY_BREAK
case 170:
YY_USER_ACTION
# line 875 "grammar.l"
{
#line 378 "grammar.pgs"
             RETURN(LEXWORD_LAYOUTSPLINEFACTOR);  }
      YY_BREAK
case 171:
YY_USER_ACTION
# line 878 "grammar.l"
{
#line 379 "grammar.pgs"
             RETURN(LEXWORD_LAYOUTSPLINEFACTOR);  }
      YY_BREAK
case 172:
YY_USER_ACTION
# line 881 "grammar.l"
{
#line 380 "grammar.pgs"
             RETURN(LEXWORD_LEFT_JUSTIFY);        } 
      YY_BREAK
case 173:
YY_USER_ACTION
# line 884 "grammar.l"
{
#line 381 "grammar.pgs"
             RETURN(LEXWORD_LEFT_JUSTIFY);        } 
      YY_BREAK
case 174:
YY_USER_ACTION
# line 887 "grammar.l"
{
#line 382 "grammar.pgs"
             RETURN(LEXWORD_LEFT_MARGIN);         } 
      YY_BREAK
case 175:
YY_USER_ACTION
# line 890 "grammar.l"
{
#line 383 "grammar.pgs"
             RETURN(LEXWORD_LEFT_MARGIN);         } 
      YY_BREAK
case 176:
YY_USER_ACTION
# line 893 "grammar.l"
{
#line 384 "grammar.pgs"
             RETURN(LEXWORD_LEFT_NEIGHBOR);       }
      YY_BREAK
case 177:
YY_USER_ACTION
# line 896 "grammar.l"
{
#line 385 "grammar.pgs"
             RETURN(LEXWORD_LEFT_NEIGHBOR);       }
      YY_BREAK
case 178:
YY_USER_ACTION
# line 899 "grammar.l"
{
#line 386 "grammar.pgs"
             RETURN(LEXWORD_LEFT_TO_RIGHT);       } 
      YY_BREAK
case 179:
YY_USER_ACTION
# line 902 "grammar.l"
{
#line 387 "grammar.pgs"
             RETURN(LEXWORD_LEFT_TO_RIGHT);       } 
      YY_BREAK
case 180:
YY_USER_ACTION
# line 905 "grammar.l"
{
#line 388 "grammar.pgs"
             RETURN(LEXWORD_LEFT);                }
      YY_BREAK
case 181:
YY_USER_ACTION
# line 908 "grammar.l"
{
#line 389 "grammar.pgs"
             RETURN(LEXWORD_LEVEL);               }
      YY_BREAK
case 182:
YY_USER_ACTION
# line 911 "grammar.l"
{
#line 390 "grammar.pgs"
             RETURN(LEXWORD_VORDER);              }
      YY_BREAK
case 183:
YY_USER_ACTION
# line 914 "grammar.l"
{
#line 391 "grammar.pgs"
             RETURN(LEXWORD_VORDER);              }
      YY_BREAK
case 184:
YY_USER_ACTION
# line 917 "grammar.l"
{
#line 392 "grammar.pgs"
             RETURN(LEXWORD_LIGHTBLUE);           }
      YY_BREAK
case 185:
YY_USER_ACTION
# line 920 "grammar.l"
{
#line 393 "grammar.pgs"
             RETURN(LEXWORD_LIGHTCYAN);           }
      YY_BREAK
case 186:
YY_USER_ACTION
# line 923 "grammar.l"
{
#line 394 "grammar.pgs"
             RETURN(LEXWORD_LIGHTGREEN);          }
      YY_BREAK
case 187:
YY_USER_ACTION
# line 926 "grammar.l"
{
#line 395 "grammar.pgs"
             RETURN(LEXWORD_LIGHTGREY);           }
      YY_BREAK
case 188:
YY_USER_ACTION
# line 929 "grammar.l"
{
#line 396 "grammar.pgs"
             RETURN(LEXWORD_LIGHTGREY);           }
      YY_BREAK
case 189:
YY_USER_ACTION
# line 932 "grammar.l"
{
#line 397 "grammar.pgs"
             RETURN(LEXWORD_LIGHTMAGENTA);        }
      YY_BREAK
case 190:
YY_USER_ACTION
# line 935 "grammar.l"
{
#line 398 "grammar.pgs"
             RETURN(LEXWORD_LIGHTRED);            }
      YY_BREAK
case 191:
YY_USER_ACTION
# line 938 "grammar.l"
{
#line 399 "grammar.pgs"
             RETURN(LEXWORD_LIGHTYELLOW);         }
      YY_BREAK
case 192:
YY_USER_ACTION
# line 941 "grammar.l"
{
#line 400 "grammar.pgs"
             RETURN(LEXWORD_LILAC);               }
      YY_BREAK
case 193:
YY_USER_ACTION
# line 944 "grammar.l"
{
#line 401 "grammar.pgs"
             RETURN(LEXWORD_LIMIT);               } 
      YY_BREAK
case 194:
YY_USER_ACTION
# line 947 "grammar.l"
{
#line 402 "grammar.pgs"
             RETURN(LEXWORD_LINE);                } 
      YY_BREAK
case 195:
YY_USER_ACTION
# line 950 "grammar.l"
{
#line 403 "grammar.pgs"
             RETURN(LEXWORD_LINESTYLE);           } 
      YY_BREAK
case 196:
YY_USER_ACTION
# line 953 "grammar.l"
{
#line 404 "grammar.pgs"
             RETURN(LEXWORD_LINESTYLE);           } 
      YY_BREAK
case 197:
YY_USER_ACTION
# line 956 "grammar.l"
{
#line 405 "grammar.pgs"
             RETURN(LEXWORD_LOC);                 }
      YY_BREAK
case 198:
YY_USER_ACTION
# line 959 "grammar.l"
{
#line 406 "grammar.pgs"
             RETURN(LEXWORD_LOWER_NEIGHBOR);      }
      YY_BREAK
case 199:
YY_USER_ACTION
# line 962 "grammar.l"
{
#line 407 "grammar.pgs"
             RETURN(LEXWORD_LOWER_NEIGHBOR);      }
      YY_BREAK
case 200:
YY_USER_ACTION
# line 965 "grammar.l"
{
#line 408 "grammar.pgs"
             RETURN(LEXWORD_LOW_MARGIN);          } 
      YY_BREAK
case 201:
YY_USER_ACTION
# line 968 "grammar.l"
{
#line 409 "grammar.pgs"
             RETURN(LEXWORD_LOW_MARGIN);          } 
      YY_BREAK
case 202:
YY_USER_ACTION
# line 971 "grammar.l"
{
#line 410 "grammar.pgs"
             RETURN(LEXWORD_LOW);                 } 
      YY_BREAK
case 203:
YY_USER_ACTION
# line 974 "grammar.l"
{
#line 411 "grammar.pgs"
             RETURN(LEXWORD_MAGENTA);             }
      YY_BREAK
case 204:
YY_USER_ACTION
# line 977 "grammar.l"
{
#line 412 "grammar.pgs"
             RETURN(LEXWORD_MANHATTEN);           } 
      YY_BREAK
case 205:
YY_USER_ACTION
# line 980 "grammar.l"
{
#line 413 "grammar.pgs"
             RETURN(LEXWORD_MANHATTEN);           } 
      YY_BREAK
case 206:
YY_USER_ACTION
# line 983 "grammar.l"
{
#line 414 "grammar.pgs"
             RETURN(LEXWORD_MANHATTEN);           } 
      YY_BREAK
case 207:
YY_USER_ACTION
# line 986 "grammar.l"
{
#line 415 "grammar.pgs"
             RETURN(LEXWORD_MANHATTEN);           } 
      YY_BREAK
case 208:
YY_USER_ACTION
# line 989 "grammar.l"
{
#line 416 "grammar.pgs"
             RETURN(LEXWORD_MANUAL);              } 
      YY_BREAK
case 209:
YY_USER_ACTION
# line 992 "grammar.l"
{
#line 417 "grammar.pgs"
             RETURN(LEXWORD_MAXDEPTHSLOW);        } 
      YY_BREAK
case 210:
YY_USER_ACTION
# line 995 "grammar.l"
{
#line 418 "grammar.pgs"
             RETURN(LEXWORD_MAXDEPTH);            } 
      YY_BREAK
case 211:
YY_USER_ACTION
# line 998 "grammar.l"
{
#line 419 "grammar.pgs"
             RETURN(LEXWORD_MAXDEGREE);           } 
      YY_BREAK
case 212:
YY_USER_ACTION
# line 1001 "grammar.l"
{
#line 420 "grammar.pgs"
             RETURN(LEXWORD_MAXINDEGREE);         } 
      YY_BREAK
case 213:
YY_USER_ACTION
# line 1004 "grammar.l"
{
#line 421 "grammar.pgs"
             RETURN(LEXWORD_MAXOUTDEGREE);        } 
      YY_BREAK
case 214:
YY_USER_ACTION
# line 1007 "grammar.l"
{
#line 422 "grammar.pgs"
             RETURN(LEXWORD_MEDIAN);              } 
      YY_BREAK
case 215:
YY_USER_ACTION
# line 1010 "grammar.l"
{
#line 423 "grammar.pgs"
             RETURN(LEXWORD_MEDIANBARY);          } 
      YY_BREAK
case 216:
YY_USER_ACTION
# line 1013 "grammar.l"
{
#line 424 "grammar.pgs"
             RETURN(LEXWORD_MINDEPTHSLOW);        } 
      YY_BREAK
case 217:
YY_USER_ACTION
# line 1016 "grammar.l"
{
#line 425 "grammar.pgs"
             RETURN(LEXWORD_MINDEPTH);            } 
      YY_BREAK
case 218:
YY_USER_ACTION
# line 1019 "grammar.l"
{
#line 426 "grammar.pgs"
             RETURN(LEXWORD_MINDEGREE);           } 
      YY_BREAK
case 219:
YY_USER_ACTION
# line 1022 "grammar.l"
{
#line 427 "grammar.pgs"
             RETURN(LEXWORD_MININDEGREE);         } 
      YY_BREAK
case 220:
YY_USER_ACTION
# line 1025 "grammar.l"
{
#line 428 "grammar.pgs"
             RETURN(LEXWORD_MINOUTDEGREE);        } 
      YY_BREAK
case 221:
YY_USER_ACTION
# line 1028 "grammar.l"
{
#line 429 "grammar.pgs"
             RETURN(LEXWORD_MINBACK);             } 
      YY_BREAK
case 222:
YY_USER_ACTION
# line 1031 "grammar.l"
{
#line 430 "grammar.pgs"
             RETURN(LEXWORD_NAME);                } 
      YY_BREAK
case 223:
YY_USER_ACTION
# line 1034 "grammar.l"
{
#line 431 "grammar.pgs"
             RETURN(LEXWORD_NEAREDGE);            }
      YY_BREAK
case 224:
YY_USER_ACTION
# line 1037 "grammar.l"
{
#line 432 "grammar.pgs"
             RETURN(LEXWORD_NEAREDGE);            }
      YY_BREAK
case 225:
YY_USER_ACTION
# line 1040 "grammar.l"
{
#line 433 "grammar.pgs"
             RETURN(LEXWORD_NEIGHBORS);           } 
      YY_BREAK
case 226:
YY_USER_ACTION
# line 1043 "grammar.l"
{
#line 434 "grammar.pgs"
             RETURN(LEXWORD_NEAREDGES);           }
      YY_BREAK
case 227:
YY_USER_ACTION
# line 1046 "grammar.l"
{
#line 435 "grammar.pgs"
             RETURN(LEXWORD_NEAREDGES);           }
      YY_BREAK
case 228:
YY_USER_ACTION
# line 1049 "grammar.l"
{
#line 436 "grammar.pgs"
             RETURN(LEXWORD_NONEAREDGES);         }
      YY_BREAK
case 229:
YY_USER_ACTION
# line 1052 "grammar.l"
{
#line 437 "grammar.pgs"
             RETURN(LEXWORD_NONEAREDGES);         }
      YY_BREAK
case 230:
YY_USER_ACTION
# line 1055 "grammar.l"
{
#line 438 "grammar.pgs"
             RETURN(LEXWORD_NONEAREDGES);         }
      YY_BREAK
case 231:
YY_USER_ACTION
# line 1058 "grammar.l"
{
#line 439 "grammar.pgs"
             RETURN(LEXWORD_NODE1);               }
      YY_BREAK
case 232:
YY_USER_ACTION
# line 1061 "grammar.l"
{
#line 440 "grammar.pgs"
             RETURN(LEXWORD_NODE2);               }
      YY_BREAK
case 233:
YY_USER_ACTION
# line 1064 "grammar.l"
{
#line 441 "grammar.pgs"
             RETURN(LEXWORD_NODES);               }
      YY_BREAK
case 234:
YY_USER_ACTION
# line 1067 "grammar.l"
{
#line 442 "grammar.pgs"
             RETURN(LEXWORD_NODE_ALIGN);          }
      YY_BREAK
case 235:
YY_USER_ACTION
# line 1070 "grammar.l"
{
#line 443 "grammar.pgs"
             RETURN(LEXWORD_NODE_ALIGN);          }
      YY_BREAK
case 236:
YY_USER_ACTION
# line 1073 "grammar.l"
{
#line 444 "grammar.pgs"
             RETURN(LEXWORD_NONE);                }
      YY_BREAK
case 237:
YY_USER_ACTION
# line 1076 "grammar.l"
{
#line 445 "grammar.pgs"
             RETURN(LEXWORD_NO);                  }
      YY_BREAK
case 238:
YY_USER_ACTION
# line 1079 "grammar.l"
{
#line 446 "grammar.pgs"
             RETURN(LEXWORD_ORANGE);              }
      YY_BREAK
case 239:
YY_USER_ACTION
# line 1082 "grammar.l"
{
#line 447 "grammar.pgs"
             RETURN(LEXWORD_ORCHID);              }
      YY_BREAK
case 240:
YY_USER_ACTION
# line 1085 "grammar.l"
{
#line 448 "grammar.pgs"
             RETURN(LEXWORD_ORIENTATION);         } 
      YY_BREAK
case 241:
YY_USER_ACTION
# line 1088 "grammar.l"
{
#line 449 "grammar.pgs"
             RETURN(LEXWORD_OUTPUTFUNCTION);      }
      YY_BREAK
case 242:
YY_USER_ACTION
# line 1091 "grammar.l"
{
#line 450 "grammar.pgs"
             RETURN(LEXWORD_OUTPUTFUNCTION);      }
      YY_BREAK
case 243:
YY_USER_ACTION
# line 1094 "grammar.l"
{
#line 451 "grammar.pgs"
             RETURN(LEXWORD_PFISH);               }
      YY_BREAK
case 244:
YY_USER_ACTION
# line 1097 "grammar.l"
{
#line 452 "grammar.pgs"
             RETURN(LEXWORD_PINK);                }
      YY_BREAK
case 245:
YY_USER_ACTION
# line 1100 "grammar.l"
{
#line 453 "grammar.pgs"
             RETURN(LEXWORD_PLANAR);              }
      YY_BREAK
case 246:
YY_USER_ACTION
# line 1103 "grammar.l"
{
#line 454 "grammar.pgs"
             RETURN(LEXWORD_PMIN);                }
      YY_BREAK
case 247:
YY_USER_ACTION
# line 1106 "grammar.l"
{
#line 455 "grammar.pgs"
             RETURN(LEXWORD_PMAX);                }
      YY_BREAK
case 248:
YY_USER_ACTION
# line 1109 "grammar.l"
{
#line 456 "grammar.pgs"
             RETURN(LEXWORD_PORTSHARING);         } 
      YY_BREAK
case 249:
YY_USER_ACTION
# line 1112 "grammar.l"
{
#line 457 "grammar.pgs"
             RETURN(LEXWORD_PORTSHARING);         } 
      YY_BREAK
case 250:
YY_USER_ACTION
# line 1115 "grammar.l"
{
#line 458 "grammar.pgs"
             RETURN(LEXWORD_PRIORITYPHASE);       }
      YY_BREAK
case 251:
YY_USER_ACTION
# line 1118 "grammar.l"
{
#line 459 "grammar.pgs"
             RETURN(LEXWORD_PRIORITYPHASE);       }
      YY_BREAK
case 252:
YY_USER_ACTION
# line 1121 "grammar.l"
{
#line 460 "grammar.pgs"
             RETURN(LEXWORD_PRIORITY);            }
      YY_BREAK
case 253:
YY_USER_ACTION
# line 1124 "grammar.l"
{
#line 461 "grammar.pgs"
             RETURN(LEXWORD_PURPLE);              } 
      YY_BREAK
case 254:
YY_USER_ACTION
# line 1127 "grammar.l"
{
#line 462 "grammar.pgs"
             RETURN(LEXWORD_RANGE);               } 
      YY_BREAK
case 255:
YY_USER_ACTION
# line 1130 "grammar.l"
{
#line 463 "grammar.pgs"
             RETURN(LEXWORD_RED);                 }
      YY_BREAK
case 256:
YY_USER_ACTION
# line 1133 "grammar.l"
{
#line 464 "grammar.pgs"
             RETURN(LEXWORD_RHOMB);               }
      YY_BREAK
case 257:
YY_USER_ACTION
# line 1136 "grammar.l"
{
#line 465 "grammar.pgs"
             RETURN(LEXWORD_RIGHT_JUSTIFY);       }
      YY_BREAK
case 258:
YY_USER_ACTION
# line 1139 "grammar.l"
{
#line 466 "grammar.pgs"
             RETURN(LEXWORD_RIGHT_JUSTIFY);       }
      YY_BREAK
case 259:
YY_USER_ACTION
# line 1142 "grammar.l"
{
#line 467 "grammar.pgs"
             RETURN(LEXWORD_RIGHT_MARGIN);        }
      YY_BREAK
case 260:
YY_USER_ACTION
# line 1145 "grammar.l"
{
#line 468 "grammar.pgs"
             RETURN(LEXWORD_RIGHT_MARGIN);        }
      YY_BREAK
case 261:
YY_USER_ACTION
# line 1148 "grammar.l"
{
#line 469 "grammar.pgs"
             RETURN(LEXWORD_RIGHT_NEIGHBOR);      }
      YY_BREAK
case 262:
YY_USER_ACTION
# line 1151 "grammar.l"
{
#line 470 "grammar.pgs"
             RETURN(LEXWORD_RIGHT_NEIGHBOR);      }
      YY_BREAK
case 263:
YY_USER_ACTION
# line 1154 "grammar.l"
{
#line 471 "grammar.pgs"
             RETURN(LEXWORD_RIGHT_TO_LEFT);       }
      YY_BREAK
case 264:
YY_USER_ACTION
# line 1157 "grammar.l"
{
#line 472 "grammar.pgs"
             RETURN(LEXWORD_RIGHT_TO_LEFT);       }
      YY_BREAK
case 265:
YY_USER_ACTION
# line 1160 "grammar.l"
{
#line 473 "grammar.pgs"
             RETURN(LEXWORD_RIGHT);               }
      YY_BREAK
case 266:
YY_USER_ACTION
# line 1163 "grammar.l"
{
#line 474 "grammar.pgs"
             RETURN(LEXWORD_RMIN);                }
      YY_BREAK
case 267:
YY_USER_ACTION
# line 1166 "grammar.l"
{
#line 475 "grammar.pgs"
             RETURN(LEXWORD_RMAX);                }
      YY_BREAK
case 268:
YY_USER_ACTION
# line 1169 "grammar.l"
{
#line 476 "grammar.pgs"
             RETURN(LEXWORD_SCALING);             }
      YY_BREAK
case 269:
YY_USER_ACTION
# line 1172 "grammar.l"
{
#line 477 "grammar.pgs"
             RETURN(LEXWORD_SHAPE);               }
      YY_BREAK
case 270:
YY_USER_ACTION
# line 1175 "grammar.l"
{
#line 478 "grammar.pgs"
             RETURN(LEXWORD_SHRINK);              }
      YY_BREAK
case 271:
YY_USER_ACTION
# line 1178 "grammar.l"
{
#line 479 "grammar.pgs"
             RETURN(LEXWORD_SMAX);                }
      YY_BREAK
case 272:
YY_USER_ACTION
# line 1181 "grammar.l"
{
#line 480 "grammar.pgs"
             RETURN(LEXWORD_SMANHATTEN);          } 
      YY_BREAK
case 273:
YY_USER_ACTION
# line 1184 "grammar.l"
{
#line 481 "grammar.pgs"
             RETURN(LEXWORD_SMANHATTEN);          } 
      YY_BREAK
case 274:
YY_USER_ACTION
# line 1187 "grammar.l"
{
#line 482 "grammar.pgs"
             RETURN(LEXWORD_SMANHATTEN);          } 
      YY_BREAK
case 275:
YY_USER_ACTION
# line 1190 "grammar.l"
{
#line 483 "grammar.pgs"
             RETURN(LEXWORD_SMANHATTEN);          } 
      YY_BREAK
case 276:
YY_USER_ACTION
# line 1193 "grammar.l"
{
#line 484 "grammar.pgs"
             RETURN(LEXWORD_SIZE);                }
      YY_BREAK
case 277:
YY_USER_ACTION
# line 1196 "grammar.l"
{
#line 485 "grammar.pgs"
             RETURN(LEXWORD_SMALLER);             }
      YY_BREAK
case 278:
YY_USER_ACTION
# line 1199 "grammar.l"
{
#line 486 "grammar.pgs"
             RETURN(LEXWORD_SOLID);               }
      YY_BREAK
case 279:
YY_USER_ACTION
# line 1202 "grammar.l"
{
#line 487 "grammar.pgs"
             RETURN(LEXWORD_SOURCENAME);          }
      YY_BREAK
case 280:
YY_USER_ACTION
# line 1205 "grammar.l"
{
#line 488 "grammar.pgs"
             RETURN(LEXWORD_SOURCENAME);          }
      YY_BREAK
case 281:
YY_USER_ACTION
# line 1208 "grammar.l"
{
#line 489 "grammar.pgs"
             RETURN(LEXWORD_SPLINES);             }
      YY_BREAK
case 282:
YY_USER_ACTION
# line 1211 "grammar.l"
{
#line 490 "grammar.pgs"
             RETURN(LEXWORD_LAYOUTSPLINEFACTOR);  }
      YY_BREAK
case 283:
YY_USER_ACTION
# line 1214 "grammar.l"
{
#line 491 "grammar.pgs"
             RETURN(LEXWORD_LAYOUTSPLINEFACTOR);  }
      YY_BREAK
case 284:
YY_USER_ACTION
# line 1217 "grammar.l"
{
#line 492 "grammar.pgs"
             RETURN(LEXWORD_SPREADLEVEL);         }
      YY_BREAK
case 285:
YY_USER_ACTION
# line 1220 "grammar.l"
{
#line 493 "grammar.pgs"
             RETURN(LEXWORD_SPREADLEVEL);         }
      YY_BREAK
case 286:
YY_USER_ACTION
# line 1223 "grammar.l"
{
#line 494 "grammar.pgs"
             RETURN(LEXWORD_STATUS);              }
      YY_BREAK
case 287:
YY_USER_ACTION
# line 1226 "grammar.l"
{
#line 495 "grammar.pgs"
             RETURN(LEXWORD_STRETCH);             }
      YY_BREAK
case 288:
YY_USER_ACTION
# line 1229 "grammar.l"
{
#line 496 "grammar.pgs"
             RETURN(LEXWORD_STRAIGHTPHASE);       }
      YY_BREAK
case 289:
YY_USER_ACTION
# line 1232 "grammar.l"
{
#line 497 "grammar.pgs"
             RETURN(LEXWORD_STRAIGHTPHASE);       }
      YY_BREAK
case 290:
YY_USER_ACTION
# line 1235 "grammar.l"
{
#line 498 "grammar.pgs"
             RETURN(LEXWORD_TARGETNAME);          }
      YY_BREAK
case 291:
YY_USER_ACTION
# line 1238 "grammar.l"
{
#line 499 "grammar.pgs"
             RETURN(LEXWORD_TARGETNAME);          }
      YY_BREAK
case 292:
YY_USER_ACTION
# line 1241 "grammar.l"
{
#line 500 "grammar.pgs"
             RETURN(LEXWORD_TEXTCOLOR);           }
      YY_BREAK
case 293:
YY_USER_ACTION
# line 1244 "grammar.l"
{
#line 501 "grammar.pgs"
             RETURN(LEXWORD_TEXTCOLOR);           }
      YY_BREAK
case 294:
YY_USER_ACTION
# line 1247 "grammar.l"
{
#line 502 "grammar.pgs"
             RETURN(LEXWORD_TEXTMODE);            }
      YY_BREAK
case 295:
YY_USER_ACTION
# line 1250 "grammar.l"
{
#line 503 "grammar.pgs"
             RETURN(LEXWORD_TEXTMODE);            }
      YY_BREAK
case 296:
YY_USER_ACTION
# line 1253 "grammar.l"
{
#line 504 "grammar.pgs"
             RETURN(LEXWORD_THICKNESS);           }
      YY_BREAK
case 297:
YY_USER_ACTION
# line 1256 "grammar.l"
{
#line 505 "grammar.pgs"
             RETURN(LEXWORD_TITLE);               } 
      YY_BREAK
case 298:
YY_USER_ACTION
# line 1259 "grammar.l"
{
#line 506 "grammar.pgs"
             RETURN(LEXWORD_TOPSORT);             }
      YY_BREAK
case 299:
YY_USER_ACTION
# line 1262 "grammar.l"
{
#line 507 "grammar.pgs"
             RETURN(LEXWORD_TOPSORT);             }
      YY_BREAK
case 300:
YY_USER_ACTION
# line 1265 "grammar.l"
{
#line 508 "grammar.pgs"
             RETURN(LEXWORD_TOP_MARGIN);          }
      YY_BREAK
case 301:
YY_USER_ACTION
# line 1268 "grammar.l"
{
#line 509 "grammar.pgs"
             RETURN(LEXWORD_TOP_MARGIN);          }
      YY_BREAK
case 302:
YY_USER_ACTION
# line 1271 "grammar.l"
{
#line 510 "grammar.pgs"
             RETURN(LEXWORD_TOP_TO_BOTTOM);       }
      YY_BREAK
case 303:
YY_USER_ACTION
# line 1274 "grammar.l"
{
#line 511 "grammar.pgs"
             RETURN(LEXWORD_TOP_TO_BOTTOM);       }
      YY_BREAK
case 304:
YY_USER_ACTION
# line 1277 "grammar.l"
{
#line 512 "grammar.pgs"
             RETURN(LEXWORD_TOP);                 } 
      YY_BREAK
case 305:
YY_USER_ACTION
# line 1280 "grammar.l"
{
#line 513 "grammar.pgs"
             RETURN(LEXWORD_TREE);                }
      YY_BREAK
case 306:
YY_USER_ACTION
# line 1283 "grammar.l"
{
#line 514 "grammar.pgs"
             RETURN(LEXWORD_TREEFACTOR);          }
      YY_BREAK
case 307:
YY_USER_ACTION
# line 1286 "grammar.l"
{
#line 515 "grammar.pgs"
             RETURN(LEXWORD_TREEFACTOR);          }
      YY_BREAK
case 308:
YY_USER_ACTION
# line 1289 "grammar.l"
{
#line 516 "grammar.pgs"
             RETURN(LEXWORD_TRIANGLE);            }
      YY_BREAK
case 309:
YY_USER_ACTION
# line 1292 "grammar.l"
{
#line 517 "grammar.pgs"
             RETURN(LEXWORD_TURQUOISE);           }
      YY_BREAK
case 310:
YY_USER_ACTION
# line 1295 "grammar.l"
{
#line 518 "grammar.pgs"
             RETURN(LEXWORD_TYPENAME);            }
      YY_BREAK
case 311:
YY_USER_ACTION
# line 1298 "grammar.l"
{
#line 519 "grammar.pgs"
             RETURN(LEXWORD_TYPENAME);            }
      YY_BREAK
case 312:
YY_USER_ACTION
# line 1301 "grammar.l"
{
#line 520 "grammar.pgs"
             RETURN(LEXWORD_UPPER_NEIGHBOR);      }
      YY_BREAK
case 313:
YY_USER_ACTION
# line 1304 "grammar.l"
{
#line 521 "grammar.pgs"
             RETURN(LEXWORD_UPPER_NEIGHBOR);      }
      YY_BREAK
case 314:
YY_USER_ACTION
# line 1307 "grammar.l"
{
#line 522 "grammar.pgs"
             RETURN(LEXWORD_VIEW);                }
      YY_BREAK
case 315:
YY_USER_ACTION
# line 1310 "grammar.l"
{
#line 523 "grammar.pgs"
             RETURN(LEXWORD_WHITE);               }
      YY_BREAK
case 316:
YY_USER_ACTION
# line 1313 "grammar.l"
{
#line 524 "grammar.pgs"
             RETURN(LEXWORD_WIDTH);               }
      YY_BREAK
case 317:
YY_USER_ACTION
# line 1316 "grammar.l"
{
#line 525 "grammar.pgs"
             RETURN(LEXWORD_XBASE);               }
      YY_BREAK
case 318:
YY_USER_ACTION
# line 1319 "grammar.l"
{
#line 526 "grammar.pgs"
             RETURN(LEXWORD_XMAX);                }
      YY_BREAK
case 319:
YY_USER_ACTION
# line 1322 "grammar.l"
{
#line 527 "grammar.pgs"
             RETURN(LEXWORD_XRASTER);             }
      YY_BREAK
case 320:
YY_USER_ACTION
# line 1325 "grammar.l"
{
#line 528 "grammar.pgs"
             RETURN(LEXWORD_XLRASTER);            }
      YY_BREAK
case 321:
YY_USER_ACTION
# line 1328 "grammar.l"
{
#line 529 "grammar.pgs"
             RETURN(LEXWORD_XSCROLLBAR);          }
      YY_BREAK
case 322:
YY_USER_ACTION
# line 1331 "grammar.l"
{
#line 530 "grammar.pgs"
             RETURN(LEXWORD_XSPACE);              }
      YY_BREAK
case 323:
YY_USER_ACTION
# line 1334 "grammar.l"
{
#line 531 "grammar.pgs"
             RETURN(LEXWORD_XLSPACE);             }
      YY_BREAK
case 324:
YY_USER_ACTION
# line 1337 "grammar.l"
{
#line 532 "grammar.pgs"
             RETURN(LEXWORD_YBASE);               }
      YY_BREAK
case 325:
YY_USER_ACTION
# line 1340 "grammar.l"
{
#line 533 "grammar.pgs"
             RETURN(LEXWORD_YELLOWGREEN);         }
      YY_BREAK
case 326:
YY_USER_ACTION
# line 1343 "grammar.l"
{
#line 534 "grammar.pgs"
             RETURN(LEXWORD_YELLOW);              }
      YY_BREAK
case 327:
YY_USER_ACTION
# line 1346 "grammar.l"
{
#line 535 "grammar.pgs"
             RETURN(LEXWORD_YES);                 }
      YY_BREAK
case 328:
YY_USER_ACTION
# line 1349 "grammar.l"
{
#line 536 "grammar.pgs"
             RETURN(LEXWORD_YMAX);                }
      YY_BREAK
case 329:
YY_USER_ACTION
# line 1352 "grammar.l"
{
#line 537 "grammar.pgs"
             RETURN(LEXWORD_YRASTER);             }
      YY_BREAK
case 330:
YY_USER_ACTION
# line 1355 "grammar.l"
{
#line 538 "grammar.pgs"
             RETURN(LEXWORD_YSCROLLBAR);          }
      YY_BREAK
case 331:
YY_USER_ACTION
# line 1358 "grammar.l"
{
#line 539 "grammar.pgs"
             RETURN(LEXWORD_YSPACE);              }
      YY_BREAK
case 332:
YY_USER_ACTION
# line 1362 "grammar.l"
{
#line 541 "grammar.pgs"
             line_directive(yytext);       }
      YY_BREAK
case 333:
YY_USER_ACTION
# line 1365 "grammar.l"
{
#line 542 "grammar.pgs"
             line_directive(yytext);       }
      YY_BREAK
case 334:
YY_USER_ACTION
# line 1368 "grammar.l"
{
#line 543 "grammar.pgs"
             /* ignore pragma directive */ }
      YY_BREAK
case 335:
YY_USER_ACTION
# line 1372 "grammar.l"
{
#line 545 "grammar.pgs"
             pos_nr+=strlen(yytext); }
      YY_BREAK
case 336:
YY_USER_ACTION
# line 1375 "grammar.l"
{
#line 546 "grammar.pgs"
             pos_nr++;               }
      YY_BREAK
case 337:
YY_USER_ACTION
# line 1378 "grammar.l"
{
#line 547 "grammar.pgs"
             line_nr++; pos_nr=1;    }
      YY_BREAK
case 338:
YY_USER_ACTION
# line 1382 "grammar.l"
{
#line 549 "grammar.pgs"
             yylval.lnum = long_atoi(yytext); 
                    RETURN(LEX_INT); 
                  }
      YY_BREAK
case 339:
YY_USER_ACTION
# line 1387 "grammar.l"
{
#line 552 "grammar.pgs"
             yylval.lrealnum = atof(yytext); 
                    RETURN(LEX_FLOAT); 
                  }
      YY_BREAK
case 340:
YY_USER_ACTION
# line 1392 "grammar.l"
{
#line 555 "grammar.pgs"
             yylval.byte = yytext[1];
                          RETURN(LEX_CHAR);
                  }
      YY_BREAK
case 341:
YY_USER_ACTION
# line 1397 "grammar.l"
{
#line 558 "grammar.pgs"
             yytext[strlen(yytext)-1] = '\0';
                    escape_transl(&(yytext[1]));
                        yylval.lnum = HashInsert(&(yytext[1]));
                    SKIPYYTEXT;
                          RETURN(LEX_STRING);
                        }
      YY_BREAK
case 342:
YY_USER_ACTION
# line 1405 "grammar.l"
{
#line 564 "grammar.pgs"
             SKIPYYTEXT; }
      YY_BREAK
case 343:
YY_USER_ACTION
# line 1408 "grammar.l"
{
#line 565 "grammar.pgs"
             SKIPYYTEXT; }
      YY_BREAK
case 344:
YY_USER_ACTION
# line 1412 "grammar.l"
{
#line 567 "grammar.pgs"
             RETURN('{'); }
      YY_BREAK
case 345:
YY_USER_ACTION
# line 1415 "grammar.l"
{
#line 568 "grammar.pgs"
             RETURN('}'); }
      YY_BREAK
case 346:
YY_USER_ACTION
# line 1418 "grammar.l"
{
#line 569 "grammar.pgs"
             RETURN(':'); }
      YY_BREAK
case 347:
YY_USER_ACTION
# line 1421 "grammar.l"
{
#line 570 "grammar.pgs"
             RETURN('x'); }
      YY_BREAK
case 348:
YY_USER_ACTION
# line 1424 "grammar.l"
{
#line 571 "grammar.pgs"
             RETURN('y'); }
      YY_BREAK
case 349:
YY_USER_ACTION
# line 1427 "grammar.l"
{
#line 572 "grammar.pgs"
             RETURN('z'); }
      YY_BREAK
case 350:
YY_USER_ACTION
# line 1430 "grammar.l"
{
#line 573 "grammar.pgs"
             RETURN('*'); }
      YY_BREAK
case 351:
YY_USER_ACTION
# line 1433 "grammar.l"
{
#line 574 "grammar.pgs"
             RETURN('['); }
      YY_BREAK
case 352:
YY_USER_ACTION
# line 1436 "grammar.l"
{
#line 575 "grammar.pgs"
             RETURN(']'); }
      YY_BREAK
case 353:
YY_USER_ACTION
# line 1439 "grammar.l"
{
#line 576 "grammar.pgs"
             RETURN('-'); }
      YY_BREAK
case 354:
YY_USER_ACTION
# line 1445 "grammar.l"
{ 


#line 80 "/RW/esprit/users/sander/src/PARSEGEN/scan.skel"
             (void)sprintf(message,
                  "scanner reads unexpected %c",yytext[0]);
             yysyntaxerror(line_nr,pos_nr,message);
                 RETURN(' '); }
      YY_BREAK
case 355:
YY_USER_ACTION
# line 1454 "grammar.l"
ECHO;
      YY_BREAK
case YY_STATE_EOF(INITIAL):
      yyterminate();

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

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

            if ( yy_current_buffer->yy_input_file != yyin )
                  {
                  /* This can happen if we scan a file, yywrap() returns
                   * 1, and then later the user points yyin at a new
                   * file to resume scanning.  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 file.
                   */
                  yy_current_buffer->yy_input_file = yyin;
                  yy_n_chars = yy_current_buffer->yy_n_chars;
                  }

            /* 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
                        {
                        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 - 1; /* copy prev. char, too */
      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 singled characater, 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 = yy_c_buf_p - yytext_ptr;

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

      if ( yy_current_buffer->yy_eof_status != EOF_NOT_SEEN )
            /* don't do the read, it's not guaranteed to return an EOF,
             * just force an EOF
             */
            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 = yy_c_buf_p - b->yy_ch_buf;

                  b->yy_buf_size *= 2;
                  b->yy_ch_buf = (char *)
                        yy_flex_realloc( (void *) b->yy_ch_buf,
                                     b->yy_buf_size );

                  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 );
            }

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

            else
                  {
                  ret_val = EOB_ACT_LAST_MATCH;
                  yy_current_buffer->yy_eof_status = 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 begins at the second character in yy_ch_buf; the first
       * character is the one which preceded it before reading in the latest
       * buffer; it needs to be kept around in case it's a newline, so
       * yy_get_previous_state() will have with '^' rules active.
       */

      yytext_ptr = &yy_current_buffer->yy_ch_buf[1];

      return ret_val;
      }


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

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

      yy_current_state = yy_start;

      for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
            {
            register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
            if ( yy_accept[yy_current_state] )
                  {
                  yy_last_accepting_state = yy_current_state;
                  yy_last_accepting_cpos = yy_cp;
                  }
            while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                  {
                  yy_current_state = (int) yy_def[yy_current_state];
                  if ( yy_current_state >= 2052 )
                        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 >= 2052 )
                  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 == 2051);

      return yy_is_jam ? 0 : yy_current_state;
      }


#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 += dest - source;
            yy_bp += dest - source;
            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" );
            }

      if ( yy_cp > yy_bp && yy_cp[-1] == '\n' )
            yy_cp[-2] = '\n';

      *--yy_cp = (char) c;


      /* Note: the formal parameter *must* be called "yy_bp" for this
       * macro to now work correctly.
       */
      YY_DO_BEFORE_ACTION; /* set up yytext again */
      }


#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 */
                  yytext_ptr = yy_c_buf_p;
                  ++yy_c_buf_p;

                  switch ( yy_get_next_buffer() )
                        {
                        case EOB_ACT_END_OF_FILE:
                              {
                              if ( yywrap() )
                                    {
                                    yy_c_buf_p =
                                    yytext_ptr + YY_MORE_ADJ;
                                    return EOF;
                                    }

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

                        case EOB_ACT_CONTINUE_SCAN:
                              yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
                              break;

                        case EOB_ACT_LAST_MATCH:
#ifdef __cplusplus
                              YY_FATAL_ERROR(
                              "unexpected last match in yyinput()" );
#else
                              YY_FATAL_ERROR(
                              "unexpected last match in input()" );
#endif
                        }
                  }
            }

      c = *yy_c_buf_p;
      *yy_c_buf_p = '\0';     /* preserve yytext */
      yy_hold_char = *++yy_c_buf_p;

      return c;
      }


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

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


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

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

      yy_current_buffer = new_buffer;
      yy_load_buffer_state();

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


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


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

      b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );

      if ( ! b )
            YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );

      b->yy_buf_size = size;

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

      if ( ! b->yy_ch_buf )
            YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );

      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 == yy_current_buffer )
            yy_current_buffer = (YY_BUFFER_STATE) 0;

      yy_flex_free( (void *) b->yy_ch_buf );
      yy_flex_free( (void *) b );
      }


#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
      {
      b->yy_input_file = file;

      /* We put in the '\n' and start reading from [1] so that an
       * initial match-at-newline will be true.
       */

      b->yy_ch_buf[0] = '\n';
      b->yy_n_chars = 1;

      /* 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[1] = YY_END_OF_BUFFER_CHAR;
      b->yy_ch_buf[2] = YY_END_OF_BUFFER_CHAR;

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

      b->yy_is_interactive = file ? isatty( fileno(file) ) : 0;

      b->yy_fill_buffer = 1;

      b->yy_eof_status = EOF_NOT_SEEN;
      }


#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 )
            {
            int 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);
      }


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]);
      }


static int yy_top_state()
      {
      return yy_start_stack[yy_start_stack_ptr - 1];
      }


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



/* 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_MORE_ADJ; \
            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_strcpy( char *s1, const char *s2 )
#else
static void yy_flex_strcpy( s1, s2 )
char *s1;
const char *s2;
#endif
      {
      while ( (*(s1++) = *(s2++)) )
            ;
      }
#endif


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

#ifdef YY_USE_PROTOS
static void *yy_flex_realloc( void *ptr, unsigned int size )
#else
static void *yy_flex_realloc( ptr, size )
void *ptr;
unsigned int size;
#endif
      {
      return (void *) realloc( 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 );
      }
# line 1454 "grammar.l"




#line 88 "/RW/esprit/users/sander/src/PARSEGEN/scan.skel"

/*--------------------------------------------------------------------*/
/*   Initialize scanner                                               */
/*--------------------------------------------------------------------*/

#ifdef ANSI_C
void init_lex(void)
#else
void init_lex()
#endif
{
      yy_init = 1;
}



#line 1 "/RW/esprit/users/sander/src/PARSEGEN/stdtc.skel"

/*--------------------------------------------------------------------*/
/*  Standard Hash Table Routines                                      */
/*--------------------------------------------------------------------*/
 
#ifdef HASHGENSTD 

#ifndef lint
static char *stdtc_id_string="$Id: stdtc.skel,v 1.7 1994/11/25 17:23:13 sander Exp sander $";
#endif


#include <stdio.h>
#include <string.h>
#include <malloc.h>

/* Global Variables */
/*------------------*/

static char **decode = NULL;
long   table_size = 0L;

/*--------------------------------------------------------------------*/
/* Fatal error: exit with message                                     */
/*--------------------------------------------------------------------*/

#ifdef ANSI_C
static void fatal_error(char *message)
#else
static void fatal_error(message)
char *message;
#endif
{
      (void)fprintf(stderr,"Fatal error: %s !\n",message);
      (void)fprintf(stderr,"Aborted !\n");
      exit(-1);
}


/*--------------------------------------------------------------------*/
/* Memory allocation for single strings                               */
/*--------------------------------------------------------------------*/

#ifndef ALIGN
#define ALIGN 8
#define IALIGN (ALIGN-1)
#endif

#ifndef STRINGBLOCKSIZE 
#define STRINGBLOCKSIZE 5000 
#endif 
 

#ifndef PARSEGENSTD

/* If we include already the standard parser library, this is not
 * necessary
 */


static char *parseheap = (char *)0;             /* the heap */ 
static char *parseheapstart;                    /* the base */
static char *parseheaptop;                      /* the top  */
static char *parseheapend;                      /* the end  */
static int  parseheapsize = STRINGBLOCKSIZE; /* the size of one block */


#ifdef ANSI_C
static void alloc_block(void)
#else
static void alloc_block()
#endif
{
        char * help, *help2;

      help =(char *)malloc(parseheapsize*sizeof(long));
        if (!help) fatal_error("memory exhausted");
      help2  = (char **)help;
      *help2 = (char *)parseheap;
      parseheap = help;
      parseheapstart = parseheaptop =
            (char *)((long)parseheap + (long)sizeof(char *));
      parseheapend = parseheap;
      parseheapend += (parseheapsize-2);
        if ((long)parseheaptop&IALIGN) 
            parseheaptop = (char *)
                  (((long)parseheaptop+(long)IALIGN)&(long)(~IALIGN));
}


/*  allocate x bytes */

#ifdef ANSI_C
static char * ParseMalloc(int x)
#else
static char * ParseMalloc(x)
int x;
#endif
{
        char * help;
        int  y;

      if (!parseheap) alloc_block();

        y = x;
        if (y&IALIGN) y = (y+IALIGN)&(~IALIGN);

        help = parseheaptop;
        parseheaptop = (char *)((long)parseheaptop+(long)y);

        if (parseheaptop > parseheapend) {

            /* heap too small -> allocate new heap block */

            alloc_block();
                help = parseheaptop;
                parseheaptop = (char *)((long)parseheaptop+(long)y);
            if (parseheaptop > parseheapend) 
                  fatal_error("string node too large");
        }
        return (help);
}


/* Global: allocate x bytes */

#ifdef ANSI_C
char *StringHeapMalloc(int x)
#else
char *StringHeapMalloc(x)
int x;
#endif
{
      return(ParseMalloc(x));
}


/* global deallocate the complete syntax tree heap */

#ifdef ANSI_C
void StringHeapFree(void)
#else
void StringHeapFree()
#endif
{
        char *help, help2;

        help = parseheap;
        while (help) {
                help2 = *(char **)help;
                (void)free(help);
                help = help2;
        }

        parseheap = (char *)0;
}

#endif /* PARSEGENSTD */


/*--------------------------------------------------------------------*/
/* Memory allocation for decode table and hash table                  */
/*--------------------------------------------------------------------*/

#ifndef hash_size
#define hash_size 211
#endif
#ifndef hashtable_size
#define hashtable_size 10000L
#endif

/* We use a hash table with linked lists */

typedef struct hash_node {
        long              num;
        struct hash_node *next;
} *hashentry;


/* The hash table */

static hashentry *hashtable = NULL;
static long hashtop = 1;

#ifdef ANSI_C
static void init_hash(void)
#else
static void init_hash()
#endif
{
      char *h;

        if (!hashtable) {

            /* no hash table present -> allocate table */

                hashtable  = (hashentry *) 
                        calloc((size_t) (hash_size+1),
                                     sizeof(hashentry));
            if (!hashtable) fatal_error("memory exhausted");
      }

        if (!decode) {

            /* no decode table present -> allocate table */

            hashtop = 1;
            table_size = hashtable_size;
                decode   = (char **) 
                        calloc((size_t) (table_size+1L),
                                          sizeof(char *));
              if (!decode) fatal_error("memory exhausted");
                h = ParseMalloc(strlen("$!+-#Start of Hash#+-!$")+1);
                decode[0]    = strcpy(h,"$!+-#Start of Hash#+-!$");
      }
}


#ifdef ANSI_C
static void increase_decode(void)
#else
static void increase_decode()
#endif
{
      char **help,**a,**b;
      long   mysize, j;

      mysize = table_size * 2L;
      help = (char **) calloc((size_t) (mysize+1), sizeof(char *));
      if (!help) fatal_error("memory exhausted");
 
      a = help;
      b = decode;
      for (j=0; j<table_size; j++) *a++ = *b++;
      if (decode) (void)free((char *)decode);
      
      decode   = help; 
      table_size = mysize;
}

#ifdef ANSI_C
void FreeHash(void)
#else
void FreeHash()
#endif
{
      if (decode) (void)free((char *)decode);
      decode   = (char **)0; 
      if (hashtable) (void)free((char *)hashtable);
        hashtable  = (hashentry *)0;
}


/*--------------------------------------------------------------------*/
/* Hash table for identifers and strings                              */
/*--------------------------------------------------------------------*/


/* the hash function */

#ifdef ANSI_C
static int hash(register char *string)
#else
static int hash(string)
char *string;
#endif
{
        register int   hashval = 0 ;
        register char *s = string;

        for(hashval=0; *s != '\0';)
                hashval = (10*hashval - 48 + *s++) % hash_size;
        hashval = ((hashval<0 ) ? -hashval : hashval);

        return(hashval % hash_size);
        /* Modulo calculation because of table range */
}



/*--------------------------------------------------------------------*/
/* Hash table: visible from outside                                   */
/*--------------------------------------------------------------------*/

#ifdef ANSI_C
long HashInsert(register char *s)
#else
long HashInsert(s)
char *s;
#endif
{
        register  hashentry new_node;
        register  int       hashval;
        register  long      look;
        char *h;

        if (!hashtable) init_hash();

        hashval  = hash(s);
      new_node = hashtable[hashval];
      look = -1L;
        while (new_node != NULL) {
                if ( strcmp(s,decode[new_node->num]) == 0L) {
                  look = new_node->num;
                  break;
            }
                new_node=new_node->next;
        }

        if (look == -1L) {
                if (hashtop == table_size-1) increase_decode();
                new_node = (hashentry)ParseMalloc(sizeof(struct hash_node));
                look = hashtop++;
                new_node->num  = look;
                new_node->next = hashtable[hashval];

                h = ParseMalloc(strlen(s)+1);
                decode[look]    = strcpy(h,s);
                hashtable[hashval] = new_node;
        }
        return(look);
}

#ifdef ANSI_C
long HashTableSize(void)
#else
long HashTableSize()
#endif
{
        if (!hashtable) init_hash();
      return(hashtop);
}

#ifdef ANSI_C
char *Decode(long x)
#else
char *Decode(x)
long x;
#endif
{
        if (!hashtable) init_hash();
      if (x<0)       return(decode[0]);
      if (x<hashtop) return(decode[x]);
      return(decode[0]);
}


#endif /* HASHGENSTD */

/*--------------------------------------------------------------------*/
 



#line 580 "grammar.pgs"

Generated by  Doxygen 1.6.0   Back to index