[LLVMdev] problem trying to write an LLVM register-allocation pass

Susan Horwitz horwitz at cs.wisc.edu
Sat Dec 1 09:31:06 PST 2012


On 11/30/2012 6:36 PM, Lang Hames wrote:
>
>
> RBP is used as the frame pointer on x86 (hence its automatic 
> appearance in your code), and shouldn't be allocated to any vreg in 
> function bar. Loading/saving RBP should be managed by the stack frame 
> setup/teardown code.
> If it doesn't already, your allocator should filter out reserved 
> registers (See MachineRegisterInfo::isReserved(unsigned preg)) when 
> assigning physregs.

I AM filtering out reserved registers.

I am not allocating RBP in function bar, I am allocating EBP, because it 
is NOT in the list of reserved registers for function bar.

Neither register RBP nor register EBP is saved/restored across the call 
from foo to bar, either by the code for the call or the code for entry 
to bar.

The input C file that is causing this problem is flex.c (attached). The 
calling function is "yyparse" and the called function is "scinstal".

Here are the reserved registers for yyparse: { 7 44 54 106 111 114 118 }

Here are the reserved registers for scinstal: { 54 111 114 }

Register EBP is preg 44, which is NOT in the reserved list for scinstal 
(nor is it an alias of any of those reserved registers; the aliases are  
{ 50 64 117 118 }).  I don;t know which preg corresponds to RBP.

You say that RBP should be saved/restored across the call.  I tried to 
generate that code, but, as I said in my previous mail,  I don't know 
how to get the appropriate TargetRegisterClass (needed to call 
CreateSpillStackObject).   Should I instead be generating code to save 
register EBP at the start of scinstal, restoring it at the end of that 
function?

Susan

>
> ArrayRef<MCPhysReg> pregs = TRC->getRawAllocationOrder(&MF);
> for (int i = 0; i < pregs.size(); ++i) {
>   if (MRI->isReserved(pregs[i]))
>     continue;
>   // use preg...
> }
>
> You could also use the AllocationOrder class to simplify the task of 
> finding valid pregs, though it does require you to use VirtRegMap.
>
> If you are already checking the reserved regs then I've misdiagnosed 
> the problem. I'd be happy to dig further if you can point me to a copy 
> of your allocator and a test case.
>
> Cheers,
> Lang.
>
>
> On Thu, Nov 29, 2012 at 3:49 PM, Susan Horwitz <horwitz at cs.wisc.edu 
> <mailto:horwitz at cs.wisc.edu>> wrote:
>
>     I have a new problem: Register RBP is used in a function foo.  (I
>     am not allocating RBP to any virtual register, the instances of
>     RBP in function foo are in the machine code when my register
>     allocator starts.)
>
>     Function foo calls function bar.  Register RBP is not saved across
>     the call, though it is live after the call.  Function bar includes
>     a virtual register.  The code that I'm using to find the registers
>     available to be allocated to that virtual register includes EBP in
>     that available-preg set.  This is a disaster, since writing into
>     EBP clobbers RBP.
>
>     I tried to add code to save all live physical registers across
>     calls, but I don't know how to get the appropriate
>     TargetRegisterClass (needed to call CreateSpillStackObject).
>
>     Is there a different way to save/restore RBP across calls?  Or a
>     way to get its TargetRegisterClass?
>
>     Susan
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20121201/bb2ee09d/attachment.html>
-------------- next part --------------
char copyright[] =
"@(#) Copyright (c) 1990 The Regents of the University of California.\n All rights reserved.\n";

typedef long unsigned int size_t;
typedef unsigned char __u_char;
typedef unsigned short int __u_short;
typedef unsigned int __u_int;
typedef unsigned long int __u_long;
typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;
typedef signed long int __int64_t;
typedef unsigned long int __uint64_t;
typedef long int __quad_t;
typedef unsigned long int __u_quad_t;
typedef unsigned long int __dev_t;
typedef unsigned int __uid_t;
typedef unsigned int __gid_t;
typedef unsigned long int __ino_t;
typedef unsigned long int __ino64_t;
typedef unsigned int __mode_t;
typedef unsigned long int __nlink_t;
typedef long int __off_t;
typedef long int __off64_t;
typedef int __pid_t;
typedef struct { int __val[2]; } __fsid_t;
typedef long int __clock_t;
typedef unsigned long int __rlim_t;
typedef unsigned long int __rlim64_t;
typedef unsigned int __id_t;
typedef long int __time_t;
typedef unsigned int __useconds_t;
typedef long int __suseconds_t;
typedef int __daddr_t;
typedef long int __swblk_t;
typedef int __key_t;
typedef int __clockid_t;
typedef void * __timer_t;
typedef long int __blksize_t;
typedef long int __blkcnt_t;
typedef long int __blkcnt64_t;
typedef unsigned long int __fsblkcnt_t;
typedef unsigned long int __fsblkcnt64_t;
typedef unsigned long int __fsfilcnt_t;
typedef unsigned long int __fsfilcnt64_t;
typedef long int __ssize_t;
typedef __off64_t __loff_t;
typedef __quad_t *__qaddr_t;
typedef char *__caddr_t;
typedef long int __intptr_t;
typedef unsigned int __socklen_t;

typedef struct _IO_FILE FILE;







typedef struct _IO_FILE __FILE;
typedef int wchar_t;
typedef unsigned int wint_t;
typedef struct
{
  int __count;
  union
  {
    wint_t __wch;
    char __wchb[4];
  } __value;
} __mbstate_t;
typedef struct
{
  __off_t __pos;
  __mbstate_t __state;
} _G_fpos_t;
typedef struct
{
  __off64_t __pos;
  __mbstate_t __state;
} _G_fpos64_t;
enum
{
  __GCONV_OK = 0,
  __GCONV_NOCONV,
  __GCONV_NODB,
  __GCONV_NOMEM,
  __GCONV_EMPTY_INPUT,
  __GCONV_FULL_OUTPUT,
  __GCONV_ILLEGAL_INPUT,
  __GCONV_INCOMPLETE_INPUT,
  __GCONV_ILLEGAL_DESCRIPTOR,
  __GCONV_INTERNAL_ERROR
};
enum
{
  __GCONV_IS_LAST = 0x0001,
  __GCONV_IGNORE_ERRORS = 0x0002
};
struct __gconv_step;
struct __gconv_step_data;
struct __gconv_loaded_object;
struct __gconv_trans_data;
typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *,
       __const unsigned char **, __const unsigned char *,
       unsigned char **, size_t *, int, int);
typedef wint_t (*__gconv_btowc_fct) (struct __gconv_step *, unsigned char);
typedef int (*__gconv_init_fct) (struct __gconv_step *);
typedef void (*__gconv_end_fct) (struct __gconv_step *);
typedef int (*__gconv_trans_fct) (struct __gconv_step *,
      struct __gconv_step_data *, void *,
      __const unsigned char *,
      __const unsigned char **,
      __const unsigned char *, unsigned char **,
      size_t *);
typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *,
       __const unsigned char *,
       unsigned char *, unsigned char *);
typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***,
     size_t *);
typedef int (*__gconv_trans_init_fct) (void **, const char *);
typedef void (*__gconv_trans_end_fct) (void *);
struct __gconv_trans_data
{
  __gconv_trans_fct __trans_fct;
  __gconv_trans_context_fct __trans_context_fct;
  __gconv_trans_end_fct __trans_end_fct;
  void *__data;
  struct __gconv_trans_data *__next;
};
struct __gconv_step
{
  struct __gconv_loaded_object *__shlib_handle;
  __const char *__modname;
  int __counter;
  char *__from_name;
  char *__to_name;
  __gconv_fct __fct;
  __gconv_btowc_fct __btowc_fct;
  __gconv_init_fct __init_fct;
  __gconv_end_fct __end_fct;
  int __min_needed_from;
  int __max_needed_from;
  int __min_needed_to;
  int __max_needed_to;
  int __stateful;
  void *__data;
};
struct __gconv_step_data
{
  unsigned char *__outbuf;
  unsigned char *__outbufend;
  int __flags;
  int __invocation_counter;



  int __internal_use;

  __mbstate_t *__statep;
  __mbstate_t __state;



  struct __gconv_trans_data *__trans;
};



typedef struct __gconv_info
{
  size_t __nsteps;
  struct __gconv_step *__steps;
  __extension__ struct __gconv_step_data __data [];
} *__gconv_t;
typedef union
{
  struct __gconv_info __cd;
  struct
  {
    struct __gconv_info __cd;
    struct __gconv_step_data __data;
  } __combined;
} _G_iconv_t;
typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
typedef __builtin_va_list __gnuc_va_list;
struct _IO_jump_t; struct _IO_FILE;
typedef void _IO_lock_t;
struct _IO_marker {
  struct _IO_marker *_next;
  struct _IO_FILE *_sbuf;
  int _pos;


};


enum __codecvt_result
{
  __codecvt_ok,
  __codecvt_partial,
  __codecvt_error,
  __codecvt_noconv
};
struct _IO_FILE {
  int _flags;
  char* _IO_read_ptr;
  char* _IO_read_end;
  char* _IO_read_base;
  char* _IO_write_base;
  char* _IO_write_ptr;
  char* _IO_write_end;
  char* _IO_buf_base;
  char* _IO_buf_end;
  char *_IO_save_base;
  char *_IO_backup_base;
  char *_IO_save_end;
  struct _IO_marker *_markers;
  struct _IO_FILE *_chain;
  int _fileno;
  int _flags2;
  __off_t _old_offset;
  unsigned short _cur_column;
  signed char _vtable_offset;
  char _shortbuf[1];
  _IO_lock_t *_lock;
  __off64_t _offset;
  void *__pad1;
  void *__pad2;
  void *__pad3;
  void *__pad4;
  size_t __pad5;
  int _mode;
  char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
};
typedef struct _IO_FILE _IO_FILE;
struct _IO_FILE_plus;
extern struct _IO_FILE_plus _IO_2_1_stdin_;
extern struct _IO_FILE_plus _IO_2_1_stdout_;
extern struct _IO_FILE_plus _IO_2_1_stderr_;
typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
     size_t __n);
typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
typedef int __io_close_fn (void *__cookie);
extern int __underflow (_IO_FILE *);
extern int __uflow (_IO_FILE *);
extern int __overflow (_IO_FILE *, int);
extern wint_t __wunderflow (_IO_FILE *);
extern wint_t __wuflow (_IO_FILE *);
extern wint_t __woverflow (_IO_FILE *, wint_t);
extern int _IO_getc (_IO_FILE *__fp);
extern int _IO_putc (int __c, _IO_FILE *__fp);
extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__));
extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__));
extern int _IO_peekc_locked (_IO_FILE *__fp);
extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__));
extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__));
extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__));
extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
   __gnuc_va_list, int *__restrict);
extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
    __gnuc_va_list);
extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t);
extern size_t _IO_sgetn (_IO_FILE *, void *, size_t);
extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int);
extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int);
extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__));

typedef _G_fpos_t fpos_t;

extern struct _IO_FILE *stdin;
extern struct _IO_FILE *stdout;
extern struct _IO_FILE *stderr;

extern int remove (__const char *__filename) __attribute__ ((__nothrow__));
extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__));


extern FILE *tmpfile (void);
extern char *tmpnam (char *__s) __attribute__ ((__nothrow__));

extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__));
extern char *tempnam (__const char *__dir, __const char *__pfx)
     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));

extern int fclose (FILE *__stream);
extern int fflush (FILE *__stream);

extern int fflush_unlocked (FILE *__stream);

extern FILE *fopen (__const char *__restrict __filename,
      __const char *__restrict __modes);
extern FILE *freopen (__const char *__restrict __filename,
        __const char *__restrict __modes,
        FILE *__restrict __stream);

extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__));

extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__));

extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
      int __modes, size_t __n) __attribute__ ((__nothrow__));





extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
         size_t __size) __attribute__ ((__nothrow__));


extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__));








extern int fprintf (FILE *__restrict __stream,
      __const char *__restrict __format, ...);




extern int printf (__const char *__restrict __format, ...);

extern int sprintf (char *__restrict __s,
      __const char *__restrict __format, ...) __attribute__ ((__nothrow__));





extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
       __gnuc_va_list __arg);




extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);

extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
       __gnuc_va_list __arg) __attribute__ ((__nothrow__));





extern int snprintf (char *__restrict __s, size_t __maxlen,
       __const char *__restrict __format, ...)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));

extern int vsnprintf (char *__restrict __s, size_t __maxlen,
        __const char *__restrict __format, __gnuc_va_list __arg)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));


extern int fscanf (FILE *__restrict __stream,
     __const char *__restrict __format, ...) ;
extern int scanf (__const char *__restrict __format, ...) ;
extern int sscanf (__const char *__restrict __s,
     __const char *__restrict __format, ...) __attribute__ ((__nothrow__));


extern int fgetc (FILE *__stream);
extern int getc (FILE *__stream);
extern int getchar (void);

extern int getc_unlocked (FILE *__stream);
extern int getchar_unlocked (void);
extern int fgetc_unlocked (FILE *__stream);

extern int fputc (int __c, FILE *__stream);
extern int putc (int __c, FILE *__stream);
extern int putchar (int __c);

extern int fputc_unlocked (int __c, FILE *__stream);
extern int putc_unlocked (int __c, FILE *__stream);
extern int putchar_unlocked (int __c);
extern int getw (FILE *__stream);
extern int putw (int __w, FILE *__stream);

extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
     ;
extern char *gets (char *__s) ;


extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
extern int puts (__const char *__s);
extern int ungetc (int __c, FILE *__stream);
extern size_t fread (void *__restrict __ptr, size_t __size,
       size_t __n, FILE *__restrict __stream) ;
extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
        size_t __n, FILE *__restrict __s) ;

extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
         size_t __n, FILE *__restrict __stream) ;
extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
          size_t __n, FILE *__restrict __stream) ;

extern int fseek (FILE *__stream, long int __off, int __whence);
extern long int ftell (FILE *__stream) ;
extern void rewind (FILE *__stream);

extern int fseeko (FILE *__stream, __off_t __off, int __whence);
extern __off_t ftello (FILE *__stream) ;

extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
extern int fsetpos (FILE *__stream, __const fpos_t *__pos);


extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__));
extern int feof (FILE *__stream) __attribute__ ((__nothrow__)) ;
extern int ferror (FILE *__stream) __attribute__ ((__nothrow__)) ;

extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;

extern void perror (__const char *__s);

extern int sys_nerr;
extern __const char *__const sys_errlist[];
extern int fileno (FILE *__stream) __attribute__ ((__nothrow__)) ;
extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
extern FILE *popen (__const char *__command, __const char *__modes) ;
extern int pclose (FILE *__stream);
extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__));
extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) ;
extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));


enum
{
  _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)),
  _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)),
  _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)),
  _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)),
  _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)),
  _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)),
  _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)),
  _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)),
  _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)),
  _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)),
  _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)),
  _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8))
};
extern __const unsigned short int **__ctype_b_loc (void)
     __attribute__ ((__const));
extern __const __int32_t **__ctype_tolower_loc (void)
     __attribute__ ((__const));
extern __const __int32_t **__ctype_toupper_loc (void)
     __attribute__ ((__const));

extern int isalnum (int) __attribute__ ((__nothrow__));
extern int isalpha (int) __attribute__ ((__nothrow__));
extern int iscntrl (int) __attribute__ ((__nothrow__));
extern int isdigit (int) __attribute__ ((__nothrow__));
extern int islower (int) __attribute__ ((__nothrow__));
extern int isgraph (int) __attribute__ ((__nothrow__));
extern int isprint (int) __attribute__ ((__nothrow__));
extern int ispunct (int) __attribute__ ((__nothrow__));
extern int isspace (int) __attribute__ ((__nothrow__));
extern int isupper (int) __attribute__ ((__nothrow__));
extern int isxdigit (int) __attribute__ ((__nothrow__));
extern int tolower (int __c) __attribute__ ((__nothrow__));
extern int toupper (int __c) __attribute__ ((__nothrow__));

extern int isascii (int __c) __attribute__ ((__nothrow__));
extern int toascii (int __c) __attribute__ ((__nothrow__));
extern int _toupper (int) __attribute__ ((__nothrow__));
extern int _tolower (int) __attribute__ ((__nothrow__));



extern void *memcpy (void *__restrict __dest,
       __const void *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *memmove (void *__dest, __const void *__src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));

extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
        int __c, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));

extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *memchr (__const void *__s, int __c, size_t __n)
      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));


extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strncpy (char *__restrict __dest,
        __const char *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
        size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int strcmp (__const char *__s1, __const char *__s2)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern int strcoll (__const char *__s1, __const char *__s2)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern size_t strxfrm (char *__restrict __dest,
         __const char *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));

extern char *strdup (__const char *__s)
     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));

extern char *strchr (__const char *__s, int __c)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
extern char *strrchr (__const char *__s, int __c)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));


extern size_t strcspn (__const char *__s, __const char *__reject)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern size_t strspn (__const char *__s, __const char *__accept)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strpbrk (__const char *__s, __const char *__accept)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strstr (__const char *__haystack, __const char *__needle)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));

extern char *__strtok_r (char *__restrict __s,
    __const char *__restrict __delim,
    char **__restrict __save_ptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
         char **__restrict __save_ptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));

extern size_t strlen (__const char *__s)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));


extern char *strerror (int __errnum) __attribute__ ((__nothrow__));

extern int strerror_r (int __errnum, char *__buf, size_t __buflen) __asm__ ("" "__xpg_strerror_r") __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern void bcopy (__const void *__src, void *__dest, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *index (__const char *__s, int __c)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
extern char *rindex (__const char *__s, int __c)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern int strcasecmp (__const char *__s1, __const char *__s2)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strsep (char **__restrict __stringp,
       __const char *__restrict __delim)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


typedef __u_char u_char;
typedef __u_short u_short;
typedef __u_int u_int;
typedef __u_long u_long;
typedef __quad_t quad_t;
typedef __u_quad_t u_quad_t;
typedef __fsid_t fsid_t;
typedef __loff_t loff_t;
typedef __ino_t ino_t;
typedef __dev_t dev_t;
typedef __gid_t gid_t;
typedef __mode_t mode_t;
typedef __nlink_t nlink_t;
typedef __uid_t uid_t;
typedef __off_t off_t;
typedef __pid_t pid_t;
typedef __id_t id_t;
typedef __ssize_t ssize_t;
typedef __daddr_t daddr_t;
typedef __caddr_t caddr_t;
typedef __key_t key_t;

typedef __time_t time_t;


typedef __clockid_t clockid_t;
typedef __timer_t timer_t;
typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;
typedef int int8_t __attribute__ ((__mode__ (__QI__)));
typedef int int16_t __attribute__ ((__mode__ (__HI__)));
typedef int int32_t __attribute__ ((__mode__ (__SI__)));
typedef int int64_t __attribute__ ((__mode__ (__DI__)));
typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
typedef int register_t __attribute__ ((__mode__ (__word__)));
typedef int __sig_atomic_t;
typedef struct
  {
    unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
  } __sigset_t;
typedef __sigset_t sigset_t;
struct timespec
  {
    __time_t tv_sec;
    long int tv_nsec;
  };
struct timeval
  {
    __time_t tv_sec;
    __suseconds_t tv_usec;
  };
typedef __suseconds_t suseconds_t;
typedef long int __fd_mask;
typedef struct
  {
    __fd_mask __fds_bits[1024 / (8 * sizeof (__fd_mask))];
  } fd_set;
typedef __fd_mask fd_mask;

extern int select (int __nfds, fd_set *__restrict __readfds,
     fd_set *__restrict __writefds,
     fd_set *__restrict __exceptfds,
     struct timeval *__restrict __timeout);
extern int pselect (int __nfds, fd_set *__restrict __readfds,
      fd_set *__restrict __writefds,
      fd_set *__restrict __exceptfds,
      const struct timespec *__restrict __timeout,
      const __sigset_t *__restrict __sigmask);

__extension__
extern __inline unsigned int gnu_dev_major (unsigned long long int __dev)
     __attribute__ ((__nothrow__));
__extension__
extern __inline unsigned int gnu_dev_minor (unsigned long long int __dev)
     __attribute__ ((__nothrow__));
__extension__
extern __inline unsigned long long int gnu_dev_makedev (unsigned int __major,
       unsigned int __minor)
     __attribute__ ((__nothrow__));
__extension__ extern __inline unsigned int
__attribute__ ((__nothrow__)) gnu_dev_major (unsigned long long int __dev)
{
  return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
}
__extension__ extern __inline unsigned int
__attribute__ ((__nothrow__)) gnu_dev_minor (unsigned long long int __dev)
{
  return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
}
__extension__ extern __inline unsigned long long int
__attribute__ ((__nothrow__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor)
{
  return ((__minor & 0xff) | ((__major & 0xfff) << 8)
   | (((unsigned long long int) (__minor & ~0xff)) << 12)
   | (((unsigned long long int) (__major & ~0xfff)) << 32));
}
typedef __blkcnt_t blkcnt_t;
typedef __fsblkcnt_t fsblkcnt_t;
typedef __fsfilcnt_t fsfilcnt_t;
typedef unsigned long int pthread_t;
typedef union
{
  char __size[56];
  long int __align;
} pthread_attr_t;
typedef struct __pthread_internal_list
{
  struct __pthread_internal_list *__prev;
  struct __pthread_internal_list *__next;
} __pthread_list_t;
typedef union
{
  struct __pthread_mutex_s
  {
    int __lock;
    unsigned int __count;
    int __owner;
    unsigned int __nusers;
    int __kind;
    int __spins;
    __pthread_list_t __list;
  } __data;
  char __size[40];
  long int __align;
} pthread_mutex_t;
typedef union
{
  char __size[4];
  int __align;
} pthread_mutexattr_t;
typedef union
{
  struct
  {
    int __lock;
    unsigned int __futex;
    __extension__ unsigned long long int __total_seq;
    __extension__ unsigned long long int __wakeup_seq;
    __extension__ unsigned long long int __woken_seq;
    void *__mutex;
    unsigned int __nwaiters;
    unsigned int __broadcast_seq;
  } __data;
  char __size[48];
  __extension__ long long int __align;
} pthread_cond_t;
typedef union
{
  char __size[4];
  int __align;
} pthread_condattr_t;
typedef unsigned int pthread_key_t;
typedef int pthread_once_t;
typedef union
{
  struct
  {
    int __lock;
    unsigned int __nr_readers;
    unsigned int __readers_wakeup;
    unsigned int __writer_wakeup;
    unsigned int __nr_readers_queued;
    unsigned int __nr_writers_queued;
    int __writer;
    int __shared;
    unsigned long int __pad1;
    unsigned long int __pad2;
    unsigned int __flags;
  } __data;
  char __size[56];
  long int __align;
} pthread_rwlock_t;
typedef union
{
  char __size[8];
  long int __align;
} pthread_rwlockattr_t;
typedef volatile int pthread_spinlock_t;
typedef union
{
  char __size[32];
  long int __align;
} pthread_barrier_t;
typedef union
{
  char __size[4];
  int __align;
} pthread_barrierattr_t;

typedef long int ptrdiff_t;

extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
extern void *calloc (size_t __nmemb, size_t __size) __attribute__ ((__nothrow__))
       __attribute__ ((__malloc__)) ;
extern void *realloc (void *__ptr, size_t __size) __attribute__ ((__nothrow__))
       __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
extern void free (void *__ptr) __attribute__ ((__nothrow__));
extern void cfree (void *__ptr) __attribute__ ((__nothrow__));
extern void *memalign (size_t __alignment, size_t __size) __attribute__ ((__nothrow__))
       __attribute__ ((__malloc__)) ;
extern void *valloc (size_t __size) __attribute__ ((__nothrow__))
       __attribute__ ((__malloc__)) ;
extern void * pvalloc (size_t __size) __attribute__ ((__nothrow__))
       __attribute__ ((__malloc__)) ;
extern void *(*__morecore) (ptrdiff_t __size);
extern void *__default_morecore (ptrdiff_t __size) __attribute__ ((__nothrow__))
       __attribute__ ((__malloc__));
struct mallinfo {
  int arena;
  int ordblks;
  int smblks;
  int hblks;
  int hblkhd;
  int usmblks;
  int fsmblks;
  int uordblks;
  int fordblks;
  int keepcost;
};
extern struct mallinfo mallinfo (void) __attribute__ ((__nothrow__));
extern int mallopt (int __param, int __val) __attribute__ ((__nothrow__));
extern int malloc_trim (size_t __pad) __attribute__ ((__nothrow__));
extern size_t malloc_usable_size (void *__ptr) __attribute__ ((__nothrow__));
extern void malloc_stats (void) __attribute__ ((__nothrow__));
extern void *malloc_get_state (void) __attribute__ ((__nothrow__));
extern int malloc_set_state (void *__ptr) __attribute__ ((__nothrow__));
extern void (*__malloc_initialize_hook) (void);
extern void (*__free_hook) (void *__ptr, __const void *);
extern void *(*__malloc_hook) (size_t __size, __const void *);
extern void *(*__realloc_hook) (void *__ptr, size_t __size, __const void *);
extern void *(*__memalign_hook) (size_t __alignment, size_t __size, __const void *);
extern void (*__after_morecore_hook) (void);
extern void __malloc_check_init (void) __attribute__ ((__nothrow__));



typedef struct
  {
    int quot;
    int rem;
  } div_t;
typedef struct
  {
    long int quot;
    long int rem;
  } ldiv_t;

extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__)) ;

extern double atof (__const char *__nptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
extern int atoi (__const char *__nptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
extern long int atol (__const char *__nptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;


__extension__ extern long long int atoll (__const char *__nptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;


extern double strtod (__const char *__restrict __nptr,
        char **__restrict __endptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;


extern long int strtol (__const char *__restrict __nptr,
   char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern unsigned long int strtoul (__const char *__restrict __nptr,
      char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

__extension__
extern long long int strtoq (__const char *__restrict __nptr,
        char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
__extension__
extern unsigned long long int strtouq (__const char *__restrict __nptr,
           char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

__extension__
extern long long int strtoll (__const char *__restrict __nptr,
         char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
__extension__
extern unsigned long long int strtoull (__const char *__restrict __nptr,
     char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

extern double __strtod_internal (__const char *__restrict __nptr,
     char **__restrict __endptr, int __group)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern float __strtof_internal (__const char *__restrict __nptr,
    char **__restrict __endptr, int __group)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern long double __strtold_internal (__const char *__restrict __nptr,
           char **__restrict __endptr,
           int __group)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern long int __strtol_internal (__const char *__restrict __nptr,
       char **__restrict __endptr,
       int __base, int __group)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern unsigned long int __strtoul_internal (__const char *__restrict __nptr,
          char **__restrict __endptr,
          int __base, int __group)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
__extension__
extern long long int __strtoll_internal (__const char *__restrict __nptr,
      char **__restrict __endptr,
      int __base, int __group)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
__extension__
extern unsigned long long int __strtoull_internal (__const char *
         __restrict __nptr,
         char **__restrict __endptr,
         int __base, int __group)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern char *l64a (long int __n) __attribute__ ((__nothrow__)) ;
extern long int a64l (__const char *__s)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
extern long int random (void) __attribute__ ((__nothrow__));
extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__));
extern char *initstate (unsigned int __seed, char *__statebuf,
   size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
struct random_data
  {
    int32_t *fptr;
    int32_t *rptr;
    int32_t *state;
    int rand_type;
    int rand_deg;
    int rand_sep;
    int32_t *end_ptr;
  };
extern int random_r (struct random_data *__restrict __buf,
       int32_t *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int srandom_r (unsigned int __seed, struct random_data *__buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
   size_t __statelen,
   struct random_data *__restrict __buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
extern int setstate_r (char *__restrict __statebuf,
         struct random_data *__restrict __buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));

extern int rand (void) __attribute__ ((__nothrow__));
extern void srand (unsigned int __seed) __attribute__ ((__nothrow__));

extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__));
extern double drand48 (void) __attribute__ ((__nothrow__));
extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern long int lrand48 (void) __attribute__ ((__nothrow__));
extern long int nrand48 (unsigned short int __xsubi[3])
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern long int mrand48 (void) __attribute__ ((__nothrow__));
extern long int jrand48 (unsigned short int __xsubi[3])
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern void srand48 (long int __seedval) __attribute__ ((__nothrow__));
extern unsigned short int *seed48 (unsigned short int __seed16v[3])
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
struct drand48_data
  {
    unsigned short int __x[3];
    unsigned short int __old_x[3];
    unsigned short int __c;
    unsigned short int __init;
    unsigned long long int __a;
  };
extern int drand48_r (struct drand48_data *__restrict __buffer,
        double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int erand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int lrand48_r (struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int nrand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int mrand48_r (struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int jrand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
extern int seed48_r (unsigned short int __seed16v[3],
       struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int lcong48_r (unsigned short int __param[7],
        struct drand48_data *__buffer)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));

extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
extern void *calloc (size_t __nmemb, size_t __size)
     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;


extern void *realloc (void *__ptr, size_t __size)
     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
extern void free (void *__ptr) __attribute__ ((__nothrow__));

extern void cfree (void *__ptr) __attribute__ ((__nothrow__));

extern void *alloca (size_t __size) __attribute__ ((__nothrow__));

extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));

extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));

extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));


extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

extern char *__secure_getenv (__const char *__name)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int setenv (__const char *__name, __const char *__value, int __replace)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__));
extern int clearenv (void) __attribute__ ((__nothrow__));
extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ;
extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

extern int system (__const char *__command) ;

extern char *realpath (__const char *__restrict __name,
         char *__restrict __resolved) __attribute__ ((__nothrow__)) ;
typedef int (*__compar_fn_t) (__const void *, __const void *);

extern void *bsearch (__const void *__key, __const void *__base,
        size_t __nmemb, size_t __size, __compar_fn_t __compar)
     __attribute__ ((__nonnull__ (1, 2, 5))) ;
extern void qsort (void *__base, size_t __nmemb, size_t __size,
     __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;


extern div_t div (int __numer, int __denom)
     __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
extern ldiv_t ldiv (long int __numer, long int __denom)
     __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;

extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
extern char *gcvt (double __value, int __ndigit, char *__buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
extern char *qecvt (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
extern char *qfcvt (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
extern char *qgcvt (long double __value, int __ndigit, char *__buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign, char *__restrict __buf,
     size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign, char *__restrict __buf,
     size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int qecvt_r (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign,
      char *__restrict __buf, size_t __len)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int qfcvt_r (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign,
      char *__restrict __buf, size_t __len)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));

extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__)) ;
extern int mbtowc (wchar_t *__restrict __pwc,
     __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)) ;
extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__)) ;
extern size_t mbstowcs (wchar_t *__restrict __pwcs,
   __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__));
extern size_t wcstombs (char *__restrict __s,
   __const wchar_t *__restrict __pwcs, size_t __n)
     __attribute__ ((__nothrow__));

extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern int posix_openpt (int __oflag) ;
extern int getloadavg (double __loadavg[], int __nelem)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));

struct hash_entry
 {
 struct hash_entry *prev, *next;
 char *name;
 char *str_val;
 int int_val;
 } ;
typedef struct hash_entry **hash_table;
extern struct hash_entry *ndtbl[101];
extern struct hash_entry *sctbl[101];
extern struct hash_entry *ccltab[101];
extern int printstats, syntaxerror, eofseen, ddebug, trace, nowarn, spprdflt;
extern int interactive, caseins, lex_compat, do_yylineno;
extern int useecs, fulltbl, usemecs, fullspd;
extern int gen_line_dirs, performance_report, backing_up_report;
extern int C_plus_plus, long_align, use_read, yytext_is_array, do_yywrap;
extern int csize;
extern int yymore_used, reject, real_reject, continued_action, in_rule;
extern int yymore_really_used, reject_really_used;
extern int datapos, dataline, linenum, out_linenum;
extern FILE *skelfile, *yyin, *backing_up_file;
extern const char *skel[];
extern int skel_ind;
extern char *infilename, *outfilename;
extern int did_outfilename;
extern char *prefix, *yyclass;
extern int do_stdinit, use_stdout;
extern char **input_files;
extern int num_input_files;
extern char *program_name;
extern char *action_array;
extern int action_size;
extern int defs1_offset, prolog_offset, action_offset, action_index;
extern int onestate[500], onesym[500];
extern int onenext[500], onedef[500], onesp;
extern int current_mns, current_max_rules;
extern int num_rules, num_eof_rules, default_rule, lastnfa;
extern int *firstst, *lastst, *finalst, *transchar, *trans1, *trans2;
extern int *accptnum, *assoc_rule, *state_type;
extern int *rule_type, *rule_linenum, *rule_useful;
extern int current_state_type;
extern int variable_trailing_context_rules;
extern int numtemps, numprots, protprev[50], protnext[50], prottbl[50];
extern int protcomst[50], firstprot, lastprot, protsave[2000];
extern int numecs, nextecm[256 + 1], ecgroup[256 + 1], nummecs;
extern int tecfwd[256 + 1], tecbck[256 + 1];
extern int lastsc, *scset, *scbol, *scxclu, *sceof;
extern int current_max_scs;
extern char **scname;
extern int current_max_dfa_size, current_max_xpairs;
extern int current_max_template_xpairs, current_max_dfas;
extern int lastdfa, *nxt, *chk, *tnxt;
extern int *base, *def, *nultrans, NUL_ec, tblend, firstfree, **dss, *dfasiz;
extern union dfaacc_union
 {
 int *dfaacc_set;
 int dfaacc_state;
 } *dfaacc;
extern int *accsiz, *dhash, numas;
extern int numsnpairs, jambase, jamstate;
extern int end_of_buffer_state;
extern int lastccl, *cclmap, *ccllen, *cclng, cclreuse;
extern int current_maxccls, current_max_ccl_tbl_size;
extern unsigned char *ccltbl;
extern char nmstr[2048];
extern int sectnum, nummt, hshcol, dfaeql, numeps, eps2, num_reallocs;
extern int tmpuses, totnst, peakpairs, numuniq, numdup, hshsave;
extern int num_backing_up, bol_needed;
void *allocate_array (int, size_t);
void *reallocate_array (void*, int, size_t);
void *flex_alloc (size_t);
void *flex_realloc (void*, size_t);
void flex_free (void*);
extern int yylval;
extern void ccladd (int, int);
extern int cclinit (void);
extern void cclnegate (int);
extern void list_character_set (FILE*, int[]);
extern void check_for_backing_up (int, int[]);
extern void check_trailing_context (int*, int, int*, int);
extern int *epsclosure (int*, int*, int[], int*, int*);
extern void increase_max_dfas (void);
extern void ntod (void);
extern int snstods (int[], int, int[], int, int, int*);
extern void ccl2ecl (void);
extern int cre8ecs (int[], int[], int);
extern void mkeccl (unsigned char[], int, int[], int[], int, int);
extern void mkechar (int, int[], int[]);
extern void do_indent (void);
extern void gen_backing_up (void);
extern void gen_bu_action (void);
extern void genctbl (void);
extern void gen_find_action (void);
extern void genftbl (void);
extern void gen_next_compressed_state (char*);
extern void gen_next_match (void);
extern void gen_next_state (int);
extern void gen_NUL_trans (void);
extern void gen_start_state (void);
extern void gentabs (void);
extern void indent_put2s (char[], char[]);
extern void indent_puts (char[]);
extern void make_tables (void);
extern void check_options (void);
extern void flexend (int);
extern void usage (void);
extern void action_define ( char *defname, int value );
extern void add_action ( char *new_text );
extern int all_lower (register char *);
extern int all_upper (register char *);
extern void bubble (int [], int);
extern void check_char (int c);
extern unsigned char clower (int);
extern char *copy_string (register const char *);
extern unsigned char *copy_unsigned_string (register unsigned char *);
extern void cshell (unsigned char [], int, int);
extern void dataend (void);
extern void dataflush (void);
extern void flexerror (const char[]);
extern void flexfatal (const char[]);
extern int htoi (unsigned char[]);
extern void lerrif (const char[], int);
extern void lerrsf (const char[], const char[]);
extern void line_directive_out (FILE*, int);
extern void mark_defs1 (void);
extern void mark_prolog (void);
extern void mk2data (int);
extern void mkdata (int);
extern int myctoi (char []);
extern unsigned char myesc (unsigned char[]);
extern int otoi (unsigned char [] );
extern void out (const char []);
extern void out_dec (const char [], int);
extern void out_dec2 (const char [], int, int);
extern void out_hex (const char [], unsigned int);
extern void out_line_count (const char []);
extern void out_str (const char [], const char []);
extern void out_str3
 (const char [], const char [], const char [], const char []);
extern void out_str_dec (const char [], const char [], int);
extern void outc (int);
extern void outn (const char []);
extern char *readable_form (int);
extern void skelout (void);
extern void transition_struct_out (int, int);
extern void *yy_flex_xmalloc ( int );
extern void zero_out (char *, size_t);
extern void add_accept (int, int);
extern int copysingl (int, int);
extern void dumpnfa (int);
extern void finish_rule (int, int, int, int);
extern int link_machines (int, int);
extern void mark_beginning_as_normal (register int);
extern int mkbranch (int, int);
extern int mkclos (int);
extern int mkopt (int);
extern int mkor (int, int);
extern int mkposcl (int);
extern int mkrep (int, int, int);
extern int mkstate (int);
extern void new_rule (void);
extern void build_eof_action (void);
extern void format_pinpoint_message (char[], char[]);
extern void pinpoint_message (char[]);
extern void line_warning ( char[], int );
extern void line_pinpoint ( char[], int );
extern void format_synerr (char [], char[]);
extern void synerr (char []);
extern void format_warn (char [], char[]);
extern void warn (char []);
extern void yyerror (char []);
extern int yyparse (void);
extern int flexscan (void);
extern void set_input_file (char*);
extern int yywrap (void);
extern int addsym (register char[], char*, int, hash_table, int);
extern void cclinstal (unsigned char [], int);
extern int ccllookup (unsigned char []);
extern struct hash_entry *findsym (register char[], hash_table, int );
extern void ndinstal (char[], unsigned char[]);
extern unsigned char *ndlookup (char[]);
extern void scextend (void);
extern void scinstal (char[], int);
extern int sclookup (char[]);
extern void bldtbl (int[], int, int, int, int);
extern void cmptmps (void);
extern void expand_nxt_chk (void);
extern int find_table_space (int*, int);
extern void inittbl (void);
extern void mkdeftbl (void);
extern void mk1tbl (int, int, int, int);
extern void place_state (int*, int, int);
extern void stack1 (int, int, int, int);
extern int yylex (void);
extern int yylval;
static char flex_version[] = "2.5.1";
void flexinit (int, char**);
void readin (void);
void set_up_initial_allocations (void);
int printstats, syntaxerror, eofseen, ddebug, trace, nowarn, spprdflt;
int interactive, caseins, lex_compat, do_yylineno, useecs, fulltbl, usemecs;
int fullspd, gen_line_dirs, performance_report, backing_up_report;
int C_plus_plus, long_align, use_read, yytext_is_array, do_yywrap, csize;
int yymore_used, reject, real_reject, continued_action, in_rule;
int yymore_really_used, reject_really_used;
int datapos, dataline, linenum, out_linenum;
FILE *skelfile = ((void *)0);
FILE *err = ((void *)0);
int skel_ind = 0;
char *action_array;
int action_size, defs1_offset, prolog_offset, action_offset, action_index;
char *infilename = ((void *)0), *outfilename = ((void *)0);
int did_outfilename;
char *prefix, *yyclass;
int do_stdinit, use_stdout;
int onestate[500], onesym[500];
int onenext[500], onedef[500], onesp;
int current_mns, current_max_rules;
int num_rules, num_eof_rules, default_rule, lastnfa;
int *firstst, *lastst, *finalst, *transchar, *trans1, *trans2;
int *accptnum, *assoc_rule, *state_type;
int *rule_type, *rule_linenum, *rule_useful;
int current_state_type;
int variable_trailing_context_rules;
int numtemps, numprots, protprev[50], protnext[50], prottbl[50];
int protcomst[50], firstprot, lastprot, protsave[2000];
int numecs, nextecm[256 + 1], ecgroup[256 + 1], nummecs, tecfwd[256 + 1];
int tecbck[256 + 1];
int lastsc, *scset, *scbol, *scxclu, *sceof;
int current_max_scs;
char **scname;
int current_max_dfa_size, current_max_xpairs;
int current_max_template_xpairs, current_max_dfas;
int lastdfa, *nxt, *chk, *tnxt;
int *base, *def, *nultrans, NUL_ec, tblend, firstfree, **dss, *dfasiz;
union dfaacc_union *dfaacc;
int *accsiz, *dhash, numas;
int numsnpairs, jambase, jamstate;
int lastccl, *cclmap, *ccllen, *cclng, cclreuse;
int current_maxccls, current_max_ccl_tbl_size;
unsigned char *ccltbl;
char nmstr[2048];
int sectnum, nummt, hshcol, dfaeql, numeps, eps2, num_reallocs;
int tmpuses, totnst, peakpairs, numuniq, numdup, hshsave;
int num_backing_up, bol_needed;
FILE *backing_up_file;
int end_of_buffer_state;
char **input_files;
int num_input_files;
char *program_name = "flex";
static char *outfile_template = "lex.%s.%s";
static char *backing_name = "lex.backup";
static char outfile_path[2048];
static int outfile_created = 0;
static char *skelname = ((void *)0);
int main( argc, argv )
int argc;
char **argv;
 {
 int i;
        if(--argc >0){
                err = fopen( *++argv, "w" );
                --argv; ++argc;
        }
 flexinit( argc, argv );
 readin();
 ntod();
 for ( i = 1; i <= num_rules; ++i )
  if ( ! rule_useful[i] && i != default_rule )
   line_warning( ("rule cannot be matched"),
     rule_linenum[i] );
 if ( spprdflt && ! reject && rule_useful[default_rule] )
  line_warning(
   ("-s option given but default rule can be matched"),
   rule_linenum[default_rule] );
 make_tables();
 flexend( 0 );
 return 0;
 }
void check_options()
 {
 int i;
 if ( lex_compat )
  {
  if ( C_plus_plus )
   flexerror( ("Can't use -+ with -l option") );
  if ( fulltbl || fullspd )
   flexerror( ("Can't use -f or -F with -l option") );
  yymore_really_used = reject_really_used = 1;
  yytext_is_array = 1;
  do_yylineno = 1;
  use_read = 0;
  }
 if ( do_yylineno )
  reject_really_used = 1;
 if ( csize == -1 )
  {
  if ( (fulltbl || fullspd) && ! useecs )
   csize = 128;
  else
   csize = 256;
  }
 if ( interactive == -1 )
  {
  if ( fulltbl || fullspd )
   interactive = 0;
  else
   interactive = 1;
  }
 if ( fulltbl || fullspd )
  {
  if ( usemecs )
   flexerror(
   ("-Cf/-CF and -Cm don't make sense together") );
  if ( interactive )
   flexerror( ("-Cf/-CF and -I are incompatible") );
  if ( lex_compat )
   flexerror(
  ("-Cf/-CF are incompatible with lex-compatibility mode") );
  if ( do_yylineno )
   flexerror(
   ("-Cf/-CF and %option yylineno are incompatible") );
  if ( fulltbl && fullspd )
   flexerror( ("-Cf and -CF are mutually exclusive") );
  }
 if ( C_plus_plus && fullspd )
  flexerror( ("Can't use -+ with -CF option") );
 if ( C_plus_plus && yytext_is_array )
  {
  warn( ("%array incompatible with -+ option") );
  yytext_is_array = 0;
  }
 if ( useecs )
  {
  ecgroup[1] = 0;
  for ( i = 2; i <= csize; ++i )
   {
   ecgroup[i] = i - 1;
   nextecm[i - 1] = i;
   }
  nextecm[csize] = 0;
  }
 else
  {
  for ( i = 1; i <= csize; ++i )
   {
   ecgroup[i] = i;
   nextecm[i] = -32767;
   }
  }
 if ( ! use_stdout )
  {
  FILE *prev_stdout;
  if ( ! did_outfilename )
   {
   char *suffix;
   if ( C_plus_plus )
    suffix = "cc";
   else
    suffix = "c";
   sprintf( outfile_path, outfile_template,
    prefix, suffix );
   outfilename = outfile_path;
   }
  prev_stdout = freopen( outfilename, "w", stdout );
  if ( prev_stdout == ((void *)0) )
   lerrsf( ("could not create %s"), outfilename );
  outfile_created = 1;
  }
 if ( skelname && (skelfile = fopen( skelname, "r" )) == ((void *)0) )
  lerrsf( ("can't open skeleton file %s"), skelname );
 if ( strcmp( prefix, "yy" ) )
  {
  if ( C_plus_plus )
   out_str3( "#define yy%s %s%s\n", "FlexLexer", prefix, "FlexLexer" );
  else
   {
   out_str3( "#define yy%s %s%s\n", "_create_buffer", prefix, "_create_buffer" );
   out_str3( "#define yy%s %s%s\n", "_delete_buffer", prefix, "_delete_buffer" );
   out_str3( "#define yy%s %s%s\n", "_scan_buffer", prefix, "_scan_buffer" );
   out_str3( "#define yy%s %s%s\n", "_scan_string", prefix, "_scan_string" );
   out_str3( "#define yy%s %s%s\n", "_scan_bytes", prefix, "_scan_bytes" );
   out_str3( "#define yy%s %s%s\n", "_flex_debug", prefix, "_flex_debug" );
   out_str3( "#define yy%s %s%s\n", "_init_buffer", prefix, "_init_buffer" );
   out_str3( "#define yy%s %s%s\n", "_flush_buffer", prefix, "_flush_buffer" );
   out_str3( "#define yy%s %s%s\n", "_load_buffer_state", prefix, "_load_buffer_state" );
   out_str3( "#define yy%s %s%s\n", "_switch_to_buffer", prefix, "_switch_to_buffer" );
   out_str3( "#define yy%s %s%s\n", "in", prefix, "in" );
   out_str3( "#define yy%s %s%s\n", "leng", prefix, "leng" );
   out_str3( "#define yy%s %s%s\n", "lex", prefix, "lex" );
   out_str3( "#define yy%s %s%s\n", "out", prefix, "out" );
   out_str3( "#define yy%s %s%s\n", "restart", prefix, "restart" );
   out_str3( "#define yy%s %s%s\n", "text", prefix, "text" );
   if ( do_yylineno )
    out_str3( "#define yy%s %s%s\n", "lineno", prefix, "lineno" );
   }
  if ( do_yywrap )
   out_str3( "#define yy%s %s%s\n", "wrap", prefix, "wrap" );
  outn( "" );
  }
 if ( did_outfilename )
  line_directive_out( stdout, 0 );
 skelout();
 }
void flexend( exit_status )
int exit_status;
 {
 int tblsiz;
 int unlink();
 if ( skelfile != ((void *)0) )
  {
  if ( ferror( skelfile ) )
   lerrsf( ("input error reading skeleton file %s"),
    skelname );
  else if ( fclose( skelfile ) )
   lerrsf( ("error closing skeleton file %s"),
    skelname );
  }
 if ( exit_status != 0 && outfile_created )
  {
  if ( ferror( stdout ) )
   lerrsf( ("error writing output file %s"),
    outfilename );
  else if ( fclose( stdout ) )
   lerrsf( ("error closing output file %s"),
    outfilename );
  else if ( unlink( outfilename ) )
   lerrsf( ("error deleting output file %s"),
    outfilename );
  }
 if ( backing_up_report && backing_up_file )
  {
  if ( num_backing_up == 0 )
   fprintf( backing_up_file, ("No backing up.\n") );
  else if ( fullspd || fulltbl )
   fprintf( backing_up_file,
    ("%d backing up (non-accepting) states.\n"),
    num_backing_up );
  else
   fprintf( backing_up_file,
    ("Compressed tables always back up.\n") );
  if ( ferror( backing_up_file ) )
   lerrsf( ("error writing backup file %s"),
    backing_name );
  else if ( fclose( backing_up_file ) )
   lerrsf( ("error closing backup file %s"),
    backing_name );
  }
 if ( printstats )
  {
  fprintf( err, ("%s version %s usage statistics:\n"),
   program_name, flex_version );
  fprintf( err, ("  scanner options: -") );
  if ( C_plus_plus )
   _IO_putc ('+', err);
  if ( backing_up_report )
   _IO_putc ('b', err);
  if ( ddebug )
   _IO_putc ('d', err);
  if ( caseins )
   _IO_putc ('i', err);
  if ( lex_compat )
   _IO_putc ('l', err);
  if ( performance_report > 0 )
   _IO_putc ('p', err);
  if ( performance_report > 1 )
   _IO_putc ('p', err);
  if ( spprdflt )
   _IO_putc ('s', err);
  if ( use_stdout )
   _IO_putc ('t', err);
  if ( printstats )
   _IO_putc ('v', err);
  if ( nowarn )
   _IO_putc ('w', err);
  if ( interactive == 0 )
   _IO_putc ('B', err);
  if ( interactive == 1 )
   _IO_putc ('I', err);
  if ( ! gen_line_dirs )
   _IO_putc ('L', err);
  if ( trace )
   _IO_putc ('T', err);
  if ( csize == -1 )
   csize = 256;
  if ( csize == 128 )
   _IO_putc ('7', err);
  else
   _IO_putc ('8', err);
  fprintf( err, " -C" );
  if ( long_align )
   _IO_putc ('a', err);
  if ( fulltbl )
   _IO_putc ('f', err);
  if ( fullspd )
   _IO_putc ('F', err);
  if ( useecs )
   _IO_putc ('e', err);
  if ( usemecs )
   _IO_putc ('m', err);
  if ( use_read )
   _IO_putc ('r', err);
  if ( did_outfilename )
   fprintf( err, " -o%s", outfilename );
  if ( skelname )
   fprintf( err, " -S%s", skelname );
  if ( strcmp( prefix, "yy" ) )
   fprintf( err, " -P%s", prefix );
  _IO_putc ('\n', err);
  fprintf( err, ("  %d/%d NFA states\n"),
   lastnfa, current_mns );
  fprintf( err, ("  %d/%d DFA states (%d words)\n"),
   lastdfa, current_max_dfas, totnst );
  fprintf( err, ("  %d rules\n"),
  num_rules + num_eof_rules - 1 );
  if ( num_backing_up == 0 )
   fprintf( err, ("  No backing up\n") );
  else if ( fullspd || fulltbl )
   fprintf( err,
   ("  %d backing-up (non-accepting) states\n"),
    num_backing_up );
  else
   fprintf( err,
    ("  Compressed tables always back-up\n") );
  if ( bol_needed )
   fprintf( err,
    ("  Beginning-of-line patterns used\n") );
  fprintf( err, ("  %d/%d start conditions\n"), lastsc,
   current_max_scs );
  fprintf( err,
   ("  %d epsilon states, %d double epsilon states\n"),
   numeps, eps2 );
  if ( lastccl == 0 )
   fprintf( err, ("  no character classes\n") );
  else
   fprintf( err,
("  %d/%d character classes needed %d/%d words of storage, %d reused\n"),
    lastccl, current_maxccls,
    cclmap[lastccl] + ccllen[lastccl],
    current_max_ccl_tbl_size, cclreuse );
  fprintf( err, ("  %d state/nextstate pairs created\n"),
   numsnpairs );
  fprintf( err, ("  %d/%d unique/duplicate transitions\n"),
   numuniq, numdup );
  if ( fulltbl )
   {
   tblsiz = lastdfa * numecs;
   fprintf( err, ("  %d table entries\n"), tblsiz );
   }
  else
   {
   tblsiz = 2 * (lastdfa + numtemps) + 2 * tblend;
   fprintf( err,
    ("  %d/%d base-def entries created\n"),
    lastdfa + numtemps, current_max_dfas );
   fprintf( err,
   ("  %d/%d (peak %d) nxt-chk entries created\n"),
    tblend, current_max_xpairs, peakpairs );
   fprintf( err,
  ("  %d/%d (peak %d) template nxt-chk entries created\n"),
    numtemps * nummecs,
    current_max_template_xpairs,
    numtemps * numecs );
   fprintf( err, ("  %d empty table entries\n"),
    nummt );
   fprintf( err, ("  %d protos created\n"),
    numprots );
   fprintf( err,
    ("  %d templates created, %d uses\n"),
    numtemps, tmpuses );
   }
  if ( useecs )
   {
   tblsiz = tblsiz + csize;
   fprintf( err,
    ("  %d/%d equivalence classes created\n"),
    numecs, csize );
   }
  if ( usemecs )
   {
   tblsiz = tblsiz + numecs;
   fprintf( err,
   ("  %d/%d meta-equivalence classes created\n"),
    nummecs, csize );
   }
  fprintf( err,
  ("  %d (%d saved) hash collisions, %d DFAs equal\n"),
   hshcol, hshsave, dfaeql );
  fprintf( err, ("  %d sets of reallocations needed\n"),
   num_reallocs );
  fprintf( err, ("  %d total table entries needed\n"),
   tblsiz );
  }
 exit( exit_status );
 }
void flexinit( argc, argv )
int argc;
char **argv;
 {
 int i, sawcmpflag;
 char *arg, *mktemp();
 printstats = syntaxerror = trace = spprdflt = caseins = 0;
 lex_compat = C_plus_plus = backing_up_report = ddebug = fulltbl = 0;
 fullspd = long_align = nowarn = yymore_used = continued_action = 0;
 do_yylineno = yytext_is_array = in_rule = reject = 0;
 yymore_really_used = reject_really_used = -1;
 interactive = csize = -1;
 do_yywrap = gen_line_dirs = usemecs = useecs = do_stdinit = 1;
 performance_report = 0;
 did_outfilename = 0;
 prefix = "yy";
 yyclass = 0;
 use_read = use_stdout = 0;
 sawcmpflag = 0;
 action_size = 2048;
 action_array = (char *) allocate_array( action_size, sizeof( char ) );
 defs1_offset = prolog_offset = action_offset = action_index = 0;
 action_array[0] = '\0';
        program_name = "Executable";
 if ( program_name[0] != '\0' &&
      program_name[strlen( program_name ) - 1] == '+' )
  C_plus_plus = 1;
        ++argv;--argc;
 for ( --argc, ++argv; argc ; --argc, ++argv )
  {
  arg = argv[0];
  if ( arg[0] != '-' || arg[1] == '\0' )
   break;
  if ( arg[1] == '-' )
   {
   if ( ! strcmp( arg, "--help" ) )
    arg = "-h";
   else if ( ! strcmp( arg, "--version" ) )
    arg = "-V";
   }
  for ( i = 1; arg[i] != '\0'; ++i )
   switch ( arg[i] )
    {
    case '+':
     C_plus_plus = 1;
     break;
    case 'B':
     interactive = 0;
     break;
    case 'b':
     backing_up_report = 1;
     break;
    case 'c':
     break;
    case 'C':
     if ( i != 1 )
      flexerror(
    ("-C flag must be given separately") );
     if ( ! sawcmpflag )
      {
      useecs = 0;
      usemecs = 0;
      fulltbl = 0;
      sawcmpflag = 1;
      }
     for ( ++i; arg[i] != '\0'; ++i )
      switch ( arg[i] )
       {
       case 'a':
        long_align =
         1;
        break;
       case 'e':
        useecs = 1;
        break;
       case 'F':
        fullspd = 1;
        break;
       case 'f':
        fulltbl = 1;
        break;
       case 'm':
        usemecs = 1;
        break;
       case 'r':
        use_read = 1;
        break;
       default:
        lerrif(
      ("unknown -C option '%c'"),
        (int) arg[i] );
        break;
       }
     goto get_next_arg;
    case 'd':
     ddebug = 1;
     break;
    case 'f':
     useecs = usemecs = 0;
     use_read = fulltbl = 1;
     break;
    case 'F':
     useecs = usemecs = 0;
     use_read = fullspd = 1;
     break;
    case '?':
    case 'h':
     usage();
     exit( 0 );
    case 'I':
     interactive = 1;
     break;
    case 'i':
     caseins = 1;
     break;
    case 'l':
     lex_compat = 1;
     break;
    case 'L':
     gen_line_dirs = 0;
     break;
    case 'n':
     break;
    case 'o':
     if ( i != 1 )
      flexerror(
    ("-o flag must be given separately") );
     outfilename = arg + i + 1;
     did_outfilename = 1;
     goto get_next_arg;
    case 'P':
     if ( i != 1 )
      flexerror(
    ("-P flag must be given separately") );
     prefix = arg + i + 1;
     goto get_next_arg;
    case 'p':
     ++performance_report;
     break;
    case 'S':
     if ( i != 1 )
      flexerror(
    ("-S flag must be given separately") );
     skelname = arg + i + 1;
     goto get_next_arg;
    case 's':
     spprdflt = 1;
     break;
    case 't':
     use_stdout = 1;
     break;
    case 'T':
     trace = 1;
     break;
    case 'v':
     printstats = 1;
     break;
    case 'V':
     printf( ("%s version %s\n"),
      program_name, flex_version );
     exit( 0 );
    case 'w':
     nowarn = 1;
     break;
    case '7':
     csize = 128;
     break;
    case '8':
     csize = 256;
     break;
    default:
     fprintf( err,
  ("%s: unknown flag '%c'.  For usage, try\n\t%s --help\n"),
      program_name, (int) arg[i],
      program_name );
     exit( 1 );
    }
  get_next_arg: ;
  }
 num_input_files = argc;
 input_files = argv;
 set_input_file( num_input_files > 0 ? input_files[0] : ((void *)0) );
 lastccl = lastsc = lastdfa = lastnfa = 0;
 num_rules = num_eof_rules = default_rule = 0;
 numas = numsnpairs = tmpuses = 0;
 numecs = numeps = eps2 = num_reallocs = hshcol = dfaeql = totnst = 0;
 numuniq = numdup = hshsave = eofseen = datapos = dataline = 0;
 num_backing_up = onesp = numprots = 0;
 variable_trailing_context_rules = bol_needed = 0;
 out_linenum = linenum = sectnum = 1;
 firstprot = 0;
 lastprot = 1;
 set_up_initial_allocations();
 }
void readin()
 {
 static char yy_stdinit[] = "FILE *yyin = stdin, *yyout = stdout;";
 static char yy_nostdinit[] =
  "FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;";
 line_directive_out( (FILE *) 0, 1 );
 if ( yyparse() )
  {
  pinpoint_message( ("fatal parse error") );
  flexend( 1 );
  }
 if ( syntaxerror )
  flexend( 1 );
 if ( backing_up_report )
  {
  backing_up_file = fopen( backing_name, "w" );
  if ( backing_up_file == ((void *)0) )
   lerrsf(
   ("could not create backing-up info file %s"),
    backing_name );
  }
 else
  backing_up_file = ((void *)0);
 if ( yymore_really_used == 1 )
  yymore_used = 1;
 else if ( yymore_really_used == 0 )
  yymore_used = 0;
 if ( reject_really_used == 1 )
  reject = 1;
 else if ( reject_really_used == 0 )
  reject = 0;
 if ( performance_report > 0 )
  {
  if ( lex_compat )
   {
   fprintf( err,
("-l AT&T lex compatibility option entails a large performance penalty\n") );
   fprintf( err,
(" and may be the actual source of other reported performance penalties\n") );
   }
  else if ( do_yylineno )
   {
   fprintf( err,
 ("%%option yylineno entails a large performance penalty\n") );
   }
  if ( performance_report > 1 )
   {
   if ( interactive )
    fprintf( err,
 ("-I (interactive) entails a minor performance penalty\n") );
   if ( yymore_used )
    fprintf( err,
  ("yymore() entails a minor performance penalty\n") );
   }
  if ( reject )
   fprintf( err,
   ("REJECT entails a large performance penalty\n") );
  if ( variable_trailing_context_rules )
   fprintf( err,
("Variable trailing context rules entail a large performance penalty\n") );
  }
 if ( reject )
  real_reject = 1;
 if ( variable_trailing_context_rules )
  reject = 1;
 if ( (fulltbl || fullspd) && reject )
  {
  if ( real_reject )
   flexerror(
    ("REJECT cannot be used with -f or -F") );
  else if ( do_yylineno )
   flexerror(
   ("%option yylineno cannot be used with -f or -F") );
  else
   flexerror(
 ("variable trailing context rules cannot be used with -f or -F") );
  }
 if ( reject )
  outn( "\n#define YY_USES_REJECT" );
 if ( ! do_yywrap )
  {
  outn( "\n#define yywrap() 1" );
  outn( "#define YY_SKIP_YYWRAP" );
  }
 if ( ddebug )
  outn( "\n#define FLEX_DEBUG" );
 if ( csize == 256 )
  outn( "typedef unsigned char YY_CHAR;" );
 else
  outn( "typedef char YY_CHAR;" );
 if ( C_plus_plus )
  {
  outn( "#define yytext_ptr yytext" );
  if ( interactive )
   outn( "#define YY_INTERACTIVE" );
  }
 else
  {
  if ( do_stdinit )
   {
   outn( "#ifdef VMS" );
   outn( "#ifndef __VMS_POSIX" );
   outn( yy_nostdinit );
   outn( "#else" );
   outn( yy_stdinit );
   outn( "#endif" );
   outn( "#else" );
   outn( yy_stdinit );
   outn( "#endif" );
   }
  else
   outn( yy_nostdinit );
  }
 if ( fullspd )
  outn( "typedef const struct yy_trans_info *yy_state_type;" );
 else if ( ! C_plus_plus )
  outn( "typedef int yy_state_type;" );
 if ( ddebug )
  outn( "\n#define FLEX_DEBUG" );
 if ( lex_compat )
  outn( "#define YY_FLEX_LEX_COMPAT" );
 if ( do_yylineno && ! C_plus_plus )
  {
  outn( "extern int yylineno;" );
  outn( "int yylineno = 1;" );
  }
 if ( C_plus_plus )
  {
  outn( "\n#include <FlexLexer.h>" );
  if ( yyclass )
   {
   outn( "int yyFlexLexer::yylex()" );
   outn( "\t{" );
   outn(
"\tLexerError( \"yyFlexLexer::yylex invoked but %option yyclass used\" );" );
   outn( "\treturn 0;" );
   outn( "\t}" );
   out_str( "\n#define YY_DECL int %s::yylex()\n",
    yyclass );
   }
  }
 else
  {
  if ( yytext_is_array )
   outn( "extern char yytext[];\n" );
  else
   {
   outn( "extern char *yytext;" );
   outn( "#define yytext_ptr yytext" );
   }
  if ( yyclass )
   flexerror(
  ("%option yyclass only meaningful for C++ scanners") );
  }
 if ( useecs )
  numecs = cre8ecs( nextecm, ecgroup, csize );
 else
  numecs = csize;
 ecgroup[0] = ecgroup[csize];
 NUL_ec = ((ecgroup[0]) < 0 ? -(ecgroup[0]) : (ecgroup[0]));
 if ( useecs )
  ccl2ecl();
 }
void set_up_initial_allocations()
 {
 current_mns = 2000;
 firstst = (int *) allocate_array( current_mns, sizeof( int ) );
 lastst = (int *) allocate_array( current_mns, sizeof( int ) );
 finalst = (int *) allocate_array( current_mns, sizeof( int ) );
 transchar = (int *) allocate_array( current_mns, sizeof( int ) );
 trans1 = (int *) allocate_array( current_mns, sizeof( int ) );
 trans2 = (int *) allocate_array( current_mns, sizeof( int ) );
 accptnum = (int *) allocate_array( current_mns, sizeof( int ) );
 assoc_rule = (int *) allocate_array( current_mns, sizeof( int ) );
 state_type = (int *) allocate_array( current_mns, sizeof( int ) );
 current_max_rules = 100;
 rule_type = (int *) allocate_array( current_max_rules, sizeof( int ) );
 rule_linenum = (int *) allocate_array( current_max_rules, sizeof( int ) );
 rule_useful = (int *) allocate_array( current_max_rules, sizeof( int ) );
 current_max_scs = 40;
 scset = (int *) allocate_array( current_max_scs, sizeof( int ) );
 scbol = (int *) allocate_array( current_max_scs, sizeof( int ) );
 scxclu = (int *) allocate_array( current_max_scs, sizeof( int ) );
 sceof = (int *) allocate_array( current_max_scs, sizeof( int ) );
 scname = (char **) allocate_array( current_max_scs, sizeof( char * ) );
 current_maxccls = 100;
 cclmap = (int *) allocate_array( current_maxccls, sizeof( int ) );
 ccllen = (int *) allocate_array( current_maxccls, sizeof( int ) );
 cclng = (int *) allocate_array( current_maxccls, sizeof( int ) );
 current_max_ccl_tbl_size = 500;
 ccltbl = (unsigned char *) allocate_array( current_max_ccl_tbl_size, sizeof( unsigned char ) );
 current_max_dfa_size = 750;
 current_max_xpairs = 2000;
 nxt = (int *) allocate_array( current_max_xpairs, sizeof( int ) );
 chk = (int *) allocate_array( current_max_xpairs, sizeof( int ) );
 current_max_template_xpairs = 2500;
 tnxt = (int *) allocate_array( current_max_template_xpairs, sizeof( int ) );
 current_max_dfas = 1000;
 base = (int *) allocate_array( current_max_dfas, sizeof( int ) );
 def = (int *) allocate_array( current_max_dfas, sizeof( int ) );
 dfasiz = (int *) allocate_array( current_max_dfas, sizeof( int ) );
 accsiz = (int *) allocate_array( current_max_dfas, sizeof( int ) );
 dhash = (int *) allocate_array( current_max_dfas, sizeof( int ) );
 dss = (int **) allocate_array( current_max_dfas, sizeof( int * ) );
 dfaacc = (union dfaacc_union *) allocate_array( current_max_dfas, sizeof( union dfaacc_union ) );
 nultrans = (int *) 0;
 }
void usage()
 {
 fprintf( err,
("%s [-bcdfhilnpstvwBFILTV78+? -C[aefFmr] -ooutput -Pprefix -Sskeleton]\n"),
  program_name );
 fprintf( err, ("\t[--help --version] [file ...]\n") );
 fprintf( err, ("\t-b  generate backing-up information to %s\n"),
  backing_name );
 fprintf( err, ("\t-c  do-nothing POSIX option\n") );
 fprintf( err, ("\t-d  turn on debug mode in generated scanner\n") );
 fprintf( err, ("\t-f  generate fast, large scanner\n") );
 fprintf( err, ("\t-h  produce this help message\n") );
 fprintf( err, ("\t-i  generate case-insensitive scanner\n") );
 fprintf( err, ("\t-l  maximal compatibility with original lex\n") );
 fprintf( err, ("\t-n  do-nothing POSIX option\n") );
 fprintf( err, ("\t-p  generate performance report to err\n") );
 fprintf( err,
  ("\t-s  suppress default rule to ECHO unmatched text\n") );
 if ( ! did_outfilename )
  {
  sprintf( outfile_path, outfile_template,
   prefix, C_plus_plus ? "cc" : "c" );
  outfilename = outfile_path;
  }
 fprintf( err,
  ("\t-t  write generated scanner on stdout instead of %s\n"),
  outfilename );
 fprintf( err,
  ("\t-v  write summary of scanner statistics to f\n") );
 fprintf( err, ("\t-w  do not generate warnings\n") );
 fprintf( err, ("\t-B  generate batch scanner (opposite of -I)\n") );
 fprintf( err,
  ("\t-F  use alternative fast scanner representation\n") );
 fprintf( err,
  ("\t-I  generate interactive scanner (opposite of -B)\n") );
 fprintf( err, ("\t-L  suppress #line directives in scanner\n") );
 fprintf( err, ("\t-T  %s should run in trace mode\n"), program_name );
 fprintf( err, ("\t-V  report %s version\n"), program_name );
 fprintf( err, ("\t-7  generate 7-bit scanner\n") );
 fprintf( err, ("\t-8  generate 8-bit scanner\n") );
 fprintf( err, ("\t-+  generate C++ scanner class\n") );
 fprintf( err, ("\t-?  produce this help message\n") );
 fprintf( err,
("\t-C  specify degree of table compression (default is -Cem):\n") );
 fprintf( err,
("\t\t-Ca  trade off larger tables for better memory alignment\n") );
 fprintf( err, ("\t\t-Ce  construct equivalence classes\n") );
 fprintf( err,
("\t\t-Cf  do not compress scanner tables; use -f representation\n") );
 fprintf( err,
("\t\t-CF  do not compress scanner tables; use -F representation\n") );
 fprintf( err, ("\t\t-Cm  construct meta-equivalence classes\n") );
 fprintf( err,
 ("\t\t-Cr  use read() instead of stdio for scanner input\n") );
 fprintf( err, ("\t-o  specify output filename\n") );
 fprintf( err, ("\t-P  specify scanner prefix other than \"yy\"\n") );
 fprintf( err, ("\t-S  specify skeleton file\n") );
 fprintf( err, ("\t--help     produce this help message\n") );
 fprintf( err, ("\t--version  report %s version\n"), program_name );
 }
void ccladd( cclp, ch )
int cclp;
int ch;
 {
 int ind, len, newpos, i;
 check_char( ch );
 len = ccllen[cclp];
 ind = cclmap[cclp];
 for ( i = 0; i < len; ++i )
  if ( ccltbl[ind + i] == ch )
   return;
 newpos = ind + len;
 if ( newpos >= current_max_ccl_tbl_size )
  {
  current_max_ccl_tbl_size += 250;
  ++num_reallocs;
  ccltbl = (unsigned char *) reallocate_array( (void *) ccltbl, current_max_ccl_tbl_size, sizeof( unsigned char ) );
  }
 ccllen[cclp] = len + 1;
 ccltbl[newpos] = ch;
 }
int cclinit()
 {
 if ( ++lastccl >= current_maxccls )
  {
  current_maxccls += 100;
  ++num_reallocs;
  cclmap = (int *) reallocate_array( (void *) cclmap, current_maxccls, sizeof( int ) );
  ccllen = (int *) reallocate_array( (void *) ccllen, current_maxccls, sizeof( int ) );
  cclng = (int *) reallocate_array( (void *) cclng, current_maxccls, sizeof( int ) );
  }
 if ( lastccl == 1 )
  cclmap[lastccl] = 0;
 else
  cclmap[lastccl] = cclmap[lastccl - 1] + ccllen[lastccl - 1];
 ccllen[lastccl] = 0;
 cclng[lastccl] = 0;
 return lastccl;
 }
void cclnegate( cclp )
int cclp;
 {
 cclng[cclp] = 1;
 }
void list_character_set( file, cset )
FILE *file;
int cset[];
 {
 register int i;
 _IO_putc ('[', file);
 for ( i = 0; i < csize; ++i )
  {
  if ( cset[i] )
   {
   register int start_char = i;
   _IO_putc (' ', file);
   fputs( readable_form( i ), file );
   while ( ++i < csize && cset[i] )
    ;
   if ( i - 1 > start_char )
    fprintf( err, "-%s", readable_form( i - 1 ) );
   _IO_putc (' ', file);
   }
  }
 _IO_putc (']', file);
 }
void dump_associated_rules (FILE*, int);
void dump_transitions (FILE*, int[]);
void sympartition (int[], int, int[], int[]);
int symfollowset (int[], int, int, int[]);
void check_for_backing_up( ds, state )
int ds;
int state[];
 {
 if ( (reject && ! dfaacc[ds].dfaacc_set) ||
      (! reject && ! dfaacc[ds].dfaacc_state) )
  {
  ++num_backing_up;
  if ( backing_up_report )
   {
   fprintf( backing_up_file,
    ("State #%d is non-accepting -\n"), ds );
   dump_associated_rules( backing_up_file, ds );
   dump_transitions( backing_up_file, state );
   _IO_putc ('\n', backing_up_file);
   }
  }
 }
void check_trailing_context( nfa_states, num_states, accset, nacc )
int *nfa_states, num_states;
int *accset;
int nacc;
 {
 register int i, j;
 for ( i = 1; i <= num_states; ++i )
  {
  int ns = nfa_states[i];
  register int type = state_type[ns];
  register int ar = assoc_rule[ns];
  if ( type == 0x1 || rule_type[ar] != 1 )
   {
   }
  else if ( type == 0x2 )
   {
   for ( j = 1; j <= nacc; ++j )
    if ( accset[j] & 0x4000 )
     {
     line_warning(
     ("dangerous trailing context"),
      rule_linenum[ar] );
     return;
     }
   }
  }
 }
void dump_associated_rules( file, ds )
FILE *file;
int ds;
 {
 register int i, j;
 register int num_associated_rules = 0;
 int rule_set[100 + 1];
 int *dset = dss[ds];
 int size = dfasiz[ds];
 for ( i = 1; i <= size; ++i )
  {
  register int rule_num = rule_linenum[assoc_rule[dset[i]]];
  for ( j = 1; j <= num_associated_rules; ++j )
   if ( rule_num == rule_set[j] )
    break;
  if ( j > num_associated_rules )
   {
   if ( num_associated_rules < 100 )
    rule_set[++num_associated_rules] = rule_num;
   }
  }
 bubble( rule_set, num_associated_rules );
 fprintf( file, (" associated rule line numbers:") );
 for ( i = 1; i <= num_associated_rules; ++i )
  {
  if ( i % 8 == 1 )
   _IO_putc ('\n', err);
  fprintf( file, "\t%d", rule_set[i] );
  }
 _IO_putc ('\n', file);
 }
void dump_transitions( file, state )
FILE *file;
int state[];
 {
 register int i, ec;
 int out_char_set[256];
 for ( i = 0; i < csize; ++i )
  {
  ec = ((ecgroup[i]) < 0 ? -(ecgroup[i]) : (ecgroup[i]));
  out_char_set[i] = state[ec];
  }
 fprintf( file, (" out-transitions: ") );
 list_character_set( file, out_char_set );
 for ( i = 0; i < csize; ++i )
  out_char_set[i] = ! out_char_set[i];
 fprintf( file, ("\n jam-transitions: EOF ") );
 list_character_set( file, out_char_set );
 _IO_putc ('\n', file);
 }
int *epsclosure( t, ns_addr, accset, nacc_addr, hv_addr )
int *t, *ns_addr, accset[], *nacc_addr, *hv_addr;
 {
 register int stkpos, ns, tsp;
 int numstates = *ns_addr, nacc, hashval, transsym, nfaccnum;
 int stkend, nstate;
 static int did_stk_init = 0, *stk;
 if ( ! did_stk_init )
  {
  stk = (int *) allocate_array( current_max_dfa_size, sizeof( int ) );
  did_stk_init = 1;
  }
 nacc = stkend = hashval = 0;
 for ( nstate = 1; nstate <= numstates; ++nstate )
  {
  ns = t[nstate];
  if ( ! (trans1[ns] < 0) )
   {
   { if ( ++stkend >= current_max_dfa_size ) { current_max_dfa_size += 750; ++num_reallocs; t = (int *) reallocate_array( (void *) t, current_max_dfa_size, sizeof( int ) ); stk = (int *) reallocate_array( (void *) stk, current_max_dfa_size, sizeof( int ) ); } stk[stkend] = ns; trans1[ns] = trans1[ns] - (31999 +2); }
   { nfaccnum = accptnum[ns]; if ( nfaccnum != 0 ) accset[++nacc] = nfaccnum; }
   hashval += ns;
   }
  }
 for ( stkpos = 1; stkpos <= stkend; ++stkpos )
  {
  ns = stk[stkpos];
  transsym = transchar[ns];
  if ( transsym == (256 + 1) )
   {
   tsp = trans1[ns] + (31999 +2);
   if ( tsp != 0 )
    {
    if ( ! (trans1[tsp] < 0) )
     { { if ( ++stkend >= current_max_dfa_size ) { current_max_dfa_size += 750; ++num_reallocs; t = (int *) reallocate_array( (void *) t, current_max_dfa_size, sizeof( int ) ); stk = (int *) reallocate_array( (void *) stk, current_max_dfa_size, sizeof( int ) ); } stk[stkend] = tsp; trans1[tsp] = trans1[tsp] - (31999 +2); } { nfaccnum = accptnum[tsp]; if ( nfaccnum != 0 ) accset[++nacc] = nfaccnum; } if ( nfaccnum != 0 || transchar[tsp] != (256 + 1) ) { if ( ++numstates >= current_max_dfa_size ) { current_max_dfa_size += 750; ++num_reallocs; t = (int *) reallocate_array( (void *) t, current_max_dfa_size, sizeof( int ) ); stk = (int *) reallocate_array( (void *) stk, current_max_dfa_size, sizeof( int ) ); } t[numstates] = tsp; hashval += tsp; } }
    tsp = trans2[ns];
    if ( tsp != 0 && ! (trans1[tsp] < 0) )
     { { if ( ++stkend >= current_max_dfa_size ) { current_max_dfa_size += 750; ++num_reallocs; t = (int *) reallocate_array( (void *) t, current_max_dfa_size, sizeof( int ) ); stk = (int *) reallocate_array( (void *) stk, current_max_dfa_size, sizeof( int ) ); } stk[stkend] = tsp; trans1[tsp] = trans1[tsp] - (31999 +2); } { nfaccnum = accptnum[tsp]; if ( nfaccnum != 0 ) accset[++nacc] = nfaccnum; } if ( nfaccnum != 0 || transchar[tsp] != (256 + 1) ) { if ( ++numstates >= current_max_dfa_size ) { current_max_dfa_size += 750; ++num_reallocs; t = (int *) reallocate_array( (void *) t, current_max_dfa_size, sizeof( int ) ); stk = (int *) reallocate_array( (void *) stk, current_max_dfa_size, sizeof( int ) ); } t[numstates] = tsp; hashval += tsp; } }
    }
   }
  }
 for ( stkpos = 1; stkpos <= stkend; ++stkpos )
  {
  if ( (trans1[stk[stkpos]] < 0) )
   trans1[stk[stkpos]] = trans1[stk[stkpos]] + (31999 +2);
  else
   flexfatal(
   ("consistency check failed in epsclosure()") );
  }
 *ns_addr = numstates;
 *hv_addr = hashval;
 *nacc_addr = nacc;
 return t;
 }
void increase_max_dfas()
 {
 current_max_dfas += 1000;
 ++num_reallocs;
 base = (int *) reallocate_array( (void *) base, current_max_dfas, sizeof( int ) );
 def = (int *) reallocate_array( (void *) def, current_max_dfas, sizeof( int ) );
 dfasiz = (int *) reallocate_array( (void *) dfasiz, current_max_dfas, sizeof( int ) );
 accsiz = (int *) reallocate_array( (void *) accsiz, current_max_dfas, sizeof( int ) );
 dhash = (int *) reallocate_array( (void *) dhash, current_max_dfas, sizeof( int ) );
 dss = (int **) reallocate_array( (void *) dss, current_max_dfas, sizeof( int * ) );
 dfaacc = (union dfaacc_union *) reallocate_array( (void *) dfaacc, current_max_dfas, sizeof( union dfaacc_union ) );
 if ( nultrans )
  nultrans =
   (int *) reallocate_array( (void *) nultrans, current_max_dfas, sizeof( int ) );
 }
void ntod()
 {
 int *accset, ds, nacc, newds;
 int sym, hashval, numstates, dsize;
 int num_full_table_rows;
 int *nset, *dset;
 int targptr, totaltrans, i, comstate, comfreq, targ;
 int symlist[256 + 1];
 int num_start_states;
 int todo_head, todo_next;
 int duplist[256 + 1], state[256 + 1];
 int targfreq[256 + 1], targstate[256 + 1];
 accset = (int *) allocate_array( num_rules + 1, sizeof( int ) );
 nset = (int *) allocate_array( current_max_dfa_size, sizeof( int ) );
 todo_head = todo_next = 0;
 for ( i = 0; i <= csize; ++i )
  {
  duplist[i] = 0;
  symlist[i] = 0;
  }
 for ( i = 0; i <= num_rules; ++i )
  accset[i] = 0;
 if ( trace )
  {
  dumpnfa( scset[1] );
  fputs( ("\n\nDFA Dump:\n\n"), err );
  }
 inittbl();
 if ( ! fullspd && ecgroup[0] == numecs )
  {
  int use_NUL_table = (numecs == csize);
  if ( fulltbl && ! use_NUL_table )
   {
   int power_of_two;
   for ( power_of_two = 1; power_of_two <= csize;
         power_of_two *= 2 )
    if ( numecs == power_of_two )
     {
     use_NUL_table = 1;
     break;
     }
   }
  if ( use_NUL_table )
   nultrans = (int *) allocate_array( current_max_dfas, sizeof( int ) );
  }
 if ( fullspd )
  {
  for ( i = 0; i <= numecs; ++i )
   state[i] = 0;
  place_state( state, 0, 0 );
  dfaacc[0].dfaacc_state = 0;
  }
 else if ( fulltbl )
  {
  if ( nultrans )
   num_full_table_rows = numecs;
  else
   num_full_table_rows = numecs + 1;
  out_str_dec( "static const %s yy_nxt[][%d] =\n    {\n",
   long_align ? "long" : "short", num_full_table_rows );
  outn( "    {" );
  for ( i = 0; i < num_full_table_rows; ++i )
   mk2data( 0 );
  dataflush();
  outn( "    },\n" );
  }
 num_start_states = lastsc * 2;
 for ( i = 1; i <= num_start_states; ++i )
  {
  numstates = 1;
  if ( i % 2 == 1 )
   nset[numstates] = scset[(i / 2) + 1];
  else
   nset[numstates] =
    mkbranch( scbol[i / 2], scset[i / 2] );
  nset = epsclosure( nset, &numstates, accset, &nacc, &hashval );
  if ( snstods( nset, numstates, accset, nacc, hashval, &ds ) )
   {
   numas += nacc;
   totnst += numstates;
   ++todo_next;
   if ( variable_trailing_context_rules && nacc > 0 )
    check_trailing_context( nset, numstates,
       accset, nacc );
   }
  }
 if ( ! fullspd )
  {
  if ( ! snstods( nset, 0, accset, 0, 0, &end_of_buffer_state ) )
   flexfatal(
   ("could not create unique end-of-buffer state") );
  ++numas;
  ++num_start_states;
  ++todo_next;
  }
 while ( todo_head < todo_next )
  {
  targptr = 0;
  totaltrans = 0;
  for ( i = 1; i <= numecs; ++i )
   state[i] = 0;
  ds = ++todo_head;
  dset = dss[ds];
  dsize = dfasiz[ds];
  if ( trace )
   fprintf( err, ("state # %d:\n"), ds );
  sympartition( dset, dsize, symlist, duplist );
  for ( sym = 1; sym <= numecs; ++sym )
   {
   if ( symlist[sym] )
    {
    symlist[sym] = 0;
    if ( duplist[sym] == 0 )
     {
     numstates = symfollowset( dset, dsize,
        sym, nset );
     nset = epsclosure( nset, &numstates,
      accset, &nacc, &hashval );
     if ( snstods( nset, numstates, accset,
      nacc, hashval, &newds ) )
      {
      totnst = totnst + numstates;
      ++todo_next;
      numas += nacc;
      if (
     variable_trailing_context_rules &&
       nacc > 0 )
       check_trailing_context(
        nset, numstates,
        accset, nacc );
      }
     state[sym] = newds;
     if ( trace )
      fprintf( err, "\t%d\t%d\n",
       sym, newds );
     targfreq[++targptr] = 1;
     targstate[targptr] = newds;
     ++numuniq;
     }
    else
     {
     targ = state[duplist[sym]];
     state[sym] = targ;
     if ( trace )
      fprintf( err, "\t%d\t%d\n",
       sym, targ );
     i = 0;
     while ( targstate[++i] != targ )
      ;
     ++targfreq[i];
     ++numdup;
     }
    ++totaltrans;
    duplist[sym] = 0;
    }
   }
  if ( caseins && ! useecs )
   {
   register int j;
   for ( i = 'A', j = 'a'; i <= 'Z'; ++i, ++j )
    {
    if ( state[i] == 0 && state[j] != 0 )
     ++totaltrans;
    else if ( state[i] != 0 && state[j] == 0 )
     --totaltrans;
    state[i] = state[j];
    }
   }
  numsnpairs += totaltrans;
  if ( ds > num_start_states )
   check_for_backing_up( ds, state );
  if ( nultrans )
   {
   nultrans[ds] = state[NUL_ec];
   state[NUL_ec] = 0;
   }
  if ( fulltbl )
   {
   outn( "    {" );
   if ( ds == end_of_buffer_state )
    mk2data( -end_of_buffer_state );
   else
    mk2data( end_of_buffer_state );
   for ( i = 1; i < num_full_table_rows; ++i )
    mk2data( state[i] ? state[i] : -ds );
   dataflush();
   outn( "    },\n" );
   }
  else if ( fullspd )
   place_state( state, ds, totaltrans );
  else if ( ds == end_of_buffer_state )
   stack1( ds, 0, 0, -32766 );
  else
   {
   comfreq = 0;
   comstate = 0;
   for ( i = 1; i <= targptr; ++i )
    if ( targfreq[i] > comfreq )
     {
     comfreq = targfreq[i];
     comstate = targstate[i];
     }
   bldtbl( state, ds, totaltrans, comstate, comfreq );
   }
  }
 if ( fulltbl )
  dataend();
 else if ( ! fullspd )
  {
  cmptmps();
  while ( onesp > 0 )
   {
   mk1tbl( onestate[onesp], onesym[onesp], onenext[onesp],
   onedef[onesp] );
   --onesp;
   }
  mkdeftbl();
  }
 flex_free( (void *) accset );
 flex_free( (void *) nset );
 }
int snstods( sns, numstates, accset, nacc, hashval, newds_addr )
int sns[], numstates, accset[], nacc, hashval, *newds_addr;
 {
 int didsort = 0;
 register int i, j;
 int newds, *oldsns;
 for ( i = 1; i <= lastdfa; ++i )
  if ( hashval == dhash[i] )
   {
   if ( numstates == dfasiz[i] )
    {
    oldsns = dss[i];
    if ( ! didsort )
     {
     bubble( sns, numstates );
     didsort = 1;
     }
    for ( j = 1; j <= numstates; ++j )
     if ( sns[j] != oldsns[j] )
      break;
    if ( j > numstates )
     {
     ++dfaeql;
     *newds_addr = i;
     return 0;
     }
    ++hshcol;
    }
   else
    ++hshsave;
   }
 if ( ++lastdfa >= current_max_dfas )
  increase_max_dfas();
 newds = lastdfa;
 dss[newds] = (int *) allocate_array( numstates + 1, sizeof( int ) );
 if ( ! didsort )
  bubble( sns, numstates );
 for ( i = 1; i <= numstates; ++i )
  dss[newds][i] = sns[i];
 dfasiz[newds] = numstates;
 dhash[newds] = hashval;
 if ( nacc == 0 )
  {
  if ( reject )
   dfaacc[newds].dfaacc_set = (int *) 0;
  else
   dfaacc[newds].dfaacc_state = 0;
  accsiz[newds] = 0;
  }
 else if ( reject )
  {
  bubble( accset, nacc );
  dfaacc[newds].dfaacc_set = (int *) allocate_array( nacc + 1, sizeof( int ) );
  for ( i = 1; i <= nacc; ++i )
   {
   dfaacc[newds].dfaacc_set[i] = accset[i];
   if ( accset[i] <= num_rules )
    rule_useful[accset[i]] = 1;
   }
  accsiz[newds] = nacc;
  }
 else
  {
  j = num_rules + 1;
  for ( i = 1; i <= nacc; ++i )
   if ( accset[i] < j )
    j = accset[i];
  dfaacc[newds].dfaacc_state = j;
  if ( j <= num_rules )
   rule_useful[j] = 1;
  }
 *newds_addr = newds;
 return 1;
 }
int symfollowset( ds, dsize, transsym, nset )
int ds[], dsize, transsym, nset[];
 {
 int ns, tsp, sym, i, j, lenccl, ch, numstates, ccllist;
 numstates = 0;
 for ( i = 1; i <= dsize; ++i )
  {
  ns = ds[i];
  sym = transchar[ns];
  tsp = trans1[ns];
  if ( sym < 0 )
   {
   sym = -sym;
   ccllist = cclmap[sym];
   lenccl = ccllen[sym];
   if ( cclng[sym] )
    {
    for ( j = 0; j < lenccl; ++j )
     {
     ch = ccltbl[ccllist + j];
     if ( ch == 0 )
      ch = NUL_ec;
     if ( ch > transsym )
      break;
     else if ( ch == transsym )
                   goto bottom;
     }
    nset[++numstates] = tsp;
    }
   else
    for ( j = 0; j < lenccl; ++j )
     {
     ch = ccltbl[ccllist + j];
     if ( ch == 0 )
      ch = NUL_ec;
     if ( ch > transsym )
      break;
     else if ( ch == transsym )
      {
      nset[++numstates] = tsp;
      break;
      }
     }
   }
  else if ( sym >= 'A' && sym <= 'Z' && caseins )
   flexfatal(
   ("consistency check failed in symfollowset") );
  else if ( sym == (256 + 1) )
   {
   }
  else if ( ((ecgroup[sym]) < 0 ? -(ecgroup[sym]) : (ecgroup[sym])) == transsym )
   nset[++numstates] = tsp;
  bottom: ;
  }
 return numstates;
 }
void sympartition( ds, numstates, symlist, duplist )
int ds[], numstates;
int symlist[], duplist[];
 {
 int tch, i, j, k, ns, dupfwd[256 + 1], lenccl, cclp, ich;
 for ( i = 1; i <= numecs; ++i )
  {
  duplist[i] = i - 1;
  dupfwd[i] = i + 1;
  }
 duplist[1] = 0;
 dupfwd[numecs] = 0;
 for ( i = 1; i <= numstates; ++i )
  {
  ns = ds[i];
  tch = transchar[ns];
  if ( tch != (256 + 1) )
   {
   if ( tch < -lastccl || tch >= csize )
    {
    flexfatal(
  ("bad transition character detected in sympartition()") );
    }
   if ( tch >= 0 )
    {
    int ec = ecgroup[tch];
    mkechar( ec, dupfwd, duplist );
    symlist[ec] = 1;
    }
   else
    {
    tch = -tch;
    lenccl = ccllen[tch];
    cclp = cclmap[tch];
    mkeccl( ccltbl + cclp, lenccl, dupfwd,
     duplist, numecs, NUL_ec );
    if ( cclng[tch] )
     {
     j = 0;
     for ( k = 0; k < lenccl; ++k )
      {
      ich = ccltbl[cclp + k];
      if ( ich == 0 )
       ich = NUL_ec;
      for ( ++j; j < ich; ++j )
       symlist[j] = 1;
      }
     for ( ++j; j <= numecs; ++j )
      symlist[j] = 1;
     }
    else
     for ( k = 0; k < lenccl; ++k )
      {
      ich = ccltbl[cclp + k];
      if ( ich == 0 )
       ich = NUL_ec;
      symlist[ich] = 1;
      }
    }
   }
  }
 }
void ccl2ecl()
 {
 int i, ich, newlen, cclp, ccls, cclmec;
 for ( i = 1; i <= lastccl; ++i )
  {
  newlen = 0;
  cclp = cclmap[i];
  for ( ccls = 0; ccls < ccllen[i]; ++ccls )
   {
   ich = ccltbl[cclp + ccls];
   cclmec = ecgroup[ich];
   if ( cclmec > 0 )
    {
    ccltbl[cclp + newlen] = cclmec;
    ++newlen;
    }
   }
  ccllen[i] = newlen;
  }
 }
int cre8ecs( fwd, bck, num )
int fwd[], bck[], num;
 {
 int i, j, numcl;
 numcl = 0;
 for ( i = 1; i <= num; ++i )
  if ( bck[i] == 0 )
   {
   bck[i] = ++numcl;
   for ( j = fwd[i]; j != 0; j = fwd[j] )
    bck[j] = -numcl;
   }
 return numcl;
 }
void mkeccl( ccls, lenccl, fwd, bck, llsiz, NUL_mapping )
unsigned char ccls[];
int lenccl, fwd[], bck[], llsiz, NUL_mapping;
 {
 int cclp, oldec, newec;
 int cclm, i, j;
 static unsigned char cclflags[256];
 cclp = 0;
 while ( cclp < lenccl )
  {
  cclm = ccls[cclp];
  if ( NUL_mapping && cclm == 0 )
   cclm = NUL_mapping;
  oldec = bck[cclm];
  newec = cclm;
  j = cclp + 1;
  for ( i = fwd[cclm]; i != 0 && i <= llsiz; i = fwd[i] )
   {
   for ( ; j < lenccl; ++j )
    {
    register int ccl_char;
    if ( NUL_mapping && ccls[j] == 0 )
     ccl_char = NUL_mapping;
    else
     ccl_char = ccls[j];
    if ( ccl_char > i )
     break;
    if ( ccl_char == i && ! cclflags[j] )
     {
     bck[i] = newec;
     fwd[newec] = i;
     newec = i;
     cclflags[j] = 1;
     goto next_pt;
     }
    }
   bck[i] = oldec;
   if ( oldec != 0 )
    fwd[oldec] = i;
   oldec = i;
   next_pt: ;
   }
  if ( bck[cclm] != 0 || oldec != bck[cclm] )
   {
   bck[cclm] = 0;
   fwd[oldec] = 0;
   }
  fwd[newec] = 0;
  for ( ++cclp; cclflags[cclp] && cclp < lenccl; ++cclp )
   {
   cclflags[cclp] = 0;
   }
  }
 }
void mkechar( tch, fwd, bck )
int tch, fwd[], bck[];
 {
 if ( fwd[tch] != 0 )
  bck[fwd[tch]] = bck[tch];
 if ( bck[tch] != 0 )
  fwd[bck[tch]] = fwd[tch];
 fwd[tch] = 0;
 bck[tch] = 0;
 }
void gen_next_state (int);
void genecs (void);
void indent_put2s (char [], char []);
void indent_puts (char []);
static int indent_level = 0;
static char C_int_decl[] = "static const int %s[%d] =\n    {   0,\n";
static char C_short_decl[] = "static const short int %s[%d] =\n    {   0,\n";
static char C_long_decl[] = "static const long int %s[%d] =\n    {   0,\n";
static char C_state_decl[] =
 "static const yy_state_type %s[%d] =\n    {   0,\n";
void do_indent()
 {
 register int i = indent_level * 8;
 while ( i >= 8 )
  {
  outc( '\t' );
  i -= 8;
  }
 while ( i > 0 )
  {
  outc( ' ' );
  --i;
  }
 }
void gen_backing_up()
 {
 if ( reject || num_backing_up == 0 )
  return;
 if ( fullspd )
  indent_puts( "if ( yy_current_state[-1].yy_nxt )" );
 else
  indent_puts( "if ( yy_accept[yy_current_state] )" );
 (++indent_level);
 indent_puts( "{" );
 indent_puts( "yy_last_accepting_state = yy_current_state;" );
 indent_puts( "yy_last_accepting_cpos = yy_cp;" );
 indent_puts( "}" );
 (--indent_level);
 }
void gen_bu_action()
 {
 if ( reject || num_backing_up == 0 )
  return;
 indent_level = 3;
 indent_puts( "case 0: /* must back up */" );
 indent_puts( "/* undo the effects of YY_DO_BEFORE_ACTION */" );
 indent_puts( "*yy_cp = yy_hold_char;" );
 if ( fullspd || fulltbl )
  indent_puts( "yy_cp = yy_last_accepting_cpos + 1;" );
 else
  indent_puts( "yy_cp = yy_last_accepting_cpos;" );
 indent_puts( "yy_current_state = yy_last_accepting_state;" );
 indent_puts( "goto yy_find_action;" );
 outc( '\n' );
 indent_level = 0;
 }
void genctbl()
 {
 register int i;
 int end_of_buffer_action = num_rules + 1;
 out_dec( "static const struct yy_trans_info yy_transition[%d] =\n",
  tblend + numecs + 1 );
 outn( "    {" );
 while ( tblend + 2 >= current_max_xpairs )
  expand_nxt_chk();
 while ( lastdfa + 1 >= current_max_dfas )
  increase_max_dfas();
 base[lastdfa + 1] = tblend + 2;
 nxt[tblend + 1] = end_of_buffer_action;
 chk[tblend + 1] = numecs + 1;
 chk[tblend + 2] = 1;
 nxt[tblend + 2] = 0;
 for ( i = 0; i <= lastdfa; ++i )
  {
  int anum = dfaacc[i].dfaacc_state;
  int offset = base[i];
  chk[offset] = -1;
  chk[offset - 1] = -2;
  nxt[offset - 1] = anum;
  }
 for ( i = 0; i <= tblend; ++i )
  {
  if ( chk[i] == -1 )
   transition_struct_out( 0, base[lastdfa + 1] - i );
  else if ( chk[i] == -2 )
   transition_struct_out( 0, nxt[i] );
  else if ( chk[i] > numecs || chk[i] == 0 )
   transition_struct_out( 0, 0 );
  else
   transition_struct_out( chk[i],
      base[nxt[i]] - (i - chk[i]) );
  }
 transition_struct_out( chk[tblend + 1], nxt[tblend + 1] );
 transition_struct_out( chk[tblend + 2], nxt[tblend + 2] );
 outn( "    };\n" );
 out_dec(
 "static const struct yy_trans_info *yy_start_state_list[%d] =\n",
  lastsc * 2 + 1 );
 outn( "    {" );
 for ( i = 0; i <= lastsc * 2; ++i )
  out_dec( "    &yy_transition[%d],\n", base[i] );
 dataend();
 if ( useecs )
  genecs();
 }
void genecs()
 {
 register int i, j;
 int numrows;
 out_str_dec( C_int_decl, "yy_ec", csize );
 for ( i = 1; i < csize; ++i )
  {
  if ( caseins && (i >= 'A') && (i <= 'Z') )
   ecgroup[i] = ecgroup[clower( i )];
  ecgroup[i] = ((ecgroup[i]) < 0 ? -(ecgroup[i]) : (ecgroup[i]));
  mkdata( ecgroup[i] );
  }
 dataend();
 if ( trace )
  {
  fputs( ("\n\nEquivalence Classes:\n\n"), err );
  numrows = csize / 8;
  for ( j = 0; j < numrows; ++j )
   {
   for ( i = j; i < csize; i = i + numrows )
    {
    fprintf( err, "%4s = %-2d",
     readable_form( i ), ecgroup[i] );
    _IO_putc (' ', err);
    }
   _IO_putc ('\n', err);
   }
  }
 }
void gen_find_action()
 {
 if ( fullspd )
  indent_puts( "yy_act = yy_current_state[-1].yy_nxt;" );
 else if ( fulltbl )
  indent_puts( "yy_act = yy_accept[yy_current_state];" );
 else if ( reject )
  {
  indent_puts( "yy_current_state = *--yy_state_ptr;" );
  indent_puts( "yy_lp = yy_accept[yy_current_state];" );
  outn(
  "find_rule: /* we branch to this label when backing up */" );
  indent_puts(
  "for ( ; ; ) /* until we find what rule we matched */" );
  (++indent_level);
  indent_puts( "{" );
  indent_puts(
  "if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )" );
  (++indent_level);
  indent_puts( "{" );
  indent_puts( "yy_act = yy_acclist[yy_lp];" );
  if ( variable_trailing_context_rules )
   {
   indent_puts( "if ( yy_act & YY_TRAILING_HEAD_MASK ||" );
   indent_puts( "     yy_looking_for_trail_begin )" );
   (++indent_level);
   indent_puts( "{" );
   indent_puts(
    "if ( yy_act == yy_looking_for_trail_begin )" );
   (++indent_level);
   indent_puts( "{" );
   indent_puts( "yy_looking_for_trail_begin = 0;" );
   indent_puts( "yy_act &= ~YY_TRAILING_HEAD_MASK;" );
   indent_puts( "break;" );
   indent_puts( "}" );
   (--indent_level);
   indent_puts( "}" );
   (--indent_level);
   indent_puts( "else if ( yy_act & YY_TRAILING_MASK )" );
   (++indent_level);
   indent_puts( "{" );
   indent_puts(
  "yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK;" );
   indent_puts(
  "yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK;" );
   if ( real_reject )
    {
    indent_puts( "yy_full_match = yy_cp;" );
    indent_puts( "yy_full_state = yy_state_ptr;" );
    indent_puts( "yy_full_lp = yy_lp;" );
    }
   indent_puts( "}" );
   (--indent_level);
   indent_puts( "else" );
   (++indent_level);
   indent_puts( "{" );
   indent_puts( "yy_full_match = yy_cp;" );
   indent_puts( "yy_full_state = yy_state_ptr;" );
   indent_puts( "yy_full_lp = yy_lp;" );
   indent_puts( "break;" );
   indent_puts( "}" );
   (--indent_level);
   indent_puts( "++yy_lp;" );
   indent_puts( "goto find_rule;" );
   }
  else
   {
   (++indent_level);
   indent_puts( "{" );
   indent_puts( "yy_full_match = yy_cp;" );
   indent_puts( "break;" );
   indent_puts( "}" );
   (--indent_level);
   }
  indent_puts( "}" );
  (--indent_level);
  indent_puts( "--yy_cp;" );
  indent_puts( "yy_current_state = *--yy_state_ptr;" );
  indent_puts( "yy_lp = yy_accept[yy_current_state];" );
  indent_puts( "}" );
  (--indent_level);
  }
 else
  {
  indent_puts( "yy_act = yy_accept[yy_current_state];" );
  if ( interactive && ! reject )
   {
   indent_puts( "if ( yy_act == 0 )" );
   (++indent_level);
   indent_puts( "{ /* have to back up */" );
   indent_puts( "yy_cp = yy_last_accepting_cpos;" );
   indent_puts(
    "yy_current_state = yy_last_accepting_state;" );
   indent_puts( "yy_act = yy_accept[yy_current_state];" );
   indent_puts( "}" );
   (--indent_level);
   }
  }
 }
void genftbl()
 {
 register int i;
 int end_of_buffer_action = num_rules + 1;
 out_str_dec( long_align ? C_long_decl : C_short_decl,
  "yy_accept", lastdfa + 1 );
 dfaacc[end_of_buffer_state].dfaacc_state = end_of_buffer_action;
 for ( i = 1; i <= lastdfa; ++i )
  {
  register int anum = dfaacc[i].dfaacc_state;
  mkdata( anum );
  if ( trace && anum )
   fprintf( err, ("state # %d accepts: [%d]\n"),
    i, anum );
  }
 dataend();
 if ( useecs )
  genecs();
 }
void gen_next_compressed_state( char_map )
char *char_map;
 {
 indent_put2s( "register YY_CHAR yy_c = %s;", char_map );
 gen_backing_up();
 indent_puts(
"while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )" );
 (++indent_level);
 indent_puts( "{" );
 indent_puts( "yy_current_state = (int) yy_def[yy_current_state];" );
 if ( usemecs )
  {



  do_indent();


  out_dec( "if ( yy_current_state >= %d )\n", lastdfa + 2 );

  (++indent_level);
  indent_puts( "yy_c = yy_meta[(unsigned int) yy_c];" );
  (--indent_level);
  }

 indent_puts( "}" );
 (--indent_level);

 indent_puts(
"yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];" );
 }




void gen_next_match()
 {



 char *char_map = useecs ?
    "yy_ec[YY_SC_TO_UI(*yy_cp)]" :
    "YY_SC_TO_UI(*yy_cp)";

 char *char_map_2 = useecs ?
    "yy_ec[YY_SC_TO_UI(*++yy_cp)]" :
    "YY_SC_TO_UI(*++yy_cp)";

 if ( fulltbl )
  {
  indent_put2s(
 "while ( (yy_current_state = yy_nxt[yy_current_state][%s]) > 0 )",
    char_map );

  (++indent_level);

  if ( num_backing_up > 0 )
   {
   indent_puts( "{" );
   gen_backing_up();
   outc( '\n' );
   }

  indent_puts( "++yy_cp;" );

  if ( num_backing_up > 0 )

   indent_puts( "}" );

  (--indent_level);

  outc( '\n' );
  indent_puts( "yy_current_state = -yy_current_state;" );
  }

 else if ( fullspd )
  {
  indent_puts( "{" );
  indent_puts(
  "register const struct yy_trans_info *yy_trans_info;\n" );
  indent_puts( "register YY_CHAR yy_c;\n" );
  indent_put2s( "for ( yy_c = %s;", char_map );
  indent_puts(
 "      (yy_trans_info = &yy_current_state[(unsigned int) yy_c])->" );
  indent_puts( "yy_verify == yy_c;" );
  indent_put2s( "      yy_c = %s )", char_map_2 );

  (++indent_level);

  if ( num_backing_up > 0 )
   indent_puts( "{" );

  indent_puts( "yy_current_state += yy_trans_info->yy_nxt;" );

  if ( num_backing_up > 0 )
   {
   outc( '\n' );
   gen_backing_up();
   indent_puts( "}" );
   }

  (--indent_level);
  indent_puts( "}" );
  }

 else
  {
  indent_puts( "do" );

  (++indent_level);
  indent_puts( "{" );

  gen_next_state( 0 );

  indent_puts( "++yy_cp;" );


  indent_puts( "}" );
  (--indent_level);

  do_indent();

  if ( interactive )
   out_dec( "while ( yy_base[yy_current_state] != %d );\n",
    jambase );
  else
   out_dec( "while ( yy_current_state != %d );\n",
    jamstate );

  if ( ! reject && ! interactive )
   {



   indent_puts( "yy_cp = yy_last_accepting_cpos;" );
   indent_puts(
    "yy_current_state = yy_last_accepting_state;" );
   }
  }
 }




void gen_next_state( worry_about_NULs )
int worry_about_NULs;
 {
 char char_map[256];

 if ( worry_about_NULs && ! nultrans )
  {
  if ( useecs )
   (void) sprintf( char_map,
    "(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : %d)",
     NUL_ec );
  else
   (void) sprintf( char_map,
    "(*yy_cp ? YY_SC_TO_UI(*yy_cp) : %d)", NUL_ec );
  }

 else
  strcpy( char_map, useecs ?
   "yy_ec[YY_SC_TO_UI(*yy_cp)]" : "YY_SC_TO_UI(*yy_cp)" );

 if ( worry_about_NULs && nultrans )
  {
  if ( ! fulltbl && ! fullspd )

   gen_backing_up();

  indent_puts( "if ( *yy_cp )" );
  (++indent_level);
  indent_puts( "{" );
  }

 if ( fulltbl )
  indent_put2s(
   "yy_current_state = yy_nxt[yy_current_state][%s];",
    char_map );

 else if ( fullspd )
  indent_put2s(
   "yy_current_state += yy_current_state[%s].yy_nxt;",
    char_map );

 else
  gen_next_compressed_state( char_map );

 if ( worry_about_NULs && nultrans )
  {

  indent_puts( "}" );
  (--indent_level);
  indent_puts( "else" );
  (++indent_level);
  indent_puts(
   "yy_current_state = yy_NUL_trans[yy_current_state];" );
  (--indent_level);
  }

 if ( fullspd || fulltbl )
  gen_backing_up();

 if ( reject )
  indent_puts( "*yy_state_ptr++ = yy_current_state;" );
 }




void gen_NUL_trans()
 {



 int need_backing_up = (num_backing_up > 0 && ! reject);

 if ( need_backing_up && ! nultrans )

  indent_puts( "register char *yy_cp = yy_c_buf_p;" );

 outc( '\n' );

 if ( nultrans )
  {
  indent_puts(
   "yy_current_state = yy_NUL_trans[yy_current_state];" );
  indent_puts( "yy_is_jam = (yy_current_state == 0);" );
  }

 else if ( fulltbl )
  {
  do_indent();
  out_dec( "yy_current_state = yy_nxt[yy_current_state][%d];\n",
   NUL_ec );
  indent_puts( "yy_is_jam = (yy_current_state <= 0);" );
  }

 else if ( fullspd )
  {
  do_indent();
  out_dec( "register int yy_c = %d;\n", NUL_ec );

  indent_puts(
  "register const struct yy_trans_info *yy_trans_info;\n" );
  indent_puts(
  "yy_trans_info = &yy_current_state[(unsigned int) yy_c];" );
  indent_puts( "yy_current_state += yy_trans_info->yy_nxt;" );

  indent_puts(
   "yy_is_jam = (yy_trans_info->yy_verify != yy_c);" );
  }

 else
  {
  char NUL_ec_str[20];

  (void) sprintf( NUL_ec_str, "%d", NUL_ec );
  gen_next_compressed_state( NUL_ec_str );

  if ( reject )
   indent_puts( "*yy_state_ptr++ = yy_current_state;" );

  do_indent();

  out_dec( "yy_is_jam = (yy_current_state == %d);\n", jamstate );
  }





 if ( need_backing_up && (fullspd || fulltbl) )
  {
  outc( '\n' );
  indent_puts( "if ( ! yy_is_jam )" );
  (++indent_level);
  indent_puts( "{" );
  gen_backing_up();
  indent_puts( "}" );
  (--indent_level);
  }
 }




void gen_start_state()
 {
 if ( fullspd )
  {
  if ( bol_needed )
   {





   indent_puts(
 "yy_current_state = yy_start_state_list[yy_start + YY_AT_BOL()];" );
   }
  else
   indent_puts(
   "yy_current_state = yy_start_state_list[yy_start];" );
  }

 else
  {
  indent_puts( "yy_current_state = yy_start;" );

  if ( bol_needed )
   indent_puts( "yy_current_state += YY_AT_BOL();" );

  if ( reject )
   {

   indent_puts( "yy_state_ptr = yy_state_buf;" );
   indent_puts( "*yy_state_ptr++ = yy_current_state;" );
   }
  }
 }




void gentabs()
 {
 int i, j, k, *accset, nacc, *acc_array, total_states;
 int end_of_buffer_action = num_rules + 1;

 acc_array = (int *) allocate_array( current_max_dfas, sizeof( int ) );
 nummt = 0;






 ++num_backing_up;

 if ( reject )
  {






  int EOB_accepting_list[2];


  EOB_accepting_list[0] = 0;
  EOB_accepting_list[1] = end_of_buffer_action;
  accsiz[end_of_buffer_state] = 1;
  dfaacc[end_of_buffer_state].dfaacc_set = EOB_accepting_list;

  out_str_dec( long_align ? C_long_decl : C_short_decl,
   "yy_acclist", ((numas) > (1) ? (numas) : (1)) + 1 );

  j = 1;

  for ( i = 1; i <= lastdfa; ++i )
   {
   acc_array[i] = j;

   if ( accsiz[i] != 0 )
    {
    accset = dfaacc[i].dfaacc_set;
    nacc = accsiz[i];

    if ( trace )
     fprintf( err,
      ("state # %d accepts: "),
      i );

    for ( k = 1; k <= nacc; ++k )
     {
     int accnum = accset[k];

     ++j;

     if ( variable_trailing_context_rules &&
       ! (accnum & 0x4000) &&
        accnum > 0 && accnum <= num_rules &&
       rule_type[accnum] == 1 )
      {




      accnum |= 0x2000;
      }

     mkdata( accnum );

     if ( trace )
      {
      fprintf( err, "[%d]",
       accset[k] );

      if ( k < nacc )
       fputs( ", ", err );
      else
       _IO_putc ('\n', err);
      }
     }
    }
   }


  acc_array[i] = j;

  dataend();
  }

 else
  {
  dfaacc[end_of_buffer_state].dfaacc_state = end_of_buffer_action;

  for ( i = 1; i <= lastdfa; ++i )
   acc_array[i] = dfaacc[i].dfaacc_state;


  acc_array[i] = 0;
  }
 k = lastdfa + 2;
 if ( reject )
  ++k;
 out_str_dec( long_align ? C_long_decl : C_short_decl, "yy_accept", k );
 for ( i = 1; i <= lastdfa; ++i )
  {
  mkdata( acc_array[i] );
  if ( ! reject && trace && acc_array[i] )
   fprintf( err, ("state # %d accepts: [%d]\n"),
    i, acc_array[i] );
  }
 mkdata( acc_array[i] );
 if ( reject )
  mkdata( acc_array[i] );
 dataend();
 if ( useecs )
  genecs();
 if ( usemecs )
  {
  if ( trace )
   fputs( ("\n\nMeta-Equivalence Classes:\n"),
         err );
  out_str_dec( C_int_decl, "yy_meta", numecs + 1 );
  for ( i = 1; i <= numecs; ++i )
   {
   if ( trace )
    fprintf( err, "%d = %d\n",
     i, ((tecbck[i]) < 0 ? -(tecbck[i]) : (tecbck[i])) );
   mkdata( ((tecbck[i]) < 0 ? -(tecbck[i]) : (tecbck[i])) );
   }
  dataend();
  }
 total_states = lastdfa + numtemps;
 out_str_dec( (tblend >= 32700 || long_align) ?
   C_long_decl : C_short_decl,
  "yy_base", total_states + 1 );
 for ( i = 1; i <= lastdfa; ++i )
  {
  register int d = def[i];
  if ( base[i] == -32766 )
   base[i] = jambase;
  if ( d == -32766 )
   def[i] = jamstate;
  else if ( d < 0 )
   {
   ++tmpuses;
   def[i] = lastdfa - d + 1;
   }
  mkdata( base[i] );
  }
 mkdata( base[i] );
 for ( ++i ; i <= total_states; ++i )
  {
  mkdata( base[i] );
  def[i] = jamstate;
  }
 dataend();
 out_str_dec( (total_states >= 32700 || long_align) ?
   C_long_decl : C_short_decl,
  "yy_def", total_states + 1 );
 for ( i = 1; i <= total_states; ++i )
  mkdata( def[i] );
 dataend();
 out_str_dec( (total_states >= 32700 || long_align) ?
   C_long_decl : C_short_decl,
  "yy_nxt", tblend + 1 );
 for ( i = 1; i <= tblend; ++i )
  {
  if ( chk[i] == 0 || nxt[i] == 0 )
   nxt[i] = jamstate;
  mkdata( nxt[i] );
  }
 dataend();
 out_str_dec( (total_states >= 32700 || long_align) ?
   C_long_decl : C_short_decl,
  "yy_chk", tblend + 1 );
 for ( i = 1; i <= tblend; ++i )
  {
  if ( chk[i] == 0 )
   ++nummt;
  mkdata( chk[i] );
  }
 dataend();
 }
void indent_put2s( fmt, arg )
char fmt[], arg[];
 {
 do_indent();
 out_str( fmt, arg );
 outn( "" );
 }
void indent_puts( str )
char str[];
 {
 do_indent();
 outn( str );
 }
void make_tables()
 {
 register int i;
 int did_eof_rule = 0;
 skelout();
 indent_level = 1;
 if ( yymore_used )
  {
  indent_puts( "yytext_ptr -= yy_more_len; \\" );
  indent_puts( "yyleng = (int) (yy_cp - yytext_ptr); \\" );
  }
 else
  indent_puts( "yyleng = (int) (yy_cp - yy_bp); \\" );
 skelout();
 if ( yytext_is_array )
  {
  indent_puts( "if ( yyleng >= YYLMAX ) \\" );
  (++indent_level);
  indent_puts(
  "YY_FATAL_ERROR( \"token too large, exceeds YYLMAX\" ); \\" );
  (--indent_level);
  indent_puts(
  "yy_flex_strncpy( yytext, yytext_ptr, yyleng + 1 ); \\" );
  }
 indent_level = 0;
 skelout();
 out_dec( "#define YY_NUM_RULES %d\n", num_rules );
 out_dec( "#define YY_END_OF_BUFFER %d\n", num_rules + 1 );
 if ( fullspd )
  {
  int total_table_size = tblend + numecs + 1;
  char *trans_offset_type =
   (total_table_size >= 32700 || long_align) ?
    "long" : "short";
  indent_level = 0;
  indent_puts( "struct yy_trans_info" );
  (++indent_level);
  indent_puts( "{" );
  if ( long_align )
   indent_puts( "long yy_verify;" );
  else
   indent_puts( "short yy_verify;" );
  indent_put2s( "%s yy_nxt;", trans_offset_type );
  indent_puts( "};" );
  (--indent_level);
  }
 if ( fullspd )
  genctbl();
 else if ( fulltbl )
  genftbl();
 else
  gentabs();
 if ( num_backing_up > 0 && ! reject )
  {
  if ( ! C_plus_plus )
   {
   indent_puts(
   "static yy_state_type yy_last_accepting_state;" );
   indent_puts(
    "static char *yy_last_accepting_cpos;\n" );
   }
  }
 if ( nultrans )
  {
  out_str_dec( C_state_decl, "yy_NUL_trans", lastdfa + 1 );
  for ( i = 1; i <= lastdfa; ++i )
   {
   if ( fullspd )
    out_dec( "    &yy_transition[%d],\n", base[i] );
   else
    mkdata( nultrans[i] );
   }
  dataend();
  }
 if ( ddebug )
  {
  if ( ! C_plus_plus )
   {
   indent_puts( "extern int yy_flex_debug;" );
   indent_puts( "int yy_flex_debug = 1;\n" );
   }
  out_str_dec( long_align ? C_long_decl : C_short_decl,
   "yy_rule_linenum", num_rules );
  for ( i = 1; i < num_rules; ++i )
   mkdata( rule_linenum[i] );
  dataend();
  }
 if ( reject )
  {
  if ( ! C_plus_plus )
   {
   outn(
 "static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;" );
   outn( "static char *yy_full_match;" );
   outn( "static int yy_lp;" );
   }
  if ( variable_trailing_context_rules )
   {
   if ( ! C_plus_plus )
    {
    outn(
    "static int yy_looking_for_trail_begin = 0;" );
    outn( "static int yy_full_lp;" );
    outn( "static int *yy_full_state;" );
    }
   out_hex( "#define YY_TRAILING_MASK 0x%x\n",
    (unsigned int) 0x2000 );
   out_hex( "#define YY_TRAILING_HEAD_MASK 0x%x\n",
    (unsigned int) 0x4000 );
   }
  outn( "#define REJECT \\" );
  outn( "{ \\" );
  outn(
 "*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \\" );
  outn(
 "yy_cp = yy_full_match; /* restore poss. backed-over text */ \\" );
  if ( variable_trailing_context_rules )
   {
   outn(
  "yy_lp = yy_full_lp; /* restore orig. accepting pos. */ \\" );
   outn(
  "yy_state_ptr = yy_full_state; /* restore orig. state */ \\" );
   outn(
 "yy_current_state = *yy_state_ptr; /* restore curr. state */ \\" );
   }
  outn( "++yy_lp; \\" );
  outn( "goto find_rule; \\" );
  outn( "}" );
  }
 else
  {
  outn(
  "/* The intent behind this definition is that it'll catch" );
  outn( " * any uses of REJECT which flex missed." );
  outn( " */" );
  outn( "#define REJECT reject_used_but_not_detected" );
  }
 if ( yymore_used )
  {
  if ( ! C_plus_plus )
   {
   indent_puts( "static int yy_more_flag = 0;" );
   indent_puts( "static int yy_more_len = 0;" );
   }
  indent_puts( "#define yymore() (yy_more_flag = 1)" );
  indent_puts( "#define YY_MORE_ADJ yy_more_len" );
  }
 else
  {
  indent_puts( "#define yymore() yymore_used_but_not_detected" );
  indent_puts( "#define YY_MORE_ADJ 0" );
  }
 if ( ! C_plus_plus )
  {
  if ( yytext_is_array )
   {
   outn( "#ifndef YYLMAX" );
   outn( "#define YYLMAX 8192" );
   outn( "#endif\n" );
   outn( "char yytext[YYLMAX];" );
   outn( "char *yytext_ptr;" );
   }
  else
   outn( "char *yytext;" );
  }
 out( &action_array[defs1_offset] );
 line_directive_out( stdout, 0 );
 skelout();
 if ( ! C_plus_plus )
  {
  if ( use_read )
   {
   outn(
"\tif ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \\" );
   outn(
  "\t\tYY_FATAL_ERROR( \"input in flex scanner failed\" );" );
   }
  else
   {
   outn(
   "\tif ( yy_current_buffer->yy_is_interactive ) \\" );
   outn( "\t\t{ \\" );
   outn( "\t\tint c = '*', n; \\" );
   outn( "\t\tfor ( n = 0; n < max_size && \\" );
 outn( "\t\t\t     (c = getc( yyin )) != EOF && c != '\\n'; ++n ) \\" );
   outn( "\t\t\tbuf[n] = (char) c; \\" );
   outn( "\t\tif ( c == '\\n' ) \\" );
            outn( "\t\t\tbuf[n++] = (char) c; \\" );
   outn( "\t\tif ( c == EOF && ferror( yyin ) ) \\" );
   outn(
 "\t\t\tYY_FATAL_ERROR( \"input in flex scanner failed\" ); \\" );
   outn( "\t\tresult = n; \\" );
   outn( "\t\t} \\" );
   outn(
 "\telse if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \\" );
   outn( "\t\t  && ferror( yyin ) ) \\" );
   outn(
  "\t\tYY_FATAL_ERROR( \"input in flex scanner failed\" );" );
   }
  }
 skelout();
 indent_puts( "#define YY_RULE_SETUP \\" );
 (++indent_level);
 if ( bol_needed )
  {
  indent_puts( "if ( yyleng > 0 ) \\" );
  (++indent_level);
  indent_puts( "yy_current_buffer->yy_at_bol = \\" );
  indent_puts( "\t\t(yytext[yyleng - 1] == '\\n'); \\" );
  (--indent_level);
  }
 indent_puts( "YY_USER_ACTION" );
 (--indent_level);
 skelout();
 out( &action_array[prolog_offset] );
 line_directive_out( stdout, 0 );
 skelout();
 indent_level = 2;
 if ( yymore_used )
  {
  indent_puts( "yy_more_len = 0;" );
  indent_puts( "if ( yy_more_flag )" );
  (++indent_level);
  indent_puts( "{" );
  indent_puts( "yy_more_len = yyleng;" );
  indent_puts( "yy_more_flag = 0;" );
  indent_puts( "}" );
  (--indent_level);
  }
 skelout();
 gen_start_state();
 outn( "yy_match:" );
 gen_next_match();
 skelout();
 indent_level = 2;
 gen_find_action();
 skelout();
 if ( do_yylineno )
  {
  indent_puts( "if ( yy_act != YY_END_OF_BUFFER )" );
  (++indent_level);
  indent_puts( "{" );
  indent_puts( "int yyl;" );
  indent_puts( "for ( yyl = 0; yyl < yyleng; ++yyl )" );
  (++indent_level);
  indent_puts( "if ( yytext[yyl] == '\\n' )" );
  (++indent_level);
  indent_puts( "++yylineno;" );
  (--indent_level);
  (--indent_level);
  indent_puts( "}" );
  (--indent_level);
  }
 skelout();
 if ( ddebug )
  {
  indent_puts( "if ( yy_flex_debug )" );
  (++indent_level);
  indent_puts( "{" );
  indent_puts( "if ( yy_act == 0 )" );
  (++indent_level);
  indent_puts( C_plus_plus ?
   "cerr << \"--scanner backing up\\n\";" :
   "fprintf( err, \"--scanner backing up\\n\" );" );
  (--indent_level);
  do_indent();
  out_dec( "else if ( yy_act < %d )\n", num_rules );
  (++indent_level);
  if ( C_plus_plus )
   {
   indent_puts(
 "cerr << \"--accepting rule at line \" << yy_rule_linenum[yy_act] <<" );
   indent_puts(
   "         \"(\\\"\" << yytext << \"\\\")\\n\";" );
   }
  else
   {
   indent_puts(
 "fprintf( err, \"--accepting rule at line %d (\\\"%s\\\")\\n\"," );
   indent_puts(
    "         yy_rule_linenum[yy_act], yytext );" );
   }
  (--indent_level);
  do_indent();
  out_dec( "else if ( yy_act == %d )\n", num_rules );
  (++indent_level);
  if ( C_plus_plus )
   {
   indent_puts(
"cerr << \"--accepting default rule (\\\"\" << yytext << \"\\\")\\n\";" );
   }
  else
   {
   indent_puts(
 "fprintf( err, \"--accepting default rule (\\\"%s\\\")\\n\"," );
   indent_puts( "         yytext );" );
   }
  (--indent_level);
  do_indent();
  out_dec( "else if ( yy_act == %d )\n", num_rules + 1 );
  (++indent_level);
  indent_puts( C_plus_plus ?
   "cerr << \"--(end of buffer or a NUL)\\n\";" :
  "fprintf( err, \"--(end of buffer or a NUL)\\n\" );" );
  (--indent_level);
  do_indent();
  outn( "else" );
  (++indent_level);
  if ( C_plus_plus )
   {
   indent_puts(
 "cerr << \"--EOF (start condition \" << YY_START << \")\\n\";" );
   }
  else
   {
   indent_puts(
 "fprintf( err, \"--EOF (start condition %d)\\n\", YY_START );" );
   }
  (--indent_level);
  indent_puts( "}" );
  (--indent_level);
  }
 skelout();
 (++indent_level);
 gen_bu_action();
 out( &action_array[action_offset] );
 line_directive_out( stdout, 0 );
 for ( i = 1; i <= lastsc; ++i )
  if ( ! sceof[i] )
   {
   do_indent();
   out_str( "case YY_STATE_EOF(%s):\n", scname[i] );
   did_eof_rule = 1;
   }
 if ( did_eof_rule )
  {
  (++indent_level);
  indent_puts( "yyterminate();" );
  (--indent_level);
  }
 skelout();
 indent_level = 4;
 if ( fullspd || fulltbl )
  indent_puts( "yy_cp = yy_c_buf_p;" );
 else
  {
  if ( ! reject && ! interactive )
   {
   indent_puts( "yy_cp = yy_last_accepting_cpos;" );
   indent_puts(
    "yy_current_state = yy_last_accepting_state;" );
   }
  else
   indent_puts( "yy_cp = yy_c_buf_p;" );
  }
 indent_level = 1;
 skelout();
 gen_start_state();
 indent_level = 2;
 skelout();
 gen_next_state( 1 );
 indent_level = 1;
 skelout();
 gen_NUL_trans();
 skelout();
 if ( do_yylineno )
  {
  indent_puts( "if ( c == '\\n' )" );
  (++indent_level);
  indent_puts( "--yylineno;" );
  (--indent_level);
  }
 skelout();
 if ( bol_needed )
  {
  indent_puts( "yy_current_buffer->yy_at_bol = (c == '\\n');" );
  if ( do_yylineno )
   {
   indent_puts( "if ( yy_current_buffer->yy_at_bol )" );
   (++indent_level);
   indent_puts( "++yylineno;" );
   (--indent_level);
   }
  }
 else if ( do_yylineno )
  {
  indent_puts( "if ( c == '\\n' )" );
  (++indent_level);
  indent_puts( "++yylineno;" );
  (--indent_level);
  }
 skelout();
 line_directive_out( stdout, 1 );
 if ( sectnum == 3 )
  (void) flexscan();
 }
void dataflush (void);
int otoi (unsigned char []);
void action_define( defname, value )
char *defname;
int value;
 {
 char buf[2048];
 if ( strlen( defname ) > 2048 / 2 )
  {
  format_pinpoint_message( ("name \"%s\" ridiculously long"),
   defname );
  return;
  }
 sprintf( buf, "#define %s %d\n", defname, value );
 add_action( buf );
 }
void add_action( new_text )
char *new_text;
 {
 int len = strlen( new_text );
 while ( len + action_index >= action_size - 10 )
  {
  int new_size = action_size * 2;
  if ( new_size <= 0 )
   action_size += action_size / 8;
  else
   action_size = new_size;
  action_array =
   (char *) reallocate_array( (void *) action_array, action_size, sizeof( char ) );
  }
 strcpy( &action_array[action_index], new_text );
 action_index += len;
 }
void *allocate_array( size, element_size )
int size;
size_t element_size;
 {
 register void *mem;
 size_t num_bytes = element_size * size;
 mem = flex_alloc( num_bytes );
 if ( ! mem )
  flexfatal(
   ("memory allocation failed in allocate_array()") );
 return mem;
 }
int all_lower( str )
register char *str;
 {
 while ( *str )
  {
  if ( ! ((((unsigned char) *str) & ~0x7f) == 0) || ! ((*__ctype_b_loc ())[(int) ((*str))] & (unsigned short int) _ISlower) )
   return 0;
  ++str;
  }
 return 1;
 }
int all_upper( str )
register char *str;
 {
 while ( *str )
  {
  if ( ! ((((unsigned char) *str) & ~0x7f) == 0) || ! ((*__ctype_b_loc ())[(int) ((*str))] & (unsigned short int) _ISupper) )
   return 0;
  ++str;
  }
 return 1;
 }
void bubble( v, n )
int v[], n;
 {
 register int i, j, k;
 for ( i = n; i > 1; --i )
  for ( j = 1; j < i; ++j )
   if ( v[j] > v[j + 1] )
    {
    k = v[j];
    v[j] = v[j + 1];
    v[j + 1] = k;
    }
 }
void check_char( c )
int c;
 {
 if ( c >= 256 )
  lerrsf( ("bad character '%s' detected in check_char()"),
   readable_form( c ) );
 if ( c >= csize )
  lerrsf(
  ("scanner requires -8 flag to use the character %s"),
   readable_form( c ) );
 }
unsigned char clower( c )
register int c;
 {
 return (unsigned char) (((((c) & ~0x7f) == 0) && ((*__ctype_b_loc ())[(int) ((c))] & (unsigned short int) _ISupper)) ? tolower( c ) : c);
 }
char *copy_string( str )
register const char *str;
 {
 register const char *c1;
 register char *c2;
 char *copy;
 unsigned int size;
 for ( c1 = str; *c1; ++c1 )
  ;
 size = (c1 - str + 1) * sizeof( char );
 copy = (char *) flex_alloc( size );
 if ( copy == ((void *)0) )
  flexfatal( ("dynamic memory failure in copy_string()") );
 for ( c2 = copy; (*c2++ = *str++) != 0; )
  ;
 return copy;
 }
unsigned char *copy_unsigned_string( str )
register unsigned char *str;
 {
 register unsigned char *c;
 unsigned char *copy;
 for ( c = str; *c; ++c )
  ;
 copy = (unsigned char *) allocate_array( c - str + 1, sizeof( unsigned char ) );
 for ( c = copy; (*c++ = *str++) != 0; )
  ;
 return copy;
 }
void cshell( v, n, special_case_0 )
unsigned char v[];
int n, special_case_0;
 {
 int gap, i, j, jg;
 unsigned char k;
 for ( gap = n / 2; gap > 0; gap = gap / 2 )
  for ( i = gap; i < n; ++i )
   for ( j = i - gap; j >= 0; j = j - gap )
    {
    jg = j + gap;
    if ( special_case_0 )
     {
     if ( v[jg] == 0 )
      break;
     else if ( v[j] != 0 && v[j] <= v[jg] )
      break;
     }
    else if ( v[j] <= v[jg] )
     break;
    k = v[j];
    v[j] = v[jg];
    v[jg] = k;
    }
 }
void dataend()
 {
 if ( datapos > 0 )
  dataflush();
 outn( "    } ;\n" );
 dataline = 0;
 datapos = 0;
 }
void dataflush()
 {
 outc( '\n' );
 if ( ++dataline >= 10 )
  {
  outc( '\n' );
  dataline = 0;
  }
 datapos = 0;
 }
void flexerror( msg )
const char msg[];
 {
 fprintf( err, "%s: %s\n", program_name, msg );
 flexend( 1 );
 }
void flexfatal( msg )
const char msg[];
 {
 fprintf( err, ("%s: fatal internal error, %s\n"),
  program_name, msg );
 exit( 1 );
 }
int htoi( str )
unsigned char str[];
 {
 unsigned int result;
 (void) sscanf( (char *) str, "%x", &result );
 return result;
 }
void lerrif( msg, arg )
const char msg[];
int arg;
 {
 char errmsg[2048];
 (void) sprintf( errmsg, msg, arg );
 flexerror( errmsg );
 }
void lerrsf( msg, arg )
const char msg[], arg[];
 {
 char errmsg[2048];
 (void) sprintf( errmsg, msg, arg );
 flexerror( errmsg );
 }
void line_directive_out( output_file, do_infile )
FILE *output_file;
int do_infile;
 {
 char directive[2048], filename[2048];
 char *s1, *s2, *s3;
 static char line_fmt[] = "#line %d \"%s\"\n";
 if ( ! gen_line_dirs )
  return;
 if ( (do_infile && ! infilename) || (! do_infile && ! outfilename) )
  return;
 s1 = do_infile ? infilename : outfilename;
 s2 = filename;
 s3 = &filename[sizeof( filename ) - 2];
 while ( s2 < s3 && *s1 )
  {
  if ( *s1 == '\\' )
   *s2++ = '\\';
  *s2++ = *s1++;
  }
 *s2 = '\0';
 if ( do_infile )
  sprintf( directive, line_fmt, linenum, filename );
 else
  {
  if ( output_file == stdout )
   ++out_linenum;
  sprintf( directive, line_fmt, out_linenum, filename );
  }
 if ( output_file )
  {
  fputs( directive, output_file );
  }
 else
  add_action( directive );
 }
void mark_defs1()
 {
 defs1_offset = 0;
 action_array[action_index++] = '\0';
 action_offset = prolog_offset = action_index;
 action_array[action_index] = '\0';
 }
void mark_prolog()
 {
 action_array[action_index++] = '\0';
 action_offset = action_index;
 action_array[action_index] = '\0';
 }
void mk2data( value )
int value;
 {
 if ( datapos >= 10 )
  {
  outc( ',' );
  dataflush();
  }
 if ( datapos == 0 )
  out( "    " );
 else
  outc( ',' );
 ++datapos;
 out_dec( "%5d", value );
 }
void mkdata( value )
int value;
 {
 if ( datapos >= 10 )
  {
  outc( ',' );
  dataflush();
  }
 if ( datapos == 0 )
  out( "    " );
 else
  outc( ',' );
 ++datapos;
 out_dec( "%5d", value );
 }
int myctoi( array )
char array[];
 {
 int val = 0;
 (void) sscanf( array, "%d", &val );
 return val;
 }
unsigned char myesc( array )
unsigned char array[];
 {
 unsigned char c, esc_char;
 switch ( array[1] )
  {
  case 'b': return '\b';
  case 'f': return '\f';
  case 'n': return '\n';
  case 'r': return '\r';
  case 't': return '\t';
  case 'a': return '\a';
  case 'v': return '\v';
  case '0':
  case '1':
  case '2':
  case '3':
  case '4':
  case '5':
  case '6':
  case '7':
  case '8':
  case '9':
   {
   int sptr = 1;
   while ( (((array[sptr]) & ~0x7f) == 0) &&
    ((*__ctype_b_loc ())[(int) ((array[sptr]))] & (unsigned short int) _ISdigit) )
    ++sptr;
   c = array[sptr];
   array[sptr] = '\0';
   esc_char = otoi( array + 1 );
   array[sptr] = c;
   return esc_char;
   }
  case 'x':
   {
   int sptr = 2;
   while ( (((array[sptr]) & ~0x7f) == 0) &&
    ((*__ctype_b_loc ())[(int) (((char) array[sptr]))] & (unsigned short int) _ISxdigit) )
    ++sptr;
   c = array[sptr];
   array[sptr] = '\0';
   esc_char = htoi( array + 2 );
   array[sptr] = c;
   return esc_char;
   }
  default:
   return array[1];
  }
 }
int otoi( str )
unsigned char str[];
 {
 unsigned int result;
 (void) sscanf( (char *) str, "%o", &result );
 return result;
 }
void out( str )
const char str[];
 {
 fputs( str, stdout );
 out_line_count( str );
 }
void out_dec( fmt, n )
const char fmt[];
int n;
 {
 printf( fmt, n );
 out_line_count( fmt );
 }
void out_dec2( fmt, n1, n2 )
const char fmt[];
int n1, n2;
 {
 printf( fmt, n1, n2 );
 out_line_count( fmt );
 }
void out_hex( fmt, x )
const char fmt[];
unsigned int x;
 {
 printf( fmt, x );
 out_line_count( fmt );
 }
void out_line_count( str )
const char str[];
 {
 register int i;
 for ( i = 0; str[i]; ++i )
  if ( str[i] == '\n' )
   ++out_linenum;
 }
void out_str( fmt, str )
const char fmt[], str[];
 {
 printf( fmt, str );
 out_line_count( fmt );
 out_line_count( str );
 }
void out_str3( fmt, s1, s2, s3 )
const char fmt[], s1[], s2[], s3[];
 {
 printf( fmt, s1, s2, s3 );
 out_line_count( fmt );
 out_line_count( s1 );
 out_line_count( s2 );
 out_line_count( s3 );
 }
void out_str_dec( fmt, str, n )
const char fmt[], str[];
int n;
 {
 printf( fmt, str, n );
 out_line_count( fmt );
 out_line_count( str );
 }
void outc( c )
int c;
 {
 _IO_putc (c, stdout);
 if ( c == '\n' )
  ++out_linenum;
 }
void outn( str )
const char str[];
 {
 puts( str );
 out_line_count( str );
 ++out_linenum;
 }
char *readable_form( c )
register int c;
 {
 static char rform[10];
 if ( (c >= 0 && c < 32) || c >= 127 )
  {
  switch ( c )
   {
   case '\b': return "\\b";
   case '\f': return "\\f";
   case '\n': return "\\n";
   case '\r': return "\\r";
   case '\t': return "\\t";
   case '\a': return "\\a";
   case '\v': return "\\v";
   default:
    (void) sprintf( rform, "\\%.3o",
      (unsigned int) c );
    return rform;
   }
  }
 else if ( c == ' ' )
  return "' '";
 else
  {
  rform[0] = c;
  rform[1] = '\0';
  return rform;
  }
 }
void *reallocate_array( array, size, element_size )
void *array;
int size;
size_t element_size;
 {
 register void *new_array;
 size_t num_bytes = element_size * size;
 new_array = flex_realloc( array, num_bytes );
 if ( ! new_array )
  flexfatal( ("attempt to increase array size failed") );
 return new_array;
 }
void skelout()
 {
 char buf_storage[2048];
 char *buf = buf_storage;
 int do_copy = 1;
 while ( skelfile ?
  (fgets( buf, 2048, skelfile ) != ((void *)0)) :
  ((buf = (char *) skel[skel_ind++]) != 0) )
  {
  if ( buf[0] == '%' )
   {
   switch ( buf[1] )
    {
    case '%':
     return;
    case '+':
     do_copy = C_plus_plus;
     break;
    case '-':
     do_copy = ! C_plus_plus;
     break;
    case '*':
     do_copy = 1;
     break;
    default:
     flexfatal(
     ("bad line in skeleton file") );
    }
   }
  else if ( do_copy )
   {
   if ( skelfile )
    out( buf );
   else
    outn( buf );
   }
  }
 }
void transition_struct_out( element_v, element_n )
int element_v, element_n;
 {
 out_dec2( " {%4d,%4d },", element_v, element_n );
 datapos += 14;
 if ( datapos >= 79 - 14 )
  {
  outc( '\n' );
  if ( ++dataline % 10 == 0 )
   outc( '\n' );
  datapos = 0;
  }
 }
void *yy_flex_xmalloc( size )
int size;
 {
 void *result = flex_alloc( (size_t) size );
 if ( ! result )
  flexfatal(
   ("memory allocation failed in yy_flex_xmalloc()") );
 return result;
 }
void zero_out( region_ptr, size_in_bytes )
char *region_ptr;
size_t size_in_bytes;
 {
 register char *rp, *rp_end;
 rp = region_ptr;
 rp_end = region_ptr + size_in_bytes;
 while ( rp < rp_end )
  *rp++ = 0;
 }
int dupmachine (int);
void mkxtion (int, int);
void add_accept( mach, accepting_number )
int mach, accepting_number;
 {
 if ( transchar[finalst[mach]] == (256 + 1) )
  accptnum[finalst[mach]] = accepting_number;
 else
  {
  int astate = mkstate( (256 + 1) );
  accptnum[astate] = accepting_number;
  (void) link_machines( mach, astate );
  }
 }
int copysingl( singl, num )
int singl, num;
 {
 int copy, i;
 copy = mkstate( (256 + 1) );
 for ( i = 1; i <= num; ++i )
  copy = link_machines( copy, dupmachine( singl ) );
 return copy;
 }
void dumpnfa( state1 )
int state1;
 {
 int sym, tsp1, tsp2, anum, ns;
 fprintf( err,
 ("\n\n********** beginning dump of nfa with start state %d\n"),
  state1 );
 for ( ns = 1; ns <= lastnfa; ++ns )
  {
  fprintf( err, ("state # %4d\t"), ns );
  sym = transchar[ns];
  tsp1 = trans1[ns];
  tsp2 = trans2[ns];
  anum = accptnum[ns];
  fprintf( err, "%3d:  %4d, %4d", sym, tsp1, tsp2 );
  if ( anum != 0 )
   fprintf( err, "  [%d]", anum );
  fprintf( err, "\n" );
  }
 fprintf( err, ("********** end of dump\n") );
 }
int dupmachine( mach )
int mach;
 {
 int i, init, state_offset;
 int state = 0;
 int last = lastst[mach];
 for ( i = firstst[mach]; i <= last; ++i )
  {
  state = mkstate( transchar[i] );
  if ( trans1[i] != 0 )
   {
   mkxtion( finalst[state], trans1[i] + state - i );
   if ( transchar[i] == (256 + 1) &&
        trans2[i] != 0 )
    mkxtion( finalst[state],
     trans2[i] + state - i );
   }
  accptnum[state] = accptnum[i];
  }
 if ( state == 0 )
  flexfatal( ("empty machine in dupmachine()") );
 state_offset = state - i + 1;
 init = mach + state_offset;
 firstst[init] = firstst[mach] + state_offset;
 finalst[init] = finalst[mach] + state_offset;
 lastst[init] = lastst[mach] + state_offset;
 return init;
 }
void finish_rule( mach, variable_trail_rule, headcnt, trailcnt )
int mach, variable_trail_rule, headcnt, trailcnt;
 {
 char action_text[2048];
 add_accept( mach, num_rules );
 rule_linenum[num_rules] = linenum;
 if ( continued_action )
  --rule_linenum[num_rules];
 sprintf( action_text, "case %d:\n", num_rules );
 add_action( action_text );
 if ( variable_trail_rule )
  {
  rule_type[num_rules] = 1;
  if ( performance_report > 0 )
   fprintf( err,
   ("Variable trailing context rule at line %d\n"),
    rule_linenum[num_rules] );
  variable_trailing_context_rules = 1;
  }
 else
  {
  rule_type[num_rules] = 0;
  if ( headcnt > 0 || trailcnt > 0 )
   {
   char *scanner_cp = "yy_c_buf_p = yy_cp";
   char *scanner_bp = "yy_bp";
   add_action(
 "*yy_cp = yy_hold_char; /* undo effects of setting up yytext */\n" );
   if ( headcnt > 0 )
    {
    sprintf( action_text, "%s = %s + %d;\n",
    scanner_cp, scanner_bp, headcnt );
    add_action( action_text );
    }
   else
    {
    sprintf( action_text, "%s -= %d;\n",
     scanner_cp, trailcnt );
    add_action( action_text );
    }
   add_action(
   "YY_DO_BEFORE_ACTION; /* set up yytext again */\n" );
   }
  }
 if ( ! continued_action )
  add_action( "YY_RULE_SETUP\n" );
 line_directive_out( (FILE *) 0, 1 );
 }
int link_machines( first, last )
int first, last;
 {
 if ( first == 0 )
  return last;
 else if ( last == 0 )
  return first;
 else
  {
  mkxtion( finalst[first], last );
  finalst[first] = finalst[last];
  lastst[first] = ((lastst[first]) > (lastst[last]) ? (lastst[first]) : (lastst[last]));
  firstst[first] = ((firstst[first]) < (firstst[last]) ? (firstst[first]) : (firstst[last]));
  return first;
  }
 }
void mark_beginning_as_normal( mach )
register int mach;
 {
 switch ( state_type[mach] )
  {
  case 0x1:
   return;
  case 0x2:
   state_type[mach] = 0x1;
   if ( transchar[mach] == (256 + 1) )
    {
    if ( trans1[mach] != 0 )
     mark_beginning_as_normal(
      trans1[mach] );
    if ( trans2[mach] != 0 )
     mark_beginning_as_normal(
      trans2[mach] );
    }
   break;
  default:
   flexerror(
   ("bad state type in mark_beginning_as_normal()") );
   break;
  }
 }
int mkbranch( first, second )
int first, second;
 {
 int eps;
 if ( first == 0 )
  return second;
 else if ( second == 0 )
  return first;
 eps = mkstate( (256 + 1) );
 mkxtion( eps, first );
 mkxtion( eps, second );
 return eps;
 }
int mkclos( state )
int state;
 {
 return mkopt( mkposcl( state ) );
 }
int mkopt( mach )
int mach;
 {
 int eps;
 if ( ! (transchar[finalst[mach]] == (256 + 1) && trans1[finalst[mach]] == 0) )
  {
  eps = mkstate( (256 + 1) );
  mach = link_machines( mach, eps );
  }
 eps = mkstate( (256 + 1) );
 mach = link_machines( eps, mach );
 mkxtion( mach, finalst[mach] );
 return mach;
 }
int mkor( first, second )
int first, second;
 {
 int eps, orend;
 if ( first == 0 )
  return second;
 else if ( second == 0 )
  return first;
 else
  {
  eps = mkstate( (256 + 1) );
  first = link_machines( eps, first );
  mkxtion( first, second );
  if ( (transchar[finalst[first]] == (256 + 1) && trans1[finalst[first]] == 0) &&
       accptnum[finalst[first]] == 0 )
   {
   orend = finalst[first];
   mkxtion( finalst[second], orend );
   }
  else if ( (transchar[finalst[second]] == (256 + 1) && trans1[finalst[second]] == 0) &&
     accptnum[finalst[second]] == 0 )
   {
   orend = finalst[second];
   mkxtion( finalst[first], orend );
   }
  else
   {
   eps = mkstate( (256 + 1) );
   first = link_machines( first, eps );
   orend = finalst[first];
   mkxtion( finalst[second], orend );
   }
  }
 finalst[first] = orend;
 return first;
 }
int mkposcl( state )
int state;
 {
 int eps;
 if ( (transchar[finalst[state]] == (256 + 1) && trans1[finalst[state]] == 0) )
  {
  mkxtion( finalst[state], state );
  return state;
  }
 else
  {
  eps = mkstate( (256 + 1) );
  mkxtion( eps, state );
  return link_machines( state, eps );
  }
 }
int mkrep( mach, lb, ub )
int mach, lb, ub;
 {
 int base_mach, tail, copy, i;
 base_mach = copysingl( mach, lb - 1 );
 if ( ub == -1 )
  {
  copy = dupmachine( mach );
  mach = link_machines( mach,
  link_machines( base_mach, mkclos( copy ) ) );
  }
 else
  {
  tail = mkstate( (256 + 1) );
  for ( i = lb; i < ub; ++i )
   {
   copy = dupmachine( mach );
   tail = mkopt( link_machines( copy, tail ) );
   }
  mach = link_machines( mach, link_machines( base_mach, tail ) );
  }
 return mach;
 }
int mkstate( sym )
int sym;
 {
 if ( ++lastnfa >= current_mns )
  {
  if ( (current_mns += 1000) >= 31999 )
   lerrif(
  ("input rules are too complicated (>= %d NFA states)"),
    current_mns );
  ++num_reallocs;
  firstst = (int *) reallocate_array( (void *) firstst, current_mns, sizeof( int ) );
  lastst = (int *) reallocate_array( (void *) lastst, current_mns, sizeof( int ) );
  finalst = (int *) reallocate_array( (void *) finalst, current_mns, sizeof( int ) );
  transchar = (int *) reallocate_array( (void *) transchar, current_mns, sizeof( int ) );
  trans1 = (int *) reallocate_array( (void *) trans1, current_mns, sizeof( int ) );
  trans2 = (int *) reallocate_array( (void *) trans2, current_mns, sizeof( int ) );
  accptnum = (int *) reallocate_array( (void *) accptnum, current_mns, sizeof( int ) );
  assoc_rule =
   (int *) reallocate_array( (void *) assoc_rule, current_mns, sizeof( int ) );
  state_type =
   (int *) reallocate_array( (void *) state_type, current_mns, sizeof( int ) );
  }
 firstst[lastnfa] = lastnfa;
 finalst[lastnfa] = lastnfa;
 lastst[lastnfa] = lastnfa;
 transchar[lastnfa] = sym;
 trans1[lastnfa] = 0;
 trans2[lastnfa] = 0;
 accptnum[lastnfa] = 0;
 assoc_rule[lastnfa] = num_rules;
 state_type[lastnfa] = current_state_type;
 if ( sym < 0 )
  {
  }
 else if ( sym == (256 + 1) )
  ++numeps;
 else
  {
  check_char( sym );
  if ( useecs )
   mkechar( sym ? sym : csize, nextecm, ecgroup );
  }
 return lastnfa;
 }
void mkxtion( statefrom, stateto )
int statefrom, stateto;
 {
 if ( trans1[statefrom] == 0 )
  trans1[statefrom] = stateto;
 else if ( (transchar[statefrom] != (256 + 1)) ||
    (trans2[statefrom] != 0) )
  flexfatal( ("found too many transitions in mkxtion()") );
 else
  {
  ++eps2;
  trans2[statefrom] = stateto;
  }
 }
void new_rule()
 {
 if ( ++num_rules >= current_max_rules )
  {
  ++num_reallocs;
  current_max_rules += 100;
  rule_type = (int *) reallocate_array( (void *) rule_type, current_max_rules, sizeof( int ) );
  rule_linenum = (int *) reallocate_array( (void *) rule_linenum, current_max_rules, sizeof( int ) );
  rule_useful = (int *) reallocate_array( (void *) rule_useful, current_max_rules, sizeof( int ) );
  }
 if ( num_rules > (0x2000 - 1) )
  lerrif( ("too many rules (> %d)!"), (0x2000 - 1) );
 rule_linenum[num_rules] = linenum;
 rule_useful[num_rules] = 0;
 }
const char *skel[] = {
  "/* A lexical scanner generated by flex */",
  "",
  "/* Scanner skeleton version:",
  " * $Header: /a1/cvsadm/cvsroot/expsir/csubjects/flex/versions.alt/versions.seeded/v2/flex.c,v 1.1.1.2 2003/09/02 20:21:59 expsir Exp $",
  " */",
  "",
  "#define FLEX_SCANNER",
  "#define YY_FLEX_MAJOR_VERSION 2",
  "#define YY_FLEX_MINOR_VERSION 5",
  "",
  "%-",
  "#include <stdio.h>",
  "%*",
  "",
  "",
  "/* cfront 1.2 defines \"c_plusplus\" instead of \"__cplusplus\" */",
  "#ifdef c_plusplus",
  "#ifndef __cplusplus",
  "#define __cplusplus",
  "#endif",
  "#endif",
  "",
  "",
  "#ifdef __cplusplus",
  "",
  "#include <stdlib.h>",
  "%+",
  "class istream;",
  "%*",
  "#include <unistd.h>",
  "",
  "/* Use prototypes in function declarations. */",
  "#define YY_USE_PROTOS",
  "",
  "/* The \"const\" storage-class-modifier is valid. */",
  "#define YY_USE_CONST",
  "",
  "#else	/* ! __cplusplus */",
  "",
  "#if __STDC__",
  "",
  "#define YY_USE_PROTOS",
  "#define YY_USE_CONST",
  "",
  "#endif	/* __STDC__ */",
  "#endif	/* ! __cplusplus */",
  "",
  "#ifdef __TURBOC__",
  " #pragma warn -rch",
  " #pragma warn -use",
  "#include <io.h>",
  "#include <stdlib.h>",
  "#define YY_USE_CONST",
  "#define YY_USE_PROTOS",
  "#endif",
  "",
  "#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.  The YYSTATE alias is for lex",
  " * compatibility.",
  " */",
  "#define YY_START ((yy_start - 1) / 2)",
  "#define YYSTATE YY_START",
  "",
  "/* Action number for EOF rule of a given start state. */",
  "#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)",
  "",
  "/* Special action meaning \"start processing a new file\". */",
  "#define YY_NEW_FILE yyrestart( yyin )",
  "",
  "#define YY_END_OF_BUFFER_CHAR 0",
  "",
  "/* Size of default input buffer. */",
  "#define YY_BUF_SIZE 16384",
  "",
  "typedef struct yy_buffer_state *YY_BUFFER_STATE;",
  "",
  "extern int yyleng;",
  "%-",
  "extern FILE *yyin, *yyout;",
  "%*",
  "",
  "#define EOB_ACT_CONTINUE_SCAN 0",
  "#define EOB_ACT_END_OF_FILE 1",
  "#define EOB_ACT_LAST_MATCH 2",
  "",
  "/* The funky do-while in the following #define is used to turn the definition",
  " * int a single C statement (which needs a semi-colon terminator).  This",
  " * avoids problems with code like:",
  " *",
  " * 	if ( condition_holds )",
  " *		yyless( 5 );",
  " *	else",
  " *		do_something_else();",
  " *",
  " * Prior to using the do-while the compiler would get upset at the",
  " * \"else\" because it interpreted the \"if\" statement as being all",
  " * done when it reached the ';' after the yyless() call.",
  " */",
  "",
  "/* Return all but the first 'n' matched characters back to the input stream. */",
  "",
  "#define yyless(n) \\",
  "	do \\",
  "		{ \\",
  "		/* Undo effects of setting up yytext. */ \\",
  "		*yy_cp = yy_hold_char; \\",
  "		yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \\",
  "		YY_DO_BEFORE_ACTION; /* set up yytext again */ \\",
  "		} \\",
  "	while ( 0 )",
  "",
  "#define unput(c) yyunput( c, yytext_ptr )",
  "",
  "/* The following is because we cannot portably get our hands on size_t",
  " * (without autoconf's help, which isn't available because we want",
  " * flex-generated scanners to compile on their own).",
  " */",
  "typedef unsigned int yy_size_t;",
  "",
  "",
  "struct yy_buffer_state",
  "	{",
  "%-",
  "	FILE *yy_input_file;",
  "%+",
  "	istream* yy_input_file;",
  "%*",
  "",
  "	char *yy_ch_buf;		/* input buffer */",
  "	char *yy_buf_pos;		/* current position in input buffer */",
  "",
  "	/* Size of input buffer in bytes, not including room for EOB",
  "	 * characters.",
  "	 */",
  "	yy_size_t yy_buf_size;",
  "",
  "	/* Number of characters read into yy_ch_buf, not including EOB",
  "	 * characters.",
  "	 */",
  "	int yy_n_chars;",
  "",
  "	/* Whether we \"own\" the buffer - i.e., we know we created it,",
  "	 * and can realloc() it to grow it, and should free() it to",
  "	 * delete it.",
  "	 */",
  "	int yy_is_our_buffer;",
  "",
  "	/* Whether this is an \"interactive\" input source; if so, and",
  "	 * if we're using stdio for input, then we want to use getc()",
  "	 * instead of fread(), to make sure we stop fetching input after",
  "	 * each newline.",
  "	 */",
  "	int yy_is_interactive;",
  "",
  "	/* Whether we're considered to be at the beginning of a line.",
  "	 * If so, '^' rules will be active on the next match, otherwise",
  "	 * not.",
  "	 */",
  "	int yy_at_bol;",
  "",
  "	/* Whether to try to fill the input buffer when we reach the",
  "	 * end of it.",
  "	 */",
  "	int yy_fill_buffer;",
  "",
  "	int yy_buffer_status;",
  "#define YY_BUFFER_NEW 0",
  "#define YY_BUFFER_NORMAL 1",
  "	/* When an EOF's been seen but there's still some text to process",
  "	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we",
  "	 * shouldn't try reading from the input source any more.  We might",
  "	 * still have a bunch of tokens to match, though, because of",
  "	 * possible backing-up.",
  "	 *",
  "	 * When we actually see the EOF, we change the status to \"new\"",
  "	 * (via yyrestart()), so that the user can continue scanning by",
  "	 * just pointing yyin at a new input file.",
  "	 */",
  "#define YY_BUFFER_EOF_PENDING 2",
  "	};",
  "",
  "%- Standard (non-C++) definition",
  "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",
  "",
  "",
  "%- Standard (non-C++) definition",
  "/* yy_hold_char holds the character lost when yytext is formed. */",
  "static char yy_hold_char;",
  "",
  "static int yy_n_chars;		/* number of characters read into yy_ch_buf */",
  "",
  "",
  "int yyleng;",
  "",
  "/* Points to current character in buffer. */",
  "static char *yy_c_buf_p = (char *) 0;",
  "static int yy_init = 1;		/* whether we need to initialize */",
  "static int yy_start = 0;	/* start state number */",
  "",
  "/* Flag which is used to allow yywrap()'s to do buffer switches",
  " * instead of setting up a fresh yyin.  A bit of a hack ...",
  " */",
  "static int yy_did_buffer_switch_on_eof;",
  "",
  "void yyrestart YY_PROTO(( FILE *input_file ));",
  "",
  "void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));",
  "void yy_load_buffer_state YY_PROTO(( void ));",
  "YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));",
  "void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));",
  "void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));",
  "void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));",
  "#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )",
  "",
  "YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));",
  "YY_BUFFER_STATE yy_scan_string YY_PROTO(( const char *str ));",
  "YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( const char *bytes, int len ));",
  "%*",
  "",
  "static void *yy_flex_alloc YY_PROTO(( yy_size_t ));",
  "static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));",
  "static void yy_flex_free YY_PROTO(( void * ));",
  "",
  "#define yy_new_buffer yy_create_buffer",
  "",
  "#define yy_set_interactive(is_interactive) \\",
  "	{ \\",
  "	if ( ! yy_current_buffer ) \\",
  "		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \\",
  "	yy_current_buffer->yy_is_interactive = is_interactive; \\",
  "	}",
  "",
  "#define yy_set_bol(at_bol) \\",
  "	{ \\",
  "	if ( ! yy_current_buffer ) \\",
  "		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \\",
  "	yy_current_buffer->yy_at_bol = at_bol; \\",
  "	}",
  "",
  "#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)",
  "",
  "%% yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here",
  "",
  "#ifndef YY_SKIP_YYWRAP",
  "#ifdef __cplusplus",
  "extern \"C\" int yywrap YY_PROTO(( void ));",
  "#else",
  "extern int yywrap YY_PROTO(( void ));",
  "#endif",
  "#endif",
  "",
  "#ifndef YY_NO_UNPUT",
  "static void yyunput YY_PROTO(( int c, char *buf_ptr ));",
  "#endif",
  "",
  "#ifndef yytext_ptr",
  "static void yy_flex_strncpy YY_PROTO(( char *, const char *, int ));",
  "#endif",
  "",
  "#ifndef YY_NO_INPUT",
  "%- Standard (non-C++) definition",
  "#ifdef __cplusplus",
  "static int yyinput YY_PROTO(( void ));",
  "#else",
  "static int input YY_PROTO(( void ));",
  "#endif",
  "%*",
  "#endif",
  "",
  "%- Standard (non-C++) definition",
  "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; \\",
  "%% code to fiddle yytext and yyleng for yymore() goes here",
  "	yy_hold_char = *yy_cp; \\",
  "	*yy_cp = '\\0'; \\",
  "%% code to copy yytext_ptr to yytext[] goes here, if %array",
  "	yy_c_buf_p = yy_cp;",
  "",
  "%% data tables for the DFA and the user's section 1 definitions go here",
  "",
  "/* Macros after this point can all be overridden by user definitions in",
  " * section 1.",
  " */",
  "",
  "#if YY_STACK_USED",
  "static int yy_start_stack_ptr = 0;",
  "static int yy_start_stack_depth = 0;",
  "static int *yy_start_stack = 0;",
  "#ifndef YY_NO_PUSH_STATE",
  "static void yy_push_state YY_PROTO(( int new_state ));",
  "#endif",
  "#ifndef YY_NO_POP_STATE",
  "static void yy_pop_state YY_PROTO(( void ));",
  "#endif",
  "#ifndef YY_NO_TOP_STATE",
  "static int yy_top_state YY_PROTO(( void ));",
  "#endif",
  "",
  "#else",
  "#define YY_NO_PUSH_STATE 1",
  "#define YY_NO_POP_STATE 1",
  "#define YY_NO_TOP_STATE 1",
  "#endif",
  "",
  "#ifdef YY_MALLOC_DECL",
  "YY_MALLOC_DECL",
  "#else",
  "#if __STDC__",
  "#ifndef __cplusplus",
  "#include <stdlib.h>",
  "#endif",
  "#else",
  "/* Just try to get by without declaring the routines.  This will fail",
  " * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)",
  " * or sizeof(void*) != sizeof(int).",
  " */",
  "#endif",
  "#endif",
  "",
  "/* Amount of stuff to slurp up with each read. */",
  "#ifndef YY_READ_BUF_SIZE",
  "#define YY_READ_BUF_SIZE 8192",
  "#endif",
  "",
  "/* Copy whatever the last rule matched to the standard output. */",
  "",
  "#ifndef ECHO",
  "%- Standard (non-C++) definition",
  "/* 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 )",
  "%+ C++ definition",
  "#define ECHO LexerOutput( yytext, yyleng )",
  "%*",
  "#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) \\",
  "%% fread()/read() definition of YY_INPUT goes here unless we're doing C++",
  "%+ C++ definition",
  "	if ( (result = LexerInput( (char *) buf, max_size )) < 0 ) \\",
  "		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 )",
  "%+",
  "#define YY_FATAL_ERROR(msg) LexerError( msg )",
  "%*",
  "#endif",
  "",
  "/* Default declaration of generated scanner - a define so the user can",
  " * easily add parameters.",
  " */",
  "#ifndef YY_DECL",
  "%- Standard (non-C++) definition",
  "#define YY_DECL int yylex YY_PROTO(( void ))",
  "%+ C++ definition",
  "#define YY_DECL int yyFlexLexer::yylex()",
  "%*",
  "#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_RULE_SETUP definition goes here",
  "",
  "YY_DECL",
  "	{",
  "	register yy_state_type yy_current_state;",
  "	register char *yy_cp, *yy_bp;",
  "	register int yy_act;",
  "",
  "%% user's declarations go here",
  "",
  "	if ( yy_init )",
  "		{",
  "		yy_init = 0;",
  "",
  "#ifdef YY_USER_INIT",
  "		YY_USER_INIT;",
  "#endif",
  "",
  "		if ( ! yy_start )",
  "			yy_start = 1;	/* first start state */",
  "",
  "		if ( ! yyin )",
  "%-",
  "			yyin = stdin;",
  "%+",
  "			yyin = &cin;",
  "%*",
  "",
  "		if ( ! yyout )",
  "%-",
  "			yyout = stdout;",
  "%+",
  "			yyout = &cout;",
  "%*",
  "",
  "		if ( ! yy_current_buffer )",
  "			yy_current_buffer =",
  "				yy_create_buffer( yyin, YY_BUF_SIZE );",
  "",
  "		yy_load_buffer_state();",
  "		}",
  "",
  "	while ( 1 )		/* loops until end-of-file is reached */",
  "		{",
  "%% yymore()-related code goes here",
  "		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;",
  "",
  "%% code to set up and find next match goes here",
  "",
  "yy_find_action:",
  "%% code to find the action number goes here",
  "",
  "		YY_DO_BEFORE_ACTION;",
  "",
  "%% code for yylineno update goes here",
  "",
  "do_action:	/* This label is used only to access EOF actions. */",
  "",
  "%% debug code goes here",
  "",
  "		switch ( yy_act )",
  "	{ /* beginning of action switch */",
  "%% actions go here",
  "",
  "	case YY_END_OF_BUFFER:",
  "		{",
  "		/* Amount of text matched not including the EOB char. */",
  "		int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;",
  "",
  "		/* Undo the effects of YY_DO_BEFORE_ACTION. */",
  "		*yy_cp = yy_hold_char;",
  "",
  "		if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )",
  "			{",
  "			/* We're scanning a new file or input source.  It's",
  "			 * possible that this happened because the user",
  "			 * just pointed yyin at a new source and called",
  "			 * yylex().  If so, then we have to assure",
  "			 * consistency between yy_current_buffer and our",
  "			 * globals.  Here is the right place to do so, because",
  "			 * this is the first action (other than possibly a",
  "			 * back-up) that will match for the new input source.",
  "			 */",
  "			yy_n_chars = yy_current_buffer->yy_n_chars;",
  "			yy_current_buffer->yy_input_file = yyin;",
  "			yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;",
  "			}",
  "",
  "		/* Note that here we test for yy_c_buf_p \"<=\" to the position",
  "		 * of the first EOB in the buffer, since yy_c_buf_p will",
  "		 * already have been incremented past the NUL character",
  "		 * (since all states make transitions on EOB to the",
  "		 * end-of-buffer state).  Contrast this with the test",
  "		 * in input().",
  "		 */",
  "		if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )",
  "			{ /* This was really a NUL. */",
  "			yy_state_type yy_next_state;",
  "",
  "			yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;",
  "",
  "			yy_current_state = yy_get_previous_state();",
  "",
  "			/* Okay, we're now positioned to make the NUL",
  "			 * transition.  We couldn't have",
  "			 * yy_get_previous_state() go ahead and do it",
  "			 * for us because it doesn't know how to deal",
  "			 * with the possibility of jamming (and we don't",
  "			 * want to build jamming into it because then it",
  "			 * will run more slowly).",
  "			 */",
  "",
  "			yy_next_state = yy_try_NUL_trans( yy_current_state );",
  "",
  "			yy_bp = yytext_ptr + YY_MORE_ADJ;",
  "",
  "			if ( yy_next_state )",
  "				{",
  "				/* Consume the NUL. */",
  "				yy_cp = ++yy_c_buf_p;",
  "				yy_current_state = yy_next_state;",
  "				goto yy_match;",
  "				}",
  "",
  "			else",
  "				{",
  "%% code to do back-up for compressed tables and set up yy_cp goes here",
  "				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 */",
  "",
  "%+",
  "yyFlexLexer::yyFlexLexer( istream* arg_yyin, ostream* arg_yyout )",
  "	{",
  "	yyin = arg_yyin;",
  "	yyout = arg_yyout;",
  "	yy_c_buf_p = 0;",
  "	yy_init = 1;",
  "	yy_start = 0;",
  "	yy_flex_debug = 0;",
  "	yylineno = 1;	// this will only get updated if %option yylineno",
  "",
  "	yy_did_buffer_switch_on_eof = 0;",
  "",
  "	yy_looking_for_trail_begin = 0;",
  "	yy_more_flag = 0;",
  "	yy_more_len = 0;",
  "",
  "	yy_start_stack_ptr = yy_start_stack_depth = 0;",
  "	yy_start_stack = 0;",
  "",
  "	yy_current_buffer = 0;",
  "",
  "#ifdef YY_USES_REJECT",
  "	yy_state_buf = new yy_state_type[YY_BUF_SIZE + 2];",
  "#else",
  "	yy_state_buf = 0;",
  "#endif",
  "	}",
  "",
  "yyFlexLexer::~yyFlexLexer()",
  "	{",
  "	delete yy_state_buf;",
  "	yy_delete_buffer( yy_current_buffer );",
  "	}",
  "",
  "void yyFlexLexer::switch_streams( istream* new_in, ostream* new_out )",
  "	{",
  "	if ( new_in )",
  "		{",
  "		yy_delete_buffer( yy_current_buffer );",
  "		yy_switch_to_buffer( yy_create_buffer( new_in, YY_BUF_SIZE ) );",
  "		}",
  "",
  "	if ( new_out )",
  "		yyout = new_out;",
  "	}",
  "",
  "#ifdef YY_INTERACTIVE",
  "int yyFlexLexer::LexerInput( char* buf, int /* max_size */ )",
  "#else",
  "int yyFlexLexer::LexerInput( char* buf, int max_size )",
  "#endif",
  "	{",
  "	if ( yyin->eof() || yyin->fail() )",
  "		return 0;",
  "",
  "#ifdef YY_INTERACTIVE",
  "	yyin->get( buf[0] );",
  "",
  "	if ( yyin->eof() )",
  "		return 0;",
  "",
  "	if ( yyin->bad() )",
  "		return -1;",
  "",
  "	return 1;",
  "",
  "#else",
  "	(void) yyin->read( buf, max_size );",
  "",
  "	if ( yyin->bad() )",
  "		return -1;",
  "	else",
  "		return yyin->gcount();",
  "#endif",
  "	}",
  "",
  "void yyFlexLexer::LexerOutput( const char* buf, int size )",
  "	{",
  "	(void) yyout->write( buf, size );",
  "	}",
  "%*",
  "",
  "/* 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()",
  "%+",
  "int yyFlexLexer::yy_get_next_buffer()",
  "%*",
  "	{",
  "	register char *dest = yy_current_buffer->yy_ch_buf;",
  "	register char *source = yytext_ptr;",
  "	register int number_to_move, i;",
  "	int ret_val;",
  "",
  "	if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )",
  "		YY_FATAL_ERROR(",
  "		\"fatal flex scanner internal error--end of buffer missed\" );",
  "",
  "	if ( yy_current_buffer->yy_fill_buffer == 0 )",
  "		{ /* Don't try to fill the buffer, so this is an EOF. */",
  "		if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )",
  "			{",
  "			/* We matched a 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 = (int) (yy_c_buf_p - yytext_ptr) - 1;",
  "",
  "	for ( i = 0; i < number_to_move; ++i )",
  "		*(dest++) = *(source++);",
  "",
  "	if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )",
  "		/* don't do the read, it's not guaranteed to return an EOF,",
  "		 * just force an EOF",
  "		 */",
  "		yy_n_chars = 0;",
  "",
  "	else",
  "		{",
  "		int num_to_read =",
  "			yy_current_buffer->yy_buf_size - number_to_move - 1;",
  "",
  "		while ( num_to_read <= 0 )",
  "			{ /* Not enough room in the buffer - grow it. */",
  "#ifdef YY_USES_REJECT",
  "			YY_FATAL_ERROR(",
  "\"input buffer overflow, can't enlarge buffer because scanner uses REJECT\" );",
  "#else",
  "",
  "			/* just a shorter name for the current buffer */",
  "			YY_BUFFER_STATE b = yy_current_buffer;",
  "",
  "			int yy_c_buf_p_offset =",
  "				(int) (yy_c_buf_p - b->yy_ch_buf);",
  "",
  "			if ( b->yy_is_our_buffer )",
  "				{",
  "				int new_size = b->yy_buf_size * 2;",
  "",
  "				if ( new_size <= 0 )",
  "					b->yy_buf_size += b->yy_buf_size / 8;",
  "				else",
  "					b->yy_buf_size *= 2;",
  "",
  "				b->yy_ch_buf = (char *)",
  "					/* Include room in for 2 EOB chars. */",
  "					yy_flex_realloc( (void *) b->yy_ch_buf,",
  "							 b->yy_buf_size + 2 );",
  "				}",
  "			else",
  "				/* Can't grow it, we don't own it. */",
  "				b->yy_ch_buf = 0;",
  "",
  "			if ( ! b->yy_ch_buf )",
  "				YY_FATAL_ERROR(",
  "				\"fatal error - scanner input buffer overflow\" );",
  "",
  "			yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];",
  "",
  "			num_to_read = yy_current_buffer->yy_buf_size -",
  "						number_to_move - 1;",
  "#endif",
  "			}",
  "",
  "		if ( num_to_read > YY_READ_BUF_SIZE )",
  "			num_to_read = YY_READ_BUF_SIZE;",
  "",
  "		/* Read in more data. */",
  "		YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),",
  "			yy_n_chars, num_to_read );",
  "		}",
  "",
  "	if ( yy_n_chars == 0 )",
  "		{",
  "		if ( number_to_move == YY_MORE_ADJ )",
  "			{",
  "			ret_val = EOB_ACT_END_OF_FILE;",
  "			yyrestart( yyin );",
  "			}",
  "",
  "		else",
  "			{",
  "			ret_val = EOB_ACT_LAST_MATCH;",
  "			yy_current_buffer->yy_buffer_status =",
  "				YY_BUFFER_EOF_PENDING;",
  "			}",
  "		}",
  "",
  "	else",
  "		ret_val = EOB_ACT_CONTINUE_SCAN;",
  "",
  "	yy_n_chars += number_to_move;",
  "	yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;",
  "	yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;",
  "",
  "	yytext_ptr = &yy_current_buffer->yy_ch_buf[0];",
  "",
  "	return ret_val;",
  "	}",
  "",
  "",
  "/* yy_get_previous_state - get the state just before the EOB char was reached */",
  "",
  "%-",
  "static yy_state_type yy_get_previous_state()",
  "%+",
  "yy_state_type yyFlexLexer::yy_get_previous_state()",
  "%*",
  "	{",
  "	register yy_state_type yy_current_state;",
  "	register char *yy_cp;",
  "",
  "%% code to get the start state into yy_current_state goes here",
  "",
  "	for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )",
  "		{",
  "%% code to find the next state goes here",
  "		}",
  "",
  "	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",
  "%+",
  "yy_state_type yyFlexLexer::yy_try_NUL_trans( yy_state_type yy_current_state )",
  "%*",
  "	{",
  "	register int yy_is_jam;",
  "%% code to find the next state, and perhaps do backing up, goes here",
  "",
  "	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",
  "%+",
  "void yyFlexLexer::yyunput( int c, register char* yy_bp )",
  "%*",
  "	{",
  "	register char *yy_cp = yy_c_buf_p;",
  "",
  "	/* undo effects of setting up yytext */",
  "	*yy_cp = yy_hold_char;",
  "",
  "	if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )",
  "		{ /* need to shift things up to make room */",
  "		/* +2 for EOB chars. */",
  "		register int number_to_move = yy_n_chars + 2;",
  "		register char *dest = &yy_current_buffer->yy_ch_buf[",
  "					yy_current_buffer->yy_buf_size + 2];",
  "		register char *source =",
  "				&yy_current_buffer->yy_ch_buf[number_to_move];",
  "",
  "		while ( source > yy_current_buffer->yy_ch_buf )",
  "			*--dest = *--source;",
  "",
  "		yy_cp += (int) (dest - source);",
  "		yy_bp += (int) (dest - source);",
  "		yy_n_chars = yy_current_buffer->yy_buf_size;",
  "",
  "		if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )",
  "			YY_FATAL_ERROR( \"flex scanner push-back overflow\" );",
  "		}",
  "",
  "	*--yy_cp = (char) c;",
  "",
  "%% update yylineno here",
  "",
  "	yytext_ptr = yy_bp;",
  "	yy_hold_char = *yy_cp;",
  "	yy_c_buf_p = yy_cp;",
  "	}",
  "",
  "",
  "%-",
  "#ifdef __cplusplus",
  "static int yyinput()",
  "#else",
  "static int input()",
  "#endif",
  "%+",
  "int yyFlexLexer::yyinput()",
  "%*",
  "	{",
  "	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;",
  "						}",
  "",
  "					if ( ! yy_did_buffer_switch_on_eof )",
  "						YY_NEW_FILE;",
  "#ifdef __cplusplus",
  "					return yyinput();",
  "#else",
  "					return input();",
  "#endif",
  "					}",
  "",
  "				case EOB_ACT_CONTINUE_SCAN:",
  "					yy_c_buf_p = yytext_ptr + 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 = *(unsigned char *) yy_c_buf_p;	/* cast for 8-bit char's */",
  "	*yy_c_buf_p = '\\0';	/* preserve yytext */",
  "	yy_hold_char = *++yy_c_buf_p;",
  "",
  "%% update BOL and yylineno",
  "",
  "	return c;",
  "	}",
  "",
  "",
  "%-",
  "#ifdef YY_USE_PROTOS",
  "void yyrestart( FILE *input_file )",
  "#else",
  "void yyrestart( input_file )",
  "FILE *input_file;",
  "#endif",
  "%+",
  "void yyFlexLexer::yyrestart( istream* input_file )",
  "%*",
  "	{",
  "	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",
  "%+",
  "void yyFlexLexer::yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )",
  "%*",
  "	{",
  "	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",
  "%+",
  "void yyFlexLexer::yy_load_buffer_state()",
  "%*",
  "	{",
  "	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 yyFlexLexer::yy_create_buffer( istream* file, int size )",
  "%*",
  "	{",
  "	YY_BUFFER_STATE b;",
  "",
  "	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );",
  "	if ( ! b )",
  "		YY_FATAL_ERROR( \"out of dynamic memory in yy_create_buffer()\" );",
  "",
  "	b->yy_buf_size = size;",
  "",
  "	/* yy_ch_buf has to be 2 characters longer than the size given because",
  "	 * we need to put in 2 end-of-buffer characters.",
  "	 */",
  "	b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );",
  "	if ( ! b->yy_ch_buf )",
  "		YY_FATAL_ERROR( \"out of dynamic memory in yy_create_buffer()\" );",
  "",
  "	b->yy_is_our_buffer = 1;",
  "",
  "	yy_init_buffer( b, file );",
  "",
  "	return b;",
  "	}",
  "",
  "",
  "%-",
  "#ifdef YY_USE_PROTOS",
  "void yy_delete_buffer( YY_BUFFER_STATE b )",
  "#else",
  "void yy_delete_buffer( b )",
  "YY_BUFFER_STATE b;",
  "#endif",
  "%+",
  "void yyFlexLexer::yy_delete_buffer( YY_BUFFER_STATE b )",
  "%*",
  "	{",
  "	if ( b == yy_current_buffer )",
  "		yy_current_buffer = (YY_BUFFER_STATE) 0;",
  "",
  "	if ( b->yy_is_our_buffer )",
  "		yy_flex_free( (void *) b->yy_ch_buf );",
  "",
  "	yy_flex_free( (void *) b );",
  "	}",
  "",
  "",
  "%-",
  "#ifndef YY_ALWAYS_INTERACTIVE",
  "#ifndef YY_NEVER_INTERACTIVE",
  "extern int isatty YY_PROTO(( int ));",
  "#endif",
  "#endif",
  "",
  "#ifdef YY_USE_PROTOS",
  "void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )",
  "#else",
  "void yy_init_buffer( b, file )",
  "YY_BUFFER_STATE b;",
  "FILE *file;",
  "#endif",
  "",
  "%+",
  "extern \"C\" int isatty YY_PROTO(( int ));",
  "void yyFlexLexer::yy_init_buffer( YY_BUFFER_STATE b, istream* file )",
  "%*",
  "",
  "	{",
  "	yy_flush_buffer( b );",
  "",
  "	b->yy_input_file = file;",
  "	b->yy_fill_buffer = 1;",
  "",
  "%-",
  "#if YY_ALWAYS_INTERACTIVE",
  "	b->yy_is_interactive = 1;",
  "#else",
  "#if YY_NEVER_INTERACTIVE",
  "	b->yy_is_interactive = 0;",
  "#else",
  "	b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;",
  "#endif",
  "#endif",
  "%+",
  "	b->yy_is_interactive = 0;",
  "%*",
  "	}",
  "",
  "",
  "%-",
  "#ifdef YY_USE_PROTOS",
  "void yy_flush_buffer( YY_BUFFER_STATE b )",
  "#else",
  "void yy_flush_buffer( b )",
  "YY_BUFFER_STATE b;",
  "#endif",
  "",
  "%+",
  "void yyFlexLexer::yy_flush_buffer( YY_BUFFER_STATE b )",
  "%*",
  "	{",
  "	b->yy_n_chars = 0;",
  "",
  "	/* We always need two end-of-buffer characters.  The first causes",
  "	 * a transition to the end-of-buffer state.  The second causes",
  "	 * a jam in that state.",
  "	 */",
  "	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;",
  "	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;",
  "",
  "	b->yy_buf_pos = &b->yy_ch_buf[0];",
  "",
  "	b->yy_at_bol = 1;",
  "	b->yy_buffer_status = YY_BUFFER_NEW;",
  "",
  "	if ( b == yy_current_buffer )",
  "		yy_load_buffer_state();",
  "	}",
  "%*",
  "",
  "",
  "#ifndef YY_NO_SCAN_BUFFER",
  "%-",
  "#ifdef YY_USE_PROTOS",
  "YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )",
  "#else",
  "YY_BUFFER_STATE yy_scan_buffer( base, size )",
  "char *base;",
  "yy_size_t size;",
  "#endif",
  "	{",
  "	YY_BUFFER_STATE b;",
  "",
  "	if ( size < 2 ||",
  "	     base[size-2] != YY_END_OF_BUFFER_CHAR ||",
  "	     base[size-1] != YY_END_OF_BUFFER_CHAR )",
  "		/* They forgot to leave room for the EOB's. */",
  "		return 0;",
  "",
  "	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );",
  "	if ( ! b )",
  "		YY_FATAL_ERROR( \"out of dynamic memory in yy_scan_buffer()\" );",
  "",
  "	b->yy_buf_size = size - 2;	/* \"- 2\" to take care of EOB's */",
  "	b->yy_buf_pos = b->yy_ch_buf = base;",
  "	b->yy_is_our_buffer = 0;",
  "	b->yy_input_file = 0;",
  "	b->yy_n_chars = b->yy_buf_size;",
  "	b->yy_is_interactive = 0;",
  "	b->yy_at_bol = 1;",
  "	b->yy_fill_buffer = 0;",
  "	b->yy_buffer_status = YY_BUFFER_NEW;",
  "",
  "	yy_switch_to_buffer( b );",
  "",
  "	return b;",
  "	}",
  "%*",
  "#endif",
  "",
  "",
  "#ifndef YY_NO_SCAN_STRING",
  "%-",
  "#ifdef YY_USE_PROTOS",
  "YY_BUFFER_STATE yy_scan_string( const char *str )",
  "#else",
  "YY_BUFFER_STATE yy_scan_string( str )",
  "const char *str;",
  "#endif",
  "	{",
  "	int len;",
  "	for ( len = 0; str[len]; ++len )",
  "		;",
  "",
  "	return yy_scan_bytes( str, len );",
  "	}",
  "%*",
  "#endif",
  "",
  "",
  "#ifndef YY_NO_SCAN_BYTES",
  "%-",
  "#ifdef YY_USE_PROTOS",
  "YY_BUFFER_STATE yy_scan_bytes( const char *bytes, int len )",
  "#else",
  "YY_BUFFER_STATE yy_scan_bytes( bytes, len )",
  "const char *bytes;",
  "int len;",
  "#endif",
  "	{",
  "	YY_BUFFER_STATE b;",
  "	char *buf;",
  "	yy_size_t n;",
  "	int i;",
  "",
  "	/* Get memory for full buffer, including space for trailing EOB's. */",
  "	n = len + 2;",
  "	buf = (char *) yy_flex_alloc( n );",
  "	if ( ! buf )",
  "		YY_FATAL_ERROR( \"out of dynamic memory in yy_scan_bytes()\" );",
  "",
  "	for ( i = 0; i < len; ++i )",
  "		buf[i] = bytes[i];",
  "",
  "	buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;",
  "",
  "	b = yy_scan_buffer( buf, n );",
  "	if ( ! b )",
  "		YY_FATAL_ERROR( \"bad buffer in yy_scan_bytes()\" );",
  "",
  "	/* It's okay to grow etc. this buffer, and we should throw it",
  "	 * away when we're done.",
  "	 */",
  "	b->yy_is_our_buffer = 1;",
  "",
  "	return b;",
  "	}",
  "%*",
  "#endif",
  "",
  "",
  "#ifndef YY_NO_PUSH_STATE",
  "%-",
  "#ifdef YY_USE_PROTOS",
  "static void yy_push_state( int new_state )",
  "#else",
  "static void yy_push_state( new_state )",
  "int new_state;",
  "#endif",
  "%+",
  "void yyFlexLexer::yy_push_state( int new_state )",
  "%*",
  "	{",
  "	if ( yy_start_stack_ptr >= yy_start_stack_depth )",
  "		{",
  "		yy_size_t new_size;",
  "",
  "		yy_start_stack_depth += YY_START_STACK_INCR;",
  "		new_size = yy_start_stack_depth * sizeof( int );",
  "",
  "		if ( ! yy_start_stack )",
  "			yy_start_stack = (int *) yy_flex_alloc( new_size );",
  "",
  "		else",
  "			yy_start_stack = (int *) yy_flex_realloc(",
  "					(void *) yy_start_stack, new_size );",
  "",
  "		if ( ! yy_start_stack )",
  "			YY_FATAL_ERROR(",
  "			\"out of memory expanding start-condition stack\" );",
  "		}",
  "",
  "	yy_start_stack[yy_start_stack_ptr++] = YY_START;",
  "",
  "	BEGIN(new_state);",
  "	}",
  "#endif",
  "",
  "",
  "#ifndef YY_NO_POP_STATE",
  "%-",
  "static void yy_pop_state()",
  "%+",
  "void yyFlexLexer::yy_pop_state()",
  "%*",
  "	{",
  "	if ( --yy_start_stack_ptr < 0 )",
  "		YY_FATAL_ERROR( \"start-condition stack underflow\" );",
  "",
  "	BEGIN(yy_start_stack[yy_start_stack_ptr]);",
  "	}",
  "#endif",
  "",
  "",
  "#ifndef YY_NO_TOP_STATE",
  "%-",
  "static int yy_top_state()",
  "%+",
  "int yyFlexLexer::yy_top_state()",
  "%*",
  "	{",
  "	return yy_start_stack[yy_start_stack_ptr - 1];",
  "	}",
  "#endif",
  "",
  "#ifndef YY_EXIT_FAILURE",
  "#define YY_EXIT_FAILURE 2",
  "#endif",
  "",
  "%-",
  "#ifdef YY_USE_PROTOS",
  "static void yy_fatal_error( const char msg[] )",
  "#else",
  "static void yy_fatal_error( msg )",
  "char msg[];",
  "#endif",
  "	{",
  "FILE *err;",
  "	(void) fprintf( err, \"%s\\n\", msg );",
  "	exit( YY_EXIT_FAILURE );",
  "	}",
  "",
  "%+",
  "",
  "void yyFlexLexer::LexerError( const char msg[] )",
  "	{",
  "	cerr << msg << '\\n';",
  "	exit( YY_EXIT_FAILURE );",
  "	}",
  "%*",
  "",
  "",
  "/* Redefine yyless() so it works in section 3 code. */",
  "",
  "#undef yyless",
  "#define yyless(n) \\",
  "	do \\",
  "		{ \\",
  "		/* Undo effects of setting up yytext. */ \\",
  "		yytext[yyleng] = yy_hold_char; \\",
  "		yy_c_buf_p = yytext + n - YY_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_strncpy( char *s1, const char *s2, int n )",
  "#else",
  "static void yy_flex_strncpy( s1, s2, n )",
  "char *s1;",
  "const char *s2;",
  "int n;",
  "#endif",
  "	{",
  "	register int i;",
  "	for ( i = 0; i < n; ++i )",
  "		s1[i] = s2[i];",
  "	}",
  "#endif",
  "",
  "",
  "#ifdef YY_USE_PROTOS",
  "static void *yy_flex_alloc( yy_size_t size )",
  "#else",
  "static void *yy_flex_alloc( size )",
  "yy_size_t size;",
  "#endif",
  "	{",
  "	return (void *) malloc( size );",
  "	}",
  "",
  "#ifdef YY_USE_PROTOS",
  "static void *yy_flex_realloc( void *ptr, yy_size_t size )",
  "#else",
  "static void *yy_flex_realloc( ptr, size )",
  "void *ptr;",
  "yy_size_t size;",
  "#endif",
  "	{",
  "	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 );",
  "	}",
  "",
  "#if YY_MAIN",
  "int main()",
  "	{",
  "	yylex();",
  "	return 0;",
  "	}",
  "#endif",
  0
};
int hashfunct (register char[], int);
struct hash_entry *ndtbl[101];
struct hash_entry *sctbl[101];
struct hash_entry *ccltab[101];
struct hash_entry *findsym();
int addsym( sym, str_def, int_def, table, table_size )
register char sym[];
char *str_def;
int int_def;
hash_table table;
int table_size;
 {
 int hash_val = hashfunct( sym, table_size );
 register struct hash_entry *sym_entry = table[hash_val];
 register struct hash_entry *new_entry;
 register struct hash_entry *successor;
 while ( sym_entry )
  {
  if ( ! strcmp( sym, sym_entry->name ) )
   {
   return -1;
   }
  sym_entry = sym_entry->next;
  }
 new_entry = (struct hash_entry *)
  flex_alloc( sizeof( struct hash_entry ) );
 if ( new_entry == ((void *)0) )
  flexfatal( ("symbol table memory allocation failed") );
 if ( (successor = table[hash_val]) != 0 )
  {
  new_entry->next = successor;
  successor->prev = new_entry;
  }
 else
  new_entry->next = ((void *)0);
 new_entry->prev = ((void *)0);
 new_entry->name = sym;
 new_entry->str_val = str_def;
 new_entry->int_val = int_def;
 table[hash_val] = new_entry;
 return 0;
 }
void cclinstal( ccltxt, cclnum )
unsigned char ccltxt[];
int cclnum;
 {
 unsigned char *copy_unsigned_string();
 (void) addsym( (char *) copy_unsigned_string( ccltxt ),
   (char *) 0, cclnum,
   ccltab, 101 );
 }
int ccllookup( ccltxt )
unsigned char ccltxt[];
 {
 return findsym( (char *) ccltxt, ccltab, 101 )->int_val;
 }
struct hash_entry *findsym( sym, table, table_size )
register char sym[];
hash_table table;
int table_size;
 {
 static struct hash_entry empty_entry =
  {
  (struct hash_entry *) 0, (struct hash_entry *) 0,
  (char *) 0, (char *) 0, 0,
  } ;
 register struct hash_entry *sym_entry =
  table[hashfunct( sym, table_size )];
 while ( sym_entry )
  {
  if ( ! strcmp( sym, sym_entry->name ) )
   return sym_entry;
  sym_entry = sym_entry->next;
  }
 return &empty_entry;
 }
int hashfunct( str, hash_size )
register char str[];
int hash_size;
 {
 register int hashval;
 register int locstr;
 hashval = 0;
 locstr = 0;
 while ( str[locstr] )
  {
  hashval = (hashval << 1) + (unsigned char) str[locstr++];
  hashval %= hash_size;
  }
 return hashval;
 }
void ndinstal( name, definition )
char name[];
unsigned char definition[];
 {
 char *copy_string();
 unsigned char *copy_unsigned_string();
 if ( addsym( copy_string( name ),
   (char *) copy_unsigned_string( definition ), 0,
   ndtbl, 101 ) )
  synerr( ("name defined twice") );
 }
unsigned char *ndlookup( nd )
char nd[];
 {
 return (unsigned char *) findsym( nd, ndtbl, 101 )->str_val;
 }
void scextend()
 {
 current_max_scs += 40;
 ++num_reallocs;
 scset = (int *) reallocate_array( (void *) scset, current_max_scs, sizeof( int ) );
 scbol = (int *) reallocate_array( (void *) scbol, current_max_scs, sizeof( int ) );
 scxclu = (int *) reallocate_array( (void *) scxclu, current_max_scs, sizeof( int ) );
 sceof = (int *) reallocate_array( (void *) sceof, current_max_scs, sizeof( int ) );
 scname = (char **) reallocate_array( (void *) scname, current_max_scs, sizeof( char * ) );
 }
void scinstal( str, xcluflg )
char str[];
int xcluflg;
 {
 char *copy_string();
 action_define( str, lastsc );
 if ( ++lastsc >= current_max_scs )
  scextend();
 scname[lastsc] = copy_string( str );
 if ( addsym( scname[lastsc], (char *) 0, lastsc,
   sctbl, 101 ) )
  format_pinpoint_message(
    ("start condition %s declared twice"),
     str );
 scset[lastsc] = mkstate( (256 + 1) );
 scbol[lastsc] = mkstate( (256 + 1) );
 scxclu[lastsc] = xcluflg;
 sceof[lastsc] = 0;
 }
int sclookup( str )
char str[];
 {
 return findsym( str, sctbl, 101 )->int_val;
 }
void mkentry (register int*, int, int, int, int);
void mkprot (int[], int, int);
void mktemplate (int[], int, int);
void mv2front (int);
int tbldiff (int[], int, int[]);
void bldtbl( state, statenum, totaltrans, comstate, comfreq )
int state[], statenum, totaltrans, comstate, comfreq;
 {
 int extptr, extrct[2][256 + 1];
 int mindiff, minprot, i, d;
 extptr = 0;
 if ( (totaltrans * 100) < (numecs * 15) )
  mkentry( state, numecs, statenum, -32766, totaltrans );
 else
  {
  int checkcom =
   comfreq * 100 > totaltrans * 50;
  minprot = firstprot;
  mindiff = totaltrans;
  if ( checkcom )
   {
   for ( i = firstprot; i != 0; i = protnext[i] )
    if ( protcomst[i] == comstate )
     {
     minprot = i;
     mindiff = tbldiff( state, minprot,
       extrct[extptr] );
     break;
     }
   }
  else
   {
   comstate = 0;
   if ( firstprot != 0 )
    {
    minprot = firstprot;
    mindiff = tbldiff( state, minprot,
      extrct[extptr] );
    }
   }
  if ( mindiff * 100 > totaltrans * 10 )
   {
   for ( i = minprot; i != 0; i = protnext[i] )
    {
    d = tbldiff( state, i, extrct[1 - extptr] );
    if ( d < mindiff )
     {
     extptr = 1 - extptr;
     mindiff = d;
     minprot = i;
     }
    }
   }
  if ( mindiff * 100 > totaltrans * 50 )
   {
   if ( comfreq * 100 >=
        totaltrans * 60 )
    mktemplate( state, statenum, comstate );
   else
    {
    mkprot( state, statenum, comstate );
    mkentry( state, numecs, statenum,
     -32766, totaltrans );
    }
   }
  else
   {
   mkentry( extrct[extptr], numecs, statenum,
    prottbl[minprot], mindiff );
   if ( mindiff * 100 >=
        totaltrans * 20 )
    mkprot( state, statenum, comstate );
   mv2front( minprot );
   }
  }
 }
void cmptmps()
 {
 int tmpstorage[256 + 1];
 register int *tmp = tmpstorage, i, j;
 int totaltrans, trans;
 peakpairs = numtemps * numecs + tblend;
 if ( usemecs )
  {
  nummecs = cre8ecs( tecfwd, tecbck, numecs );
  }
 else
  nummecs = numecs;
 while ( lastdfa + numtemps + 1 >= current_max_dfas )
  increase_max_dfas();
 for ( i = 1; i <= numtemps; ++i )
  {
  totaltrans = 0;
  for ( j = 1; j <= numecs; ++j )
   {
   trans = tnxt[numecs * i + j];
   if ( usemecs )
    {
    if ( tecbck[j] > 0 )
     {
     tmp[tecbck[j]] = trans;
     if ( trans > 0 )
      ++totaltrans;
     }
    }
   else
    {
    tmp[j] = trans;
    if ( trans > 0 )
     ++totaltrans;
    }
   }
  mkentry( tmp, nummecs, lastdfa + i + 1, -32766, totaltrans );
  }
 }
void expand_nxt_chk()
 {
 register int old_max = current_max_xpairs;
 current_max_xpairs += 2000;
 ++num_reallocs;
 nxt = (int *) reallocate_array( (void *) nxt, current_max_xpairs, sizeof( int ) );
 chk = (int *) reallocate_array( (void *) chk, current_max_xpairs, sizeof( int ) );
 zero_out( (char *) (chk + old_max),
  (size_t) (2000 * sizeof( int )) );
 }
int find_table_space( state, numtrans )
int *state, numtrans;
 {
 register int i;
 register int *state_ptr, *chk_ptr;
 register int *ptr_to_last_entry_in_state;
 if ( numtrans > 4 )
  {
  if ( tblend < 2 )
   return 1;
  i = tblend - numecs;
  }
 else
  i = firstfree;
 while ( 1 )
  {
  while ( i + numecs >= current_max_xpairs )
   expand_nxt_chk();
  while ( 1 )
   {
   if ( chk[i - 1] == 0 )
    {
    if ( chk[i] == 0 )
     break;
    else
     i += 2;
    }
   else
    ++i;
   while ( i + numecs >= current_max_xpairs )
    expand_nxt_chk();
   }
  if ( numtrans <= 4 )
   firstfree = i + 1;
  state_ptr = &state[1];
  ptr_to_last_entry_in_state = &chk[i + numecs + 1];
  for ( chk_ptr = &chk[i + 1];
        chk_ptr != ptr_to_last_entry_in_state; ++chk_ptr )
   if ( *(state_ptr++) != 0 && *chk_ptr != 0 )
    break;
  if ( chk_ptr == ptr_to_last_entry_in_state )
   return i;
  else
  ++i;
  }
 }
void inittbl()
 {
 register int i;
 zero_out( (char *) chk, (size_t) (current_max_xpairs * sizeof( int )) );
 tblend = 0;
 firstfree = tblend + 1;
 numtemps = 0;
 if ( usemecs )
  {
  tecbck[1] = 0;
  for ( i = 2; i <= numecs; ++i )
   {
   tecbck[i] = i - 1;
   tecfwd[i - 1] = i;
   }
  tecfwd[numecs] = 0;
  }
 }
void mkdeftbl()
 {
 int i;
 jamstate = lastdfa + 1;
 ++tblend;
 while ( tblend + numecs >= current_max_xpairs )
  expand_nxt_chk();
 nxt[tblend] = end_of_buffer_state;
 chk[tblend] = jamstate;
 for ( i = 1; i <= numecs; ++i )
  {
  nxt[tblend + i] = 0;
  chk[tblend + i] = jamstate;
  }
 jambase = tblend;
 base[jamstate] = jambase;
 def[jamstate] = 0;
 tblend += numecs;
 ++numtemps;
 }
void mkentry( state, numchars, statenum, deflink, totaltrans )
register int *state;
int numchars, statenum, deflink, totaltrans;
 {
 register int minec, maxec, i, baseaddr;
 int tblbase, tbllast;
 if ( totaltrans == 0 )
  {
  if ( deflink == -32766 )
   base[statenum] = -32766;
  else
   base[statenum] = 0;
  def[statenum] = deflink;
  return;
  }
 for ( minec = 1; minec <= numchars; ++minec )
  {
  if ( state[minec] != -1 )
   if ( state[minec] != 0 || deflink != -32766 )
    break;
  }
 if ( totaltrans == 1 )
  {
  stack1( statenum, minec, state[minec], deflink );
  return;
  }
 for ( maxec = numchars; maxec > 0; --maxec )
  {
  if ( state[maxec] != -1 )
   if ( state[maxec] != 0 || deflink != -32766 )
    break;
  }
 if ( totaltrans * 100 <= numchars * 15 )
  {
  baseaddr = firstfree;
  while ( baseaddr < minec )
   {
   for ( ++baseaddr; chk[baseaddr] != 0; ++baseaddr )
    ;
   }
  while ( baseaddr + maxec - minec + 1 >= current_max_xpairs )
   expand_nxt_chk();
  for ( i = minec; i <= maxec; ++i )
   if ( state[i] != -1 &&
        (state[i] != 0 || deflink != -32766) &&
        chk[baseaddr + i - minec] != 0 )
    {
    for ( ++baseaddr;
          baseaddr < current_max_xpairs &&
          chk[baseaddr] != 0; ++baseaddr )
     ;
    while ( baseaddr + maxec - minec + 1 >=
     current_max_xpairs )
     expand_nxt_chk();
    i = minec - 1;
    }
  }
 else
  {
  baseaddr = ((tblend + 1) > (minec) ? (tblend + 1) : (minec));
  }
 tblbase = baseaddr - minec;
 tbllast = tblbase + maxec;
 while ( tbllast + 1 >= current_max_xpairs )
  expand_nxt_chk();
 base[statenum] = tblbase;
 def[statenum] = deflink;
 for ( i = minec; i <= maxec; ++i )
  if ( state[i] != -1 )
   if ( state[i] != 0 || deflink != -32766 )
    {
    nxt[tblbase + i] = state[i];
    chk[tblbase + i] = statenum;
    }
 if ( baseaddr == firstfree )
  for ( ++firstfree; chk[firstfree] != 0; ++firstfree )
   ;
 tblend = ((tblend) > (tbllast) ? (tblend) : (tbllast));
 }
void mk1tbl( state, sym, onenxt, onedef )
int state, sym, onenxt, onedef;
 {
 if ( firstfree < sym )
  firstfree = sym;
 while ( chk[firstfree] != 0 )
  if ( ++firstfree >= current_max_xpairs )
   expand_nxt_chk();
 base[state] = firstfree - sym;
 def[state] = onedef;
 chk[firstfree] = state;
 nxt[firstfree] = onenxt;
 if ( firstfree > tblend )
  {
  tblend = firstfree++;
  if ( firstfree >= current_max_xpairs )
   expand_nxt_chk();
  }
 }
void mkprot( state, statenum, comstate )
int state[], statenum, comstate;
 {
 int i, slot, tblbase;
 if ( ++numprots >= 50 || numecs * numprots >= 2000 )
  {
  slot = lastprot;
  lastprot = protprev[lastprot];
  protnext[lastprot] = 0;
  }
 else
  slot = numprots;
 protnext[slot] = firstprot;
 if ( firstprot != 0 )
  protprev[firstprot] = slot;
 firstprot = slot;
 prottbl[slot] = statenum;
 protcomst[slot] = comstate;
 tblbase = numecs * (slot - 1);
 for ( i = 1; i <= numecs; ++i )
  protsave[tblbase + i] = state[i];
 }
void mktemplate( state, statenum, comstate )
int state[], statenum, comstate;
 {
 int i, numdiff, tmpbase, tmp[256 + 1];
 unsigned char transset[256 + 1];
 int tsptr;
 ++numtemps;
 tsptr = 0;
 tmpbase = numtemps * numecs;
 if ( tmpbase + numecs >= current_max_template_xpairs )
  {
  current_max_template_xpairs += 2500;
  ++num_reallocs;
  tnxt = (int *) reallocate_array( (void *) tnxt, current_max_template_xpairs, sizeof( int ) );
  }
 for ( i = 1; i <= numecs; ++i )
  if ( state[i] == 0 )
   tnxt[tmpbase + i] = 0;
  else
   {
   transset[tsptr++] = i;
   tnxt[tmpbase + i] = comstate;
   }
 if ( usemecs )
  mkeccl( transset, tsptr, tecfwd, tecbck, numecs, 0 );
 mkprot( tnxt + tmpbase, -numtemps, comstate );
 numdiff = tbldiff( state, firstprot, tmp );
 mkentry( tmp, numecs, statenum, -numtemps, numdiff );
 }
void mv2front( qelm )
int qelm;
 {
 if ( firstprot != qelm )
  {
  if ( qelm == lastprot )
   lastprot = protprev[lastprot];
  protnext[protprev[qelm]] = protnext[qelm];
  if ( protnext[qelm] != 0 )
   protprev[protnext[qelm]] = protprev[qelm];
  protprev[qelm] = 0;
  protnext[qelm] = firstprot;
  protprev[firstprot] = qelm;
  firstprot = qelm;
  }
 }
void place_state( state, statenum, transnum )
int *state, statenum, transnum;
 {
 register int i;
 register int *state_ptr;
 int position = find_table_space( state, transnum );
 base[statenum] = position;
 chk[position - 1] = 1;
 chk[position] = 1;
 state_ptr = &state[1];
 for ( i = 1; i <= numecs; ++i, ++state_ptr )
  if ( *state_ptr != 0 )
   {
   chk[position + i] = i;
   nxt[position + i] = *state_ptr;
   }
 if ( position + numecs > tblend )
  tblend = position + numecs;
 }
void stack1( statenum, sym, nextstate, deflink )
int statenum, sym, nextstate, deflink;
 {
 if ( onesp >= 500 - 1 )
  mk1tbl( statenum, sym, nextstate, deflink );
 else
  {
  ++onesp;
  onestate[onesp] = statenum;
  onesym[onesp] = sym;
  onenext[onesp] = nextstate;
  onedef[onesp] = deflink;
  }
 }
int tbldiff( state, pr, ext )
int state[], pr, ext[];
 {
 register int i, *sp = state, *ep = ext, *protp;
 register int numdiff = 0;
 protp = &protsave[numecs * (pr - 1)];
 for ( i = numecs; i > 0; --i )
  {
  if ( *++protp == *++sp )
   *++ep = -1;
  else
   {
   *++ep = *sp;
   ++numdiff;
   }
  }
 return numdiff;
 }
int yylex()
 {
 int toktype;
 static int beglin = 0;
 extern char *yytext;
 if ( eofseen )
  toktype = (-1);
 else
  toktype = flexscan();
 if ( toktype == (-1) || toktype == 0 )
  {
  eofseen = 1;
  if ( sectnum == 1 )
   {
   synerr( ("premature EOF") );
   sectnum = 2;
   toktype = 259;
   }
  else
   toktype = 0;
  }
 if ( trace )
  {
  if ( beglin )
   {
   fprintf( err, "%d\t", num_rules + 1 );
   beglin = 0;
   }
  switch ( toktype )
   {
   case '<':
   case '>':
   case '^':
   case '$':
   case '"':
   case '[':
   case ']':
   case '{':
   case '}':
   case '|':
   case '(':
   case ')':
   case '-':
   case '/':
   case '\\':
   case '?':
   case '.':
   case '*':
   case '+':
   case ',':
    (void) _IO_putc (toktype, err);
    break;
   case '\n':
    (void) _IO_putc ('\n', err);
    if ( sectnum == 2 )
    beglin = 1;
    break;
   case 260:
    fputs( "%s", err );
    break;
   case 261:
    fputs( "%x", err );
    break;
   case 259:
    fputs( "%%\n", err );
    if ( sectnum == 2 )
     beglin = 1;
    break;
   case 262:
    fprintf( err, "'%s'", nmstr );
    break;
   case 257:
    switch ( yylval )
     {
     case '<':
     case '>':
     case '^':
     case '$':
     case '"':
     case '[':
     case ']':
     case '{':
     case '}':
     case '|':
     case '(':
     case ')':
     case '-':
     case '/':
     case '\\':
     case '?':
     case '.':
     case '*':
     case '+':
     case ',':
      fprintf( err, "\\%c",
       yylval );
      break;
     default:
      if ( ! (((yylval) & ~0x7f) == 0) ||
           ! ((*__ctype_b_loc ())[(int) ((yylval))] & (unsigned short int) _ISprint) )
       fprintf( err,
        "\\%.3o",
       (unsigned int) yylval );
      else
       (void) _IO_putc (yylval, err);
     break;
     }
    break;
   case 258:
    fprintf( err, "%d", yylval );
    break;
   case 263:
    fprintf( err, "[%d]", yylval );
    break;
   case 264:
    fprintf( err, "<<EOF>>" );
    break;
   case 265:
    fprintf( err, "%s ", yytext );
    break;
   case 266:
   case 267:
   case 269:
   case 270:
   case 271:
   case 272:
   case 273:
   case 274:
   case 275:
   case 276:
   case 277:
   case 278:
   case 279:
   case 280:
    fprintf( err, "%s", yytext );
    break;
   case 0:
    fprintf( err, ("End Marker\n") );
    break;
   default:
    fprintf( err,
    ("*Something Weird* - tok: %d val: %d\n"),
     toktype, yylval );
    break;
   }
  }
 return toktype;
 }
int pat, scnum, eps, headcnt, trailcnt, anyccl, lastchar, i, rulelen;
int trlcontxt, xcluflg, currccl, cclsorted, varlength, variable_trail_rule;
int *scon_stk;
int scon_stk_ptr;
static int madeany = 0;
int previous_continued_action;
static const char yytranslate[] = { 0,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 28,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 42, 2, 36, 2, 2, 2, 43,
    44, 34, 39, 35, 47, 41, 38, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 32,
    27, 33, 40, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
    45, 2, 46, 31, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 29, 37, 30, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 1, 3, 4, 5, 6,
     7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
    17, 18, 19, 20, 21, 22, 23, 24, 25, 26
};
static const short yyr1[] = { 0,
    48, 49, 50, 50, 50, 50, 51, 52, 52, 53,
    53, 53, 54, 55, 55, 56, 56, 56, 57, 57,
    57, 58, 59, 59, 59, 59, 60, 61, 61, 61,
    62, 62, 62, 63, 64, 64, 64, 64, 65, 65,
    66, 67, 67, 68, 68, 68, 68, 68, 68, 68,
    68, 68, 68, 68, 68, 69, 69, 70, 70, 70,
    70, 71, 71, 71, 71, 71, 71, 71, 71, 71,
    71, 71, 71, 72, 72
};
static const short yyr2[] = { 0,
     5, 0, 3, 2, 0, 1, 1, 1, 1, 2,
     1, 1, 2, 2, 0, 3, 3, 3, 5, 5,
     0, 0, 2, 1, 1, 1, 0, 4, 3, 0,
     3, 1, 1, 1, 2, 3, 2, 1, 3, 1,
     2, 2, 1, 2, 2, 2, 6, 5, 4, 1,
     1, 1, 3, 3, 1, 3, 4, 4, 2, 2,
     0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     1, 1, 1, 2, 0
};
static const short yydefact[] = { 2,
     0, 6, 0, 7, 8, 9, 15, 21, 0, 4,
    13, 30, 12, 11, 3, 0, 0, 0, 14, 27,
     1, 22, 10, 0, 0, 0, 0, 0, 21, 0,
    16, 17, 18, 29, 33, 34, 0, 32, 30, 26,
    55, 52, 25, 0, 50, 75, 0, 61, 0, 24,
    38, 0, 40, 43, 51, 28, 0, 20, 23, 0,
     0, 61, 0, 19, 37, 0, 41, 35, 42, 0,
    44, 45, 46, 31, 74, 53, 54, 0, 59, 62,
    63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
    73, 56, 60, 39, 36, 0, 57, 0, 49, 0,
    58, 0, 48, 47, 0, 0, 0
};
static const short yydefgoto[] = { 105,
     1, 3, 8, 9, 15, 10, 11, 19, 12, 21,
    49, 28, 22, 37, 38, 50, 51, 52, 53, 54,
    55, 63, 93, 60
};
static const short yypact[] = {-32768,
    78,-32768, 81,-32768,-32768,-32768,-32768,-32768, 6,-32768,
    -2, 5,-32768,-32768, -7, -14, 1, 9,-32768, 28,
-32768, 14,-32768, 55, 65, 74, 57, 30,-32768, -1,
-32768,-32768,-32768,-32768,-32768,-32768, 58,-32768, 44,-32768,
-32768,-32768,-32768, 24,-32768,-32768, 24, 63, 69,-32768,
    23, 24, 24, 41,-32768,-32768, 90,-32768,-32768, 26,
    27,-32768, 0,-32768,-32768, 24,-32768, 59, 41, 95,
-32768,-32768,-32768,-32768,-32768,-32768,-32768, 32, 53,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768, 24,-32768, 4,-32768, 98,-32768, 2,
-32768, 72,-32768,-32768, 103, 104,-32768
};
static const short yypgoto[] = {-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 76, 84,
-32768,-32768,-32768,-32768, 50, 64, 25,-32768, 43, -49,
-32768, 48,-32768,-32768
};
static const short yytable[] = { 40,
    23, 41, 79, 69, -22, 102, 13, 42, 43, 16,
    17, 18, 24, 14, 80, 81, 82, 83, 84, 85,
    86, 87, 88, 89, 90, 91, 41, 25, 75, 44,
    35, 103, 42, 99, 79, 26, 20, 36, 100, 45,
    46, 47, 29, 48, 69, 92, 80, 81, 82, 83,
    84, 85, 86, 87, 88, 89, 90, 91, 65, 66,
    67, 27, 31, 66, 45, 46, 47, 76, 48, 70,
    77, 61, 32, 58, 71, 20, 68, 97, 2, 72,
    73, 33, -5, -5, -5, 4, 5, 6, -5, 34,
    56, 7, 57, 62, 95, 66, 64, 36, 96, 98,
   101, 104, 106, 107, 39, 30, 74, 59, 94, 78
};
static const short yycheck[] = { 1,
     8, 3, 3, 53, 0, 4, 1, 9, 10, 12,
    13, 14, 27, 8, 15, 16, 17, 18, 19, 20,
    21, 22, 23, 24, 25, 26, 3, 27, 3, 31,
     1, 30, 9, 30, 3, 27, 32, 8, 35, 41,
    42, 43, 29, 45, 94, 46, 15, 16, 17, 18,
    19, 20, 21, 22, 23, 24, 25, 26, 36, 37,
    38, 34, 8, 37, 41, 42, 43, 42, 45, 29,
    44, 47, 8, 30, 34, 32, 52, 46, 1, 39,
    40, 8, 5, 6, 7, 5, 6, 7, 11, 33,
    33, 11, 35, 31, 36, 37, 28, 8, 4, 47,
     3, 30, 0, 0, 29, 22, 57, 44, 66, 62
};
int yychar;
int yylval;
int yynerrs;
int yyparse (void);
int
yyparse()
    
{
  register int yystate;
  register int yyn;
  register short *yyssp;
  register int *yyvsp;
  int yyerrstatus;
  int yychar1 = 0;
  short yyssa[200];
  int yyvsa[200];
  short *yyss = yyssa;
  int *yyvs = yyvsa;
  int yystacksize = 200;
  int yyfree_stacks = 0;
  int yyval;
  int yylen;
  yystate = 0;
  yyerrstatus = 0;
  yynerrs = 0;
  yychar = -2;
  yyssp = yyss - 1;
  yyvsp = yyvs;
yynewstate:
  *++yyssp = yystate;
  if (yyssp >= yyss + yystacksize - 1)
    {
      int *yyvs1 = yyvs;
      short *yyss1 = yyss;
      int size = yyssp - yyss + 1;
      if (yystacksize >= 10000)
 {
   yyerror("parser stack overflow");
   if (yyfree_stacks)
     {
       free (yyss);
       free (yyvs);
     }
   return 2;
 }
      yystacksize *= 2;
      if (yystacksize > 10000)
 yystacksize = 10000;
      yyss = (short *) __builtin_alloca (yystacksize * sizeof (*yyssp));
      __builtin_memcpy((char *)yyss,(char *)yyss1,size * (unsigned int) sizeof (*yyssp));
      yyvs = (int *) __builtin_alloca (yystacksize * sizeof (*yyvsp));
      __builtin_memcpy((char *)yyvs,(char *)yyvs1,size * (unsigned int) sizeof (*yyvsp));
      yyssp = yyss + size - 1;
      yyvsp = yyvs + size - 1;
      if (yyssp >= yyss + yystacksize - 1)
 goto yyabortlab;
    }
  goto yybackup;
 yybackup:
  yyn = yypact[yystate];
  if (yyn == -32768)
    goto yydefault;
  if (yychar == -2)
    {
      yychar = yylex();
    }
  if (yychar <= 0)
    {
      yychar1 = 0;
      yychar = 0;
    }
  else
    {
      yychar1 = ((unsigned)(yychar) <= 280 ? yytranslate[yychar] : 73);
    }
  yyn += yychar1;
  if (yyn < 0 || yyn > 110 || yycheck[yyn] != yychar1)
    goto yydefault;
  yyn = yytable[yyn];
  if (yyn < 0)
    {
      if (yyn == -32768)
 goto yyerrlab;
      yyn = -yyn;
      goto yyreduce;
    }
  else if (yyn == 0)
    goto yyerrlab;
  if (yyn == 107)
    goto yyacceptlab;
  if (yychar != 0)
    yychar = -2;
  *++yyvsp = yylval;
  if (yyerrstatus) yyerrstatus--;
  yystate = yyn;
  goto yynewstate;
yydefault:
  yyn = yydefact[yystate];
  if (yyn == 0)
    goto yyerrlab;
yyreduce:
  yylen = yyr2[yyn];
  if (yylen > 0)
    yyval = yyvsp[1-yylen];
  switch (yyn) {
case 1:
{
   int def_rule;
   pat = cclinit();
   cclnegate( pat );
   def_rule = mkstate( -pat );
   default_rule = num_rules;
   finish_rule( def_rule, 0, 0, 0 );
   for ( i = 1; i <= lastsc; ++i )
    scset[i] = mkbranch( scset[i], def_rule );
   if ( spprdflt )
    add_action(
    "YY_FATAL_ERROR( \"flex scanner jammed\" )" );
   else
    add_action( "ECHO" );
   add_action( ";\n\tYY_BREAK\n" );
   ;
    break;}
case 2:
{
   scinstal( "INITIAL", 0 );
   ;
    break;}
case 6:
{ synerr( "unknown error processing section 1" ); ;
    break;}
case 7:
{
   check_options();
   scon_stk = (int *) allocate_array( lastsc + 1, sizeof( int ) );
   scon_stk_ptr = 0;
   ;
    break;}
case 8:
{ xcluflg = 0; ;
    break;}
case 9:
{ xcluflg = 1; ;
    break;}
case 10:
{ scinstal( nmstr, xcluflg ); ;
    break;}
case 11:
{ scinstal( nmstr, xcluflg ); ;
    break;}
case 12:
{ synerr( "bad start condition list" ); ;
    break;}
case 16:
{
   outfilename = copy_string( nmstr );
   did_outfilename = 1;
   ;
    break;}
case 17:
{ prefix = copy_string( nmstr ); ;
    break;}
case 18:
{ yyclass = copy_string( nmstr ); ;
    break;}
case 19:
{ scon_stk_ptr = yyvsp[-3]; ;
    break;}
case 20:
{ scon_stk_ptr = yyvsp[-3]; ;
    break;}
case 22:
{
   trlcontxt = variable_trail_rule = varlength = 0;
   trailcnt = headcnt = rulelen = 0;
   current_state_type = 0x1;
   previous_continued_action = continued_action;
   in_rule = 1;
   new_rule();
   ;
    break;}
case 23:
{
   pat = yyvsp[0];
   finish_rule( pat, variable_trail_rule,
    headcnt, trailcnt );
   if ( scon_stk_ptr > 0 )
    {
    for ( i = 1; i <= scon_stk_ptr; ++i )
     scbol[scon_stk[i]] =
      mkbranch( scbol[scon_stk[i]],
        pat );
    }
   else
    {
    for ( i = 1; i <= lastsc; ++i )
     if ( ! scxclu[i] )
      scbol[i] = mkbranch( scbol[i],
         pat );
    }
   if ( ! bol_needed )
    {
    bol_needed = 1;
    if ( performance_report > 1 )
     pinpoint_message(
   "'^' operator results in sub-optimal performance" );
    }
   ;
    break;}
case 24:
{
   pat = yyvsp[0];
   finish_rule( pat, variable_trail_rule,
    headcnt, trailcnt );
   if ( scon_stk_ptr > 0 )
    {
    for ( i = 1; i <= scon_stk_ptr; ++i )
     scset[scon_stk[i]] =
      mkbranch( scset[scon_stk[i]],
        pat );
    }
   else
    {
    for ( i = 1; i <= lastsc; ++i )
     if ( ! scxclu[i] )
      scset[i] =
       mkbranch( scset[i],
        pat );
    }
   ;
    break;}
case 25:
{
   if ( scon_stk_ptr > 0 )
    build_eof_action();
   else
    {
    for ( i = 1; i <= lastsc; ++i )
     if ( ! sceof[i] )
      scon_stk[++scon_stk_ptr] = i;
    if ( scon_stk_ptr == 0 )
     warn(
   "all start conditions already have <<EOF>> rules" );
    else
     build_eof_action();
    }
   ;
    break;}
case 26:
{ synerr( "unrecognized rule" ); ;
    break;}
case 27:
{ yyval = scon_stk_ptr; ;
    break;}
case 28:
{ yyval = yyvsp[-2]; ;
    break;}
case 29:
{
   yyval = scon_stk_ptr;
   for ( i = 1; i <= lastsc; ++i )
    {
    int j;
    for ( j = 1; j <= scon_stk_ptr; ++j )
     if ( scon_stk[j] == i )
      break;
    if ( j > scon_stk_ptr )
     scon_stk[++scon_stk_ptr] = i;
    }
   ;
    break;}
case 30:
{ yyval = scon_stk_ptr; ;
    break;}
case 33:
{ synerr( "bad start condition list" ); ;
    break;}
case 34:
{
   if ( (scnum = sclookup( nmstr )) == 0 )
    format_pinpoint_message(
     "undeclared start condition %s",
     nmstr );
   else
    {
    for ( i = 1; i <= scon_stk_ptr; ++i )
     if ( scon_stk[i] == scnum )
      {
      format_warn(
       "<%s> specified twice",
       scname[scnum] );
      break;
      }
    if ( i > scon_stk_ptr )
     scon_stk[++scon_stk_ptr] = scnum;
    }
   ;
    break;}
case 35:
{
   if ( transchar[lastst[yyvsp[0]]] != (256 + 1) )
    yyvsp[0] = link_machines( yyvsp[0],
      mkstate( (256 + 1) ) );
   mark_beginning_as_normal( yyvsp[0] );
   current_state_type = 0x1;
   if ( previous_continued_action )
    {
    if ( ! varlength || headcnt != 0 )
     warn(
  "trailing context made variable due to preceding '|' action" );
    varlength = 1;
    headcnt = 0;
    }
   if ( lex_compat || (varlength && headcnt == 0) )
    {
    add_accept( yyvsp[-1],
     num_rules | 0x4000 );
    variable_trail_rule = 1;
    }
   else
    trailcnt = rulelen;
   yyval = link_machines( yyvsp[-1], yyvsp[0] );
   ;
    break;}
case 36:
{ synerr( "trailing context used twice" ); ;
    break;}
case 37:
{
   headcnt = 0;
   trailcnt = 1;
   rulelen = 1;
   varlength = 0;
   current_state_type = 0x2;
   if ( trlcontxt )
    {
    synerr( "trailing context used twice" );
    yyval = mkstate( (256 + 1) );
    }
   else if ( previous_continued_action )
    {
    warn(
  "trailing context made variable due to preceding '|' action" );
    varlength = 1;
    }
   if ( lex_compat || varlength )
    {
    add_accept( yyvsp[-1],
     num_rules | 0x4000 );
    variable_trail_rule = 1;
    }
   trlcontxt = 1;
   eps = mkstate( (256 + 1) );
   yyval = link_machines( yyvsp[-1],
    link_machines( eps, mkstate( '\n' ) ) );
   ;
    break;}
case 38:
{
   yyval = yyvsp[0];
   if ( trlcontxt )
    {
    if ( lex_compat || (varlength && headcnt == 0) )
     variable_trail_rule = 1;
    else
     trailcnt = rulelen;
    }
   ;
    break;}
case 39:
{
   varlength = 1;
   yyval = mkor( yyvsp[-2], yyvsp[0] );
   ;
    break;}
case 40:
{ yyval = yyvsp[0]; ;
    break;}
case 41:
{
   if ( trlcontxt )
    synerr( "trailing context used twice" );
   else
    trlcontxt = 1;
   if ( varlength )
    varlength = 0;
   else
    headcnt = rulelen;
   rulelen = 0;
   current_state_type = 0x2;
   yyval = yyvsp[-1];
   ;
    break;}
case 42:
{
   yyval = link_machines( yyvsp[-1], yyvsp[0] );
   ;
    break;}
case 43:
{ yyval = yyvsp[0]; ;
    break;}
case 44:
{
   varlength = 1;
   yyval = mkclos( yyvsp[-1] );
   ;
    break;}
case 45:
{
   varlength = 1;
   yyval = mkposcl( yyvsp[-1] );
   ;
    break;}
case 46:
{
   varlength = 1;
   yyval = mkopt( yyvsp[-1] );
   ;
    break;}
case 47:
{
   varlength = 1;
   if ( yyvsp[-3] > yyvsp[-1] || yyvsp[-3] < 0 )
    {
    synerr( "bad iteration values" );
    yyval = yyvsp[-5];
    }
   else
    {
    if ( yyvsp[-3] == 0 )
     {
     if ( yyvsp[-1] <= 0 )
      {
      synerr(
      "bad iteration values" );
      yyval = yyvsp[-5];
      }
     else
      yyval = mkopt(
       mkrep( yyvsp[-5], 1, yyvsp[-1] ) );
     }
    else
     yyval = mkrep( yyvsp[-5], yyvsp[-3], yyvsp[-1] );
    }
   ;
    break;}
case 48:
{
   varlength = 1;
   if ( yyvsp[-2] <= 0 )
    {
    synerr( "iteration value must be positive" );
    yyval = yyvsp[-4];
    }
   else
    yyval = mkrep( yyvsp[-4], yyvsp[-2], -1 );
   ;
    break;}
case 49:
{
   varlength = 1;
   if ( yyvsp[-1] <= 0 )
    {
    synerr( "iteration value must be positive" );
    yyval = yyvsp[-3];
    }
   else
    yyval = link_machines( yyvsp[-3],
      copysingl( yyvsp[-3], yyvsp[-1] - 1 ) );
   ;
    break;}
case 50:
{
   if ( ! madeany )
    {
    anyccl = cclinit();
    ccladd( anyccl, '\n' );
    cclnegate( anyccl );
    if ( useecs )
     mkeccl( ccltbl + cclmap[anyccl],
      ccllen[anyccl], nextecm,
      ecgroup, csize, csize );
    madeany = 1;
    }
   ++rulelen;
   yyval = mkstate( -anyccl );
   ;
    break;}
case 51:
{
   if ( ! cclsorted )
    cshell( ccltbl + cclmap[yyvsp[0]], ccllen[yyvsp[0]], 1 );
   if ( useecs )
    mkeccl( ccltbl + cclmap[yyvsp[0]], ccllen[yyvsp[0]],
     nextecm, ecgroup, csize, csize );
   ++rulelen;
   yyval = mkstate( -yyvsp[0] );
   ;
    break;}
case 52:
{
   ++rulelen;
   yyval = mkstate( -yyvsp[0] );
   ;
    break;}
case 53:
{ yyval = yyvsp[-1]; ;
    break;}
case 54:
{ yyval = yyvsp[-1]; ;
    break;}
case 55:
{
   ++rulelen;
   if ( caseins && yyvsp[0] >= 'A' && yyvsp[0] <= 'Z' )
    yyvsp[0] = clower( yyvsp[0] );
   yyval = mkstate( yyvsp[0] );
   ;
    break;}
case 56:
{ yyval = yyvsp[-1]; ;
    break;}
case 57:
{
   cclnegate( yyvsp[-1] );
   yyval = yyvsp[-1];
   ;
    break;}
case 58:
{
   if ( caseins )
    {
    if ( yyvsp[-2] >= 'A' && yyvsp[-2] <= 'Z' )
     yyvsp[-2] = clower( yyvsp[-2] );
    if ( yyvsp[0] >= 'A' && yyvsp[0] <= 'Z' )
     yyvsp[0] = clower( yyvsp[0] );
    }
   if ( yyvsp[-2] > yyvsp[0] )
    synerr( "negative range in character class" );
   else
    {
    for ( i = yyvsp[-2]; i <= yyvsp[0]; ++i )
     ccladd( yyvsp[-3], i );
    cclsorted = cclsorted && (yyvsp[-2] > lastchar);
    lastchar = yyvsp[0];
    }
   yyval = yyvsp[-3];
   ;
    break;}
case 59:
{
   if ( caseins && yyvsp[0] >= 'A' && yyvsp[0] <= 'Z' )
    yyvsp[0] = clower( yyvsp[0] );
   ccladd( yyvsp[-1], yyvsp[0] );
   cclsorted = cclsorted && (yyvsp[0] > lastchar);
   lastchar = yyvsp[0];
   yyval = yyvsp[-1];
   ;
    break;}
case 60:
{
   cclsorted = 0;
   yyval = yyvsp[-1];
   ;
    break;}
case 61:
{
   cclsorted = 1;
   lastchar = 0;
   currccl = yyval = cclinit();
   ;
    break;}
case 62:
{ { int c; for ( c = 0; c < csize; ++c ) if ( (((c) & ~0x7f) == 0) && ((*__ctype_b_loc ())[(int) ((c))] & (unsigned short int) _ISalnum) ) ccladd( currccl, c ); } ;
    break;}
case 63:
{ { int c; for ( c = 0; c < csize; ++c ) if ( (((c) & ~0x7f) == 0) && ((*__ctype_b_loc ())[(int) ((c))] & (unsigned short int) _ISalpha) ) ccladd( currccl, c ); } ;
    break;}
case 64:
{ { int c; for ( c = 0; c < csize; ++c ) if ( (((c) & ~0x7f) == 0) && ((c) == ' ' || (c) == '\t') ) ccladd( currccl, c ); } ;
    break;}
case 65:
{ { int c; for ( c = 0; c < csize; ++c ) if ( (((c) & ~0x7f) == 0) && ((*__ctype_b_loc ())[(int) ((c))] & (unsigned short int) _IScntrl) ) ccladd( currccl, c ); } ;
    break;}
case 66:
{ { int c; for ( c = 0; c < csize; ++c ) if ( (((c) & ~0x7f) == 0) && ((*__ctype_b_loc ())[(int) ((c))] & (unsigned short int) _ISdigit) ) ccladd( currccl, c ); } ;
    break;}
case 67:
{ { int c; for ( c = 0; c < csize; ++c ) if ( (((c) & ~0x7f) == 0) && ((*__ctype_b_loc ())[(int) ((c))] & (unsigned short int) _ISgraph) ) ccladd( currccl, c ); } ;
    break;}
case 68:
{ { int c; for ( c = 0; c < csize; ++c ) if ( (((c) & ~0x7f) == 0) && ((*__ctype_b_loc ())[(int) ((c))] & (unsigned short int) _ISlower) ) ccladd( currccl, c ); } ;
    break;}
case 69:
{ { int c; for ( c = 0; c < csize; ++c ) if ( (((c) & ~0x7f) == 0) && ((*__ctype_b_loc ())[(int) ((c))] & (unsigned short int) _ISprint) ) ccladd( currccl, c ); } ;
    break;}
case 70:
{ { int c; for ( c = 0; c < csize; ++c ) if ( (((c) & ~0x7f) == 0) && ((*__ctype_b_loc ())[(int) ((c))] & (unsigned short int) _ISpunct) ) ccladd( currccl, c ); } ;
    break;}
case 71:
{ { int c; for ( c = 0; c < csize; ++c ) if ( (((c) & ~0x7f) == 0) && ((*__ctype_b_loc ())[(int) ((c))] & (unsigned short int) _ISspace) ) ccladd( currccl, c ); } ;
    break;}
case 72:
{
    if ( caseins )
     { int c; for ( c = 0; c < csize; ++c ) if ( (((c) & ~0x7f) == 0) && ((*__ctype_b_loc ())[(int) ((c))] & (unsigned short int) _ISlower) ) ccladd( currccl, c ); }
    else
     { int c; for ( c = 0; c < csize; ++c ) if ( (((c) & ~0x7f) == 0) && ((*__ctype_b_loc ())[(int) ((c))] & (unsigned short int) _ISupper) ) ccladd( currccl, c ); }
    ;
    break;}
case 73:
{ { int c; for ( c = 0; c < csize; ++c ) if ( (((c) & ~0x7f) == 0) && ((*__ctype_b_loc ())[(int) ((c))] & (unsigned short int) _ISxdigit) ) ccladd( currccl, c ); } ;
    break;}
case 74:
{
   if ( caseins && yyvsp[0] >= 'A' && yyvsp[0] <= 'Z' )
    yyvsp[0] = clower( yyvsp[0] );
   ++rulelen;
   yyval = link_machines( yyvsp[-1], mkstate( yyvsp[0] ) );
   ;
    break;}
case 75:
{ yyval = mkstate( (256 + 1) ); ;
    break;}
}
  yyvsp -= yylen;
  yyssp -= yylen;
  *++yyvsp = yyval;
  yyn = yyr1[yyn];
  yystate = yypgoto[yyn - 48] + *yyssp;
  if (yystate >= 0 && yystate <= 110 && yycheck[yystate] == *yyssp)
    yystate = yytable[yystate];
  else
    yystate = yydefgoto[yyn - 48];
  goto yynewstate;
yyerrlab:
  if (! yyerrstatus)
    {
      ++yynerrs;
 yyerror("parse error");
    }
  goto yyerrlab1;
yyerrlab1:
  if (yyerrstatus == 3)
    {
      if (yychar == 0)
 goto yyabortlab;
      yychar = -2;
    }
  yyerrstatus = 3;
  goto yyerrhandle;
yyerrdefault:
yyerrpop:
  if (yyssp == yyss) goto yyabortlab;
  yyvsp--;
  yystate = *--yyssp;
yyerrhandle:
  yyn = yypact[yystate];
  if (yyn == -32768)
    goto yyerrdefault;
  yyn += 1;
  if (yyn < 0 || yyn > 110 || yycheck[yyn] != 1)
    goto yyerrdefault;
  yyn = yytable[yyn];
  if (yyn < 0)
    {
      if (yyn == -32768)
 goto yyerrpop;
      yyn = -yyn;
      goto yyreduce;
    }
  else if (yyn == 0)
    goto yyerrpop;
  if (yyn == 107)
    goto yyacceptlab;
  *++yyvsp = yylval;
  yystate = yyn;
  goto yynewstate;
 yyacceptlab:
  if (yyfree_stacks)
    {
      free (yyss);
      free (yyvs);
    }
  return 0;
 yyabortlab:
  if (yyfree_stacks)
    {
      free (yyss);
      free (yyvs);
    }
  return 1;
}
void build_eof_action()
 {
 register int i;
 char action_text[2048];
 for ( i = 1; i <= scon_stk_ptr; ++i )
  {
  if ( sceof[scon_stk[i]] )
   format_pinpoint_message(
    "multiple <<EOF>> rules for start condition %s",
    scname[scon_stk[i]] );
  else
   {
   sceof[scon_stk[i]] = 1;
   sprintf( action_text, "case YY_STATE_EOF(%s):\n",
    scname[scon_stk[i]] );
   add_action( action_text );
   }
  }
 line_directive_out( (FILE *) 0, 1 );
 --num_rules;
 ++num_eof_rules;
 }
void format_synerr( msg, arg )
char msg[], arg[];
 {
 char errmsg[2048];
 (void) sprintf( errmsg, msg, arg );
 synerr( errmsg );
 }
void synerr( str )
char str[];
 {
 syntaxerror = 1;
 pinpoint_message( str );
 }
void format_warn( msg, arg )
char msg[], arg[];
 {
 char warn_msg[2048];
 (void) sprintf( warn_msg, msg, arg );
 warn( warn_msg );
 }
void warn( str )
char str[];
 {
 line_warning( str, linenum );
 }
void format_pinpoint_message( msg, arg )
char msg[], arg[];
 {
 char errmsg[2048];
 (void) sprintf( errmsg, msg, arg );
 pinpoint_message( errmsg );
 }
void pinpoint_message( str )
char str[];
 {
 line_pinpoint( str, linenum );
 }
void line_warning( str, line )
char str[];
int line;
 {
 char warning[2048];
 if ( ! nowarn )
  {
  sprintf( warning, "warning, %s", str );
  line_pinpoint( warning, line );
  }
 }
void line_pinpoint( str, line )
char str[];
int line;
 {
 fprintf( err, "\"%s\", line %d: %s\n", infilename, line, str );
 }
void yyerror( msg )
char msg[];
 {
 }
typedef struct yy_buffer_state *YY_BUFFER_STATE;
extern int yyleng;
extern FILE *yyin, *yyout;
typedef unsigned int yy_size_t;
struct yy_buffer_state
 {
 FILE *yy_input_file;
 char *yy_ch_buf;
 char *yy_buf_pos;
 yy_size_t yy_buf_size;
 int yy_n_chars;
 int yy_is_our_buffer;
 int yy_is_interactive;
 int yy_at_bol;
 int yy_fill_buffer;
 int yy_buffer_status;
 };
static YY_BUFFER_STATE yy_current_buffer = 0;
static char yy_hold_char;
static int yy_n_chars;
int yyleng;
static char *yy_c_buf_p = (char *) 0;
static int yy_init = 1;
static int yy_start = 0;
static int yy_did_buffer_switch_on_eof;
void yyrestart ( FILE *input_file );
void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer );
void yy_load_buffer_state ( void );
YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size );
void yy_delete_buffer ( YY_BUFFER_STATE b );
void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file );
void yy_flush_buffer ( YY_BUFFER_STATE b );
YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size );
YY_BUFFER_STATE yy_scan_string ( const char *str );
YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len );
static void *yy_flex_alloc ( yy_size_t );
static void *yy_flex_realloc ( void *, yy_size_t );
static void yy_flex_free ( void * );
typedef unsigned char YY_CHAR;
FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
typedef int yy_state_type;
extern char *yytext;
extern int yywrap ( void );
static void yyunput ( int c, char *buf_ptr );
static int input ( void );
static yy_state_type yy_get_previous_state ( void );
static yy_state_type yy_try_NUL_trans ( yy_state_type current_state );
static int yy_get_next_buffer ( void );
static void yy_fatal_error ( const char msg[] );
static const short int yy_accept[769] =
    { 0,
        0, 0, 0, 0, 87, 87, 163, 163, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 166, 164,
        7, 18, 164, 16, 1, 17, 164, 164, 164, 164,
       15, 108, 100, 101, 108, 93, 108, 107, 108, 108,
      108, 107, 99, 89, 108, 108, 91, 92, 87, 88,
       87, 86, 85, 86, 86, 163, 163, 28, 29, 28,
       28, 28, 28, 28, 28, 31, 30, 32, 31, 113,
      109, 110, 112, 114, 141, 142, 141, 139, 138, 140,
      115, 117, 115, 116, 115, 120, 120, 120, 120, 122,
      124, 122, 122, 122, 122, 123, 151, 155, 151, 154,
      156, 156, 152, 152, 152, 149, 150, 164, 82, 164,
       21, 22, 21, 20, 157, 159, 157, 160, 161, 147,
      147, 148, 147, 147, 147, 147, 147, 147, 147, 81,
       34, 33, 81, 81, 81, 81, 35, 81, 81, 81,
       81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
       81, 81, 81, 81, 81, 81, 26, 23, 26, 24,
        7, 18, 0, 16, 1, 17, 0, 0, 0, 14,
        8, 0, 0, 0, 0, 4, 5, 0, 2, 15,
      100, 101, 0, 0, 0, 95, 0, 0, 105, 105,
        0, 162, 162, 162, 94, 0, 99, 89, 0, 0,
        0, 91, 92, 104, 90, 0, 87, 88, 86, 85,
       85, 83, 84, 163, 163, 28, 29, 28, 28, 28,
       28, 31, 30, 32, 111, 112, 142, 138, 117, 0,
      118, 119, 124, 121, 151, 155, 0, 153, 0, 144,
      152, 152, 152, 0, 82, 0, 21, 22, 21, 19,
      157, 159, 158, 147, 147, 147, 148, 143, 147, 147,
      147, 34, 33, 0, 80, 0, 0, 81, 81, 81,
       81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
       81, 81, 81, 36, 81, 81, 81, 81, 81, 81,
       81, 81, 81, 81, 0, 25, 24, 0, 14, 8,
        0, 12, 0, 0, 0, 0, 0, 4, 5, 0,
        6, 0, 96, 0, 97, 0, 0, 105, 105, 0,
      105, 105, 105, 162, 162, 0, 106, 90, 98, 0,
      104, 0, 83, 84, 28, 28, 28, 27, 28, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 152, 152, 143, 143, 147, 147, 0, 0, 81,
       81, 81, 81, 81, 44, 81, 81, 81, 49, 81,
       81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
       81, 81, 81, 81, 81, 81, 81, 81, 0, 81,
       81, 81, 81, 0, 0, 0, 12, 0, 0, 0,
        0, 0, 0, 4, 5, 0, 105, 105, 105, 105,
      105, 105, 162, 0, 0, 28, 28, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      152, 152, 147, 147, 37, 38, 81, 81, 81, 81,
       81, 81, 81, 81, 50, 51, 81, 81, 81, 55,
       81, 81, 81, 81, 81, 81, 60, 81, 81, 81,
       81, 81, 81, 67, 0, 0, 0, 81, 81, 81,
       81, 0, 13, 0, 0, 0, 0, 0, 0, 105,
      105, 105, 105, 105, 105, 0, 0, 28, 28, 137,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 152, 152, 147, 147, 39, 81, 41, 81,
       43, 81, 81, 81, 47, 81, 52, 81, 81, 81,
       81, 81, 81, 81, 81, 81, 62, 81, 81, 65,
       81, 0, 0, 0, 0, 81, 81, 81, 81, 3,
        0, 0, 0, 0, 105, 105, 105, 0, 0, 28,
       28, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 145, 146, 145, 146, 81, 42, 81,
       81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
       81, 78, 61, 81, 64, 81, 0, 0, 0, 0,
       81, 81, 69, 70, 0, 10, 0, 11, 0, 103,
        0, 102, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 81, 81, 81, 45, 81, 48,
       81, 81, 81, 81, 77, 81, 59, 63, 66, 0,
        0, 0, 0, 79, 81, 0, 102, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 81,
       81, 81, 46, 81, 81, 56, 81, 81, 0, 0,
        0, 0, 68, 0, 9, 0, 125, 126, 127, 128,
      129, 130, 131, 132, 133, 134, 135, 0, 81, 81,
       81, 81, 81, 81, 81, 0, 0, 0, 0, 0,
      136, 81, 81, 81, 81, 54, 81, 81, 0, 0,
        0, 0, 0, 0, 81, 81, 81, 53, 81, 58,
        0, 0, 0, 0, 0, 0, 81, 81, 81, 81,
       72, 0, 0, 0, 0, 73, 81, 81, 81, 81,
       71, 0, 75, 0, 81, 81, 81, 74, 76, 81,
       81, 81, 81, 81, 81, 57, 40, 0
    } ;
static const int yy_ec[256] =
    { 0,
        1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
        1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 2, 1, 5, 6, 7, 8, 1, 9, 10,
       10, 11, 12, 13, 14, 10, 15, 16, 16, 16,
       16, 16, 16, 16, 17, 18, 16, 19, 1, 20,
       21, 22, 10, 1, 30, 31, 32, 33, 34, 35,
       36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
       46, 47, 48, 49, 50, 51, 52, 53, 54, 46,
       25, 26, 27, 28, 29, 1, 30, 31, 32, 33,
       34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
       44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
       54, 46, 55, 56, 57, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 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[58] =
    { 0,
        1, 1, 2, 1, 3, 1, 1, 1, 4, 1,
        5, 6, 1, 7, 4, 8, 8, 8, 1, 1,
        1, 1, 9, 10, 1, 11, 12, 1, 13, 14,
       14, 14, 14, 14, 14, 15, 15, 15, 15, 15,
       15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
       15, 15, 15, 15, 4, 1, 16
    } ;
static const short int yy_base[857] =
    { 0,
        0, 57, 113, 169, 118, 127, 2676, 2675, 226, 2669,
      138, 141, 283, 0, 2648, 2647, 133, 144, 149, 160,
      179, 184, 188, 338, 365, 0, 123, 152, 155, 195,
      420, 423, 449, 0, 506, 0, 340, 343, 2674, 2680,
      214, 2680, 2670, 0, 217, 2680, 2669, 181, 556, 2660,
        0, 2680, 563, 2680, 2667, 2680, 347, 2680, 2649, 328,
      552, 413, 574, 2680, 2665, 565, 2647, 2680, 0, 2680,
     2663, 0, 2663, 2661, 77, 2660, 2680, 0, 2680, 2659,
     2680, 0, 2627, 2606, 2602, 0, 2656, 2680, 2654, 2680,
     2680, 2628, 0, 2680, 2680, 2680, 2652, 2680, 416, 2680,
     2680, 2680, 2651, 2680, 563, 2680, 2634, 575, 421, 2680,
     2680, 2649, 0, 2632, 590, 2680, 0, 2680, 2647, 2680,
      586, 2638, 0, 2614, 2593, 2680, 2680, 433, 2680, 435,
      437, 2680, 439, 2631, 0, 2680, 2642, 2680, 0, 0,
      613, 2680, 2641, 2586, 2680, 2631, 0, 2607, 2586, 2680,
     2637, 2680, 2635, 2632, 2605, 2604, 2680, 576, 2604, 155,
     2599, 2600, 158, 0, 2588, 2596, 166, 159, 2579, 540,
     2594, 2578, 2583, 2591, 2594, 2569, 2680, 2680, 2617, 608,
      629, 2680, 2618, 0, 632, 2680, 2617, 573, 2581, 0,
        0, 635, 638, 642, 645, 0, 0, 441, 2680, 0,
      662, 2680, 2615, 2562, 594, 2680, 2613, 2581, 642, 650,
      655, 2680, 661, 0, 2680, 2557, 682, 2680, 2610, 2557,
     2600, 2590, 2680, 0, 2680, 2575, 0, 2680, 0, 0,
     2606, 0, 0, 2604, 2680, 0, 2680, 0, 2567, 2563,
      738, 0, 2602, 2680, 2680, 0, 2680, 675, 2680, 766,
     2680, 2680, 2680, 2680, 0, 2680, 601, 2680, 0, 2680,
        0, 2564, 2560, 677, 2680, 691, 695, 2680, 697, 2680,
        0, 2680, 2680, 0, 701, 2544, 2680, 819, 0, 2561,
     2557, 2596, 2680, 2592, 2680, 2558, 2557, 0, 636, 2547,
      664, 2581, 2544, 587, 2543, 2542, 2548, 662, 2535, 2549,
     2537, 0, 2534, 2680, 2535, 2536, 2544, 2547, 675, 314,
     2535, 2532, 2531, 683, 2572, 2680, 703, 2533, 0, 0,
      875, 2680, 2572, 878, 2527, 2524, 2534, 0, 0, 713,
     2680, 719, 2680, 723, 2680, 725, 2527, 705, 784, 870,
      923, 882, 965, 716, 0, 2513, 2680, 2680, 2680, 2535,
        0, 2524, 0, 0, 2533, 2522, 0, 2680, 0, 1000,
     2546, 781, 864, 866, 865, 566, 870, 871, 638, 966,
      782, 2530, 2519, 0, 1057, 2528, 2517, 2511, 2510, 2522,
     2527, 2526, 2515, 2522, 0, 2519, 2502, 2521, 0, 2501,
     2508, 2498, 2513, 2532, 2502, 2514, 2509, 2507, 2506, 2497,
     2504, 2505, 2503, 2504, 768, 2485, 2503, 2490, 867, 2491,
     2493, 2486, 2482, 2494, 733, 1027, 2680, 801, 1030, 990,
     2497, 2488, 2482, 0, 0, 2489, 1092, 1024, 1131, 2504,
     1070, 1151, 2680, 2478, 2486, 2488, 2472, 0, 2491, 1049,
      553, 901, 883, 887, 159, 965, 1017, 892, 1035, 1062,
     2485, 2469, 2483, 2467, 2680, 2680, 2470, 2458, 2457, 2460,
     2472, 1076, 2472, 2457, 0, 0, 2457, 2458, 2472, 0,
     2489, 2455, 2463, 2486, 2450, 2460, 0, 2465, 2456, 2452,
     2444, 2444, 2448, 0, 860, 2459, 2446, 2459, 2445, 2440,
     2456, 2483, 2680, 814, 1035, 2430, 2439, 2433, 2459, 2461,
     1081, 1171, 1026, 961, 998, 2444, 2456, 2428, 2442, 2680,
     1070, 1072, 1132, 1074, 1133, 1131, 1084, 1134, 894, 1138,
     1085, 1136, 2426, 2440, 2424, 2438, 0, 2423, 0, 2425,
        0, 1142, 2419, 2434, 0, 2426, 0, 2436, 2421, 2430,
     2403, 2370, 2363, 2370, 2350, 2353, 0, 2363, 2345, 0,
     2336, 2302, 2298, 2308, 2292, 2254, 2252, 2236, 2221, 2263,
     1098, 2221, 2227, 2222, 1133, 1153, 1166, 2217, 2216, 0,
        0, 1154, 1178, 610, 1174, 1176, 1179, 1180, 1181, 1188,
     1190, 1191, 1193, 0, 0, 0, 0, 2218, 0, 2188,
     2196, 2186, 2178, 2173, 2187, 2170, 2172, 2165, 2156, 2132,
     2118, 0, 0, 2097, 0, 2108, 2112, 2099, 2092, 2105,
     2082, 2086, 0, 0, 1210, 2680, 1214, 2680, 2081, 2680,
     2100, 2680, 2102, 2083, 2078, 2077, 2071, 2070, 2069, 2066,
     2065, 2061, 2058, 1192, 2007, 1981, 1970, 0, 1949, 0,
     1932, 1920, 1911, 1915, 0, 1907, 0, 0, 0, 1903,
     1921, 1920, 1894, 0, 1888, 1216, 2680, 1868, 1867, 1861,
     1860, 1843, 1827, 1811, 1807, 1806, 1805, 1802, 1793, 1764,
     1772, 1752, 0, 1761, 1768, 0, 1746, 1750, 1741, 1739,
     1191, 1722, 0, 1225, 2680, 1229, 2680, 2680, 2680, 2680,
     2680, 2680, 2680, 2680, 2680, 2680, 2680, 1737, 1707, 1712,
     1704, 1667, 1668, 1664, 1647, 1663, 1639, 1186, 1638, 1656,
     2680, 1646, 1622, 1605, 1615, 0, 1601, 1580, 1575, 1593,
     1582, 1567, 1568, 1563, 1564, 1569, 1566, 0, 1542, 0,
     1522, 1491, 1500, 1500, 1478, 1466, 1465, 1445, 1420, 1438,
     2680, 1192, 1189, 1173, 1113, 2680, 1078, 1070, 1071, 986,
     2680, 942, 2680, 865, 764, 757, 668, 2680, 2680, 666,
      413, 311, 304, 189, 85, 0, 0, 2680, 1241, 1257,
     1273, 1289, 1305, 1321, 1337, 1353, 1369, 1385, 1401, 1417,
     1433, 1449, 1459, 1474, 1483, 1498, 1514, 1523, 1538, 1554,
     1570, 1586, 1602, 1612, 1627, 1637, 1652, 1668, 1684, 1696,
     1706, 1721, 1737, 1753, 1769, 1785, 1795, 1810, 1821, 1220,
     1836, 1852, 1868, 1876, 1883, 1898, 1914, 1930, 1939, 1947,
     1963, 1979, 1995, 2011, 2027, 2043, 2059, 2075, 2085, 2100,
     2110, 2117, 2132, 2144, 2154, 2169, 2185, 2201, 2217, 2227,
     2242, 2253, 2268, 2284, 2300, 2316, 2326, 2335, 2350, 2366,
     2382, 2391, 2399, 2415, 2431, 2447
    } ;
static const short int yy_def[857] =
    { 0,
      768, 768, 769, 769, 770, 771, 772, 772, 768, 9,
      773, 773, 768, 13, 774, 774, 775, 775, 776, 776,
      777, 777, 778, 778, 768, 25, 779, 779, 780, 780,
      781, 781, 768, 33, 768, 35, 782, 782, 768, 768,
      768, 768, 768, 783, 768, 768, 768, 768, 784, 768,
      785, 768, 768, 768, 768, 768, 768, 768, 768, 786,
      787, 788, 768, 768, 768, 768, 768, 768, 789, 768,
      789, 790, 791, 790, 790, 792, 768, 793, 768, 793,
      768, 794, 794, 794, 793, 795, 768, 768, 795, 768,
      768, 768, 796, 768, 768, 768, 768, 768, 768, 768,
      768, 768, 768, 768, 787, 768, 768, 787, 797, 768,
      768, 768, 798, 768, 787, 768, 799, 768, 799, 768,
      800, 768, 801, 801, 801, 768, 768, 802, 768, 802,
      803, 768, 803, 768, 804, 768, 804, 768, 805, 806,
      806, 768, 806, 806, 768, 806, 807, 807, 807, 768,
      768, 768, 768, 808, 768, 768, 768, 809, 809, 809,
      809, 809, 809, 809, 809, 809, 809, 810, 809, 809,
      809, 809, 809, 809, 809, 809, 768, 768, 811, 768,
      768, 768, 768, 783, 768, 768, 768, 768, 768, 812,
      813, 768, 768, 768, 768, 814, 815, 816, 768, 785,
      768, 768, 768, 768, 817, 768, 768, 768, 818, 818,
      786, 768, 768, 819, 768, 820, 768, 768, 768, 768,
      768, 768, 768, 821, 768, 768, 822, 768, 823, 824,
      824, 825, 826, 827, 768, 828, 768, 829, 829, 829,
      768, 830, 768, 768, 768, 831, 768, 768, 768, 832,
      768, 768, 768, 768, 833, 768, 834, 768, 834, 768,
      835, 835, 835, 836, 768, 836, 837, 768, 837, 768,
      838, 768, 768, 839, 839, 839, 768, 768, 840, 840,
      840, 768, 768, 841, 768, 768, 768, 842, 842, 842,
      842, 842, 842, 842, 842, 842, 842, 842, 842, 842,
      842, 842, 842, 768, 842, 842, 842, 842, 842, 842,
      842, 842, 842, 842, 843, 768, 768, 768, 844, 845,
      846, 768, 768, 768, 768, 768, 768, 847, 848, 849,
      768, 849, 768, 850, 768, 850, 768, 851, 851, 851,
      768, 851, 851, 768, 852, 853, 768, 768, 768, 768,
      854, 768, 825, 826, 829, 829, 241, 768, 241, 241,
      832, 832, 832, 832, 832, 832, 832, 832, 832, 832,
      832, 835, 835, 278, 278, 840, 840, 768, 768, 842,
      842, 842, 842, 842, 842, 842, 842, 842, 842, 842,
      842, 842, 842, 842, 842, 842, 842, 842, 842, 842,
      842, 842, 842, 842, 842, 842, 842, 842, 768, 842,
      842, 842, 842, 768, 846, 846, 768, 846, 846, 768,
      768, 768, 768, 847, 848, 768, 341, 851, 343, 341,
      851, 343, 768, 768, 768, 829, 829, 360, 768, 832,
      832, 832, 832, 832, 832, 832, 832, 832, 832, 832,
      835, 835, 840, 840, 768, 768, 842, 842, 842, 842,
      842, 842, 842, 842, 842, 842, 842, 842, 842, 842,
      842, 842, 842, 842, 842, 842, 842, 842, 842, 842,
      842, 842, 842, 842, 768, 768, 768, 842, 842, 842,
      842, 768, 768, 846, 846, 768, 768, 768, 768, 427,
      851, 343, 851, 851, 851, 768, 768, 829, 829, 768,
      832, 832, 832, 832, 832, 832, 832, 832, 832, 832,
      832, 832, 835, 835, 840, 840, 842, 842, 842, 842,
      842, 842, 842, 842, 842, 842, 842, 842, 842, 842,
      842, 842, 842, 842, 842, 842, 842, 842, 842, 842,
      842, 768, 768, 768, 768, 842, 842, 842, 842, 768,
      855, 768, 768, 768, 851, 851, 851, 768, 768, 829,
      829, 832, 832, 832, 832, 832, 832, 832, 832, 832,
      832, 832, 832, 835, 835, 840, 840, 842, 842, 842,
      842, 842, 842, 842, 842, 842, 842, 842, 842, 842,
      842, 842, 842, 842, 842, 842, 768, 768, 768, 768,
      842, 842, 842, 842, 855, 768, 855, 768, 768, 768,
      768, 768, 832, 832, 832, 832, 832, 832, 832, 832,
      832, 832, 832, 832, 842, 842, 842, 842, 842, 842,
      842, 842, 842, 842, 842, 842, 842, 842, 842, 768,
      768, 768, 768, 842, 842, 856, 768, 768, 768, 768,
      768, 768, 768, 768, 768, 768, 768, 768, 832, 842,
      842, 842, 842, 842, 842, 842, 842, 842, 768, 768,
      768, 768, 842, 856, 768, 856, 768, 768, 768, 768,
      768, 768, 768, 768, 768, 768, 768, 768, 842, 842,
      842, 842, 842, 842, 842, 768, 768, 768, 768, 768,
      768, 842, 842, 842, 842, 842, 842, 842, 768, 768,
      768, 768, 768, 768, 842, 842, 842, 842, 842, 842,
      768, 768, 768, 768, 768, 768, 842, 842, 842, 842,
      768, 768, 768, 768, 768, 768, 842, 842, 842, 842,
      768, 768, 768, 768, 842, 842, 842, 768, 768, 842,
      842, 842, 842, 842, 842, 842, 842, 0, 768, 768,
      768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
      768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
      768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
      768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
      768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
      768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
      768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
      768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
      768, 768, 768, 768, 768, 768
    } ;
static const short int yy_nxt[2738] =
    { 0,
       40, 41, 42, 43, 40, 40, 40, 40, 40, 40,
       40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
       40, 40, 44, 44, 40, 40, 40, 40, 44, 44,
       44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
       44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
       44, 44, 44, 44, 40, 40, 40, 40, 45, 46,
       47, 40, 48, 40, 49, 40, 40, 40, 40, 40,
       40, 50, 40, 40, 40, 40, 40, 40, 40, 51,
       51, 40, 40, 40, 40, 51, 51, 51, 51, 51,
       51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
       51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
       51, 40, 40, 40, 53, 54, 55, 56, 767, 57,
       70, 71, 58, 58, 58, 129, 130, 58, 73, 70,
       74, 232, 59, 233, 75, 96, 97, 60, 61, 87,
       88, 89, 87, 88, 89, 98, 96, 97, 99, 99,
       99, 102, 103, 104, 129, 130, 98, 132, 133, 99,
       99, 99, 102, 103, 104, 134, 292, 62, 58, 58,
       63, 64, 65, 56, 105, 57, 66, 439, 58, 58,
       58, 40, 188, 58, 293, 105, 40, 296, 67, 100,
      111, 112, 303, 60, 61, 300, 68, 132, 133, 301,
      100, 113, 304, 107, 108, 134, 109, 297, 107, 108,
      517, 109, 114, 115, 116, 181, 182, 183, 185, 186,
      187, 189, 766, 62, 58, 58, 78, 78, 79, 80,
       78, 78, 78, 78, 78, 78, 81, 78, 78, 78,
       78, 78, 78, 78, 78, 78, 78, 78, 82, 82,
       78, 78, 78, 78, 82, 82, 82, 82, 82, 82,
       82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
       82, 82, 83, 82, 82, 82, 82, 82, 82, 84,
       78, 78, 78, 90, 90, 40, 90, 90, 90, 90,
       90, 90, 90, 91, 90, 91, 90, 90, 90, 90,
       90, 90, 90, 90, 92, 93, 93, 90, 90, 90,
       90, 93, 93, 93, 93, 93, 93, 93, 93, 93,
       93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
       93, 93, 93, 93, 93, 93, 93, 90, 90, 90,
      111, 112, 178, 404, 179, 178, 405, 179, 206, 206,
      207, 113, 210, 211, 765, 180, 180, 180, 180, 180,
      180, 764, 114, 115, 116, 117, 117, 118, 119, 120,
      117, 117, 117, 121, 117, 117, 117, 117, 117, 122,
      117, 117, 117, 117, 117, 117, 117, 123, 123, 117,
      117, 117, 117, 123, 123, 123, 123, 123, 123, 123,
      123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
      123, 124, 123, 123, 123, 123, 123, 123, 125, 126,
      117, 127, 136, 137, 138, 136, 137, 138, 215, 215,
      215, 248, 248, 248, 252, 265, 266, 265, 266, 268,
      269, 268, 269, 331, 332, 139, 673, 252, 139, 140,
      141, 142, 143, 140, 140, 140, 144, 140, 140, 145,
      140, 140, 140, 146, 140, 140, 140, 140, 140, 140,
      140, 147, 147, 140, 140, 140, 140, 147, 147, 147,
      147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
      147, 147, 147, 147, 147, 148, 147, 147, 147, 147,
      147, 147, 149, 140, 140, 140, 150, 151, 152, 153,
      154, 150, 150, 150, 150, 150, 150, 150, 150, 150,
      150, 150, 155, 156, 150, 150, 157, 150, 150, 150,
      150, 150, 150, 150, 150, 158, 159, 160, 161, 162,
      163, 164, 164, 165, 164, 164, 166, 167, 168, 169,
      170, 164, 171, 172, 164, 173, 174, 175, 164, 176,
      150, 150, 150, 191, 201, 202, 203, 213, 213, 213,
      204, 439, 224, 306, 188, 217, 218, 219, 213, 213,
      213, 220, 513, 307, 439, 192, 308, 193, 221, 193,
      213, 213, 213, 222, 258, 193, 335, 336, 193, 194,
      195, 223, 193, 196, 214, 213, 213, 213, 197, 258,
      198, 259, 444, 189, 275, 214, 289, 387, 205, 225,
      276, 388, 290, 317, 317, 317, 259, 214, 439, 205,
      181, 182, 183, 185, 186, 187, 321, 322, 323, 321,
      322, 323, 214, 321, 322, 323, 321, 322, 323, 625,
      324, 324, 324, 324, 324, 324, 439, 324, 324, 324,
      324, 324, 324, 201, 202, 203, 339, 340, 341, 204,
      342, 342, 342, 380, 339, 340, 344, 344, 344, 265,
      266, 325, 448, 217, 218, 219, 326, 381, 327, 220,
      248, 248, 248, 265, 266, 383, 221, 268, 269, 268,
      269, 222, 275, 763, 402, 762, 392, 343, 276, 223,
      393, 409, 384, 403, 410, 331, 332, 205, 317, 317,
      317, 331, 332, 411, 412, 335, 336, 335, 336, 339,
      340, 212, 212, 212, 413, 493, 494, 205, 357, 357,
      358, 359, 357, 357, 357, 357, 357, 357, 360, 357,
      357, 357, 357, 357, 357, 357, 357, 357, 357, 357,
      360, 360, 357, 357, 357, 357, 360, 360, 360, 360,
      360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
      360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
      360, 360, 357, 357, 357, 362, 363, 364, 365, 439,
      439, 366, 427, 417, 494, 480, 367, 761, 339, 340,
      368, 481, 760, 369, 450, 370, 493, 494, 371, 374,
      374, 440, 374, 374, 374, 374, 374, 374, 374, 375,
      374, 374, 374, 374, 374, 374, 374, 374, 374, 374,
      374, 375, 375, 374, 374, 374, 374, 375, 375, 375,
      375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
      375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
      375, 375, 375, 374, 374, 374, 416, 417, 418, 420,
      322, 323, 439, 439, 439, 428, 428, 428, 439, 439,
      419, 419, 419, 324, 324, 324, 338, 431, 431, 431,
      759, 439, 443, 552, 441, 439, 339, 340, 442, 553,
      439, 485, 439, 445, 486, 487, 516, 446, 515, 439,
      447, 520, 429, 338, 338, 580, 338, 338, 338, 338,
      338, 338, 338, 338, 338, 338, 338, 338, 338, 338,
      338, 338, 338, 338, 338, 430, 430, 339, 340, 514,
      338, 338, 430, 430, 430, 430, 430, 430, 430, 430,
      430, 430, 430, 430, 430, 430, 430, 430, 430, 430,
      430, 430, 430, 430, 430, 430, 430, 338, 338, 338,
      432, 432, 432, 439, 439, 339, 340, 432, 758, 339,
      340, 420, 322, 323, 432, 432, 432, 432, 432, 432,
      360, 360, 518, 438, 360, 360, 360, 360, 360, 360,
      449, 360, 360, 360, 360, 360, 360, 360, 360, 360,
      360, 360, 339, 340, 360, 360, 360, 360, 416, 417,
      418, 495, 417, 418, 757, 439, 495, 417, 418, 501,
      501, 501, 419, 419, 419, 419, 419, 419, 339, 340,
      339, 340, 209, 439, 360, 360, 360, 375, 375, 519,
      375, 375, 375, 375, 375, 375, 375, 439, 375, 375,
      375, 375, 375, 375, 375, 375, 375, 375, 375, 521,
      439, 375, 375, 375, 375, 504, 504, 504, 439, 532,
      439, 511, 439, 512, 339, 340, 566, 566, 566, 522,
      616, 617, 439, 439, 638, 339, 340, 756, 573, 755,
      533, 375, 375, 375, 500, 500, 534, 578, 582, 572,
      575, 500, 500, 500, 500, 500, 500, 500, 500, 500,
      500, 500, 500, 500, 500, 500, 500, 500, 500, 500,
      500, 500, 500, 500, 500, 500, 502, 502, 502, 439,
      439, 439, 439, 502, 439, 754, 439, 339, 340, 338,
      502, 502, 502, 502, 502, 502, 505, 505, 505, 581,
      576, 583, 439, 505, 574, 577, 579, 339, 340, 590,
      505, 505, 505, 505, 505, 505, 567, 567, 567, 591,
      339, 340, 439, 567, 439, 623, 439, 439, 439, 439,
      567, 567, 567, 567, 567, 567, 439, 624, 439, 439,
      439, 439, 616, 617, 626, 628, 616, 617, 685, 686,
      753, 708, 752, 632, 627, 751, 629, 685, 686, 630,
      634, 685, 686, 302, 302, 721, 631, 633, 709, 722,
      669, 52, 52, 52, 52, 52, 52, 52, 52, 52,
       52, 52, 52, 52, 52, 52, 52, 69, 69, 69,
       69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
       69, 69, 69, 72, 72, 72, 72, 72, 72, 72,
       72, 72, 72, 72, 72, 72, 72, 72, 72, 76,
       76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
       76, 76, 76, 76, 76, 86, 86, 86, 86, 86,
       86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
       86, 40, 40, 40, 40, 40, 40, 40, 40, 40,
       40, 40, 40, 40, 40, 40, 40, 95, 95, 95,
       95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
       95, 95, 95, 101, 101, 101, 101, 101, 101, 101,
      101, 101, 101, 101, 101, 101, 101, 101, 101, 106,
      106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
      106, 106, 106, 106, 106, 110, 110, 110, 110, 110,
      110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
      110, 128, 128, 128, 128, 128, 128, 128, 128, 128,
      128, 128, 128, 128, 128, 128, 128, 131, 131, 131,
      131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
      131, 131, 131, 135, 135, 135, 135, 135, 135, 135,
      135, 135, 135, 135, 135, 135, 135, 135, 135, 177,
      177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
      177, 177, 177, 177, 177, 184, 184, 184, 184, 750,
      749, 184, 184, 184, 190, 190, 190, 190, 190, 190,
      190, 190, 190, 190, 190, 190, 190, 190, 190, 200,
      200, 200, 200, 748, 747, 200, 200, 200, 209, 746,
      209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
      209, 209, 209, 209, 212, 745, 212, 212, 212, 212,
      212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
      216, 216, 216, 744, 743, 216, 216, 216, 227, 742,
      227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
      227, 227, 227, 227, 229, 741, 229, 229, 229, 229,
      229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
      230, 740, 230, 230, 230, 230, 230, 230, 230, 230,
      230, 230, 230, 230, 230, 230, 234, 234, 234, 234,
      234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
      234, 234, 236, 739, 236, 236, 738, 236, 236, 236,
      737, 736, 236, 236, 735, 734, 733, 236, 238, 238,
      238, 238, 732, 731, 238, 238, 238, 242, 730, 242,
      242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
      242, 242, 242, 246, 246, 246, 246, 729, 728, 246,
      246, 246, 251, 727, 251, 251, 251, 251, 251, 251,
      251, 251, 251, 251, 251, 251, 251, 251, 254, 726,
      254, 254, 254, 254, 254, 254, 254, 254, 254, 725,
      254, 254, 254, 254, 255, 724, 723, 720, 255, 255,
      255, 255, 719, 718, 255, 255, 257, 717, 257, 257,
      257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
      257, 257, 261, 261, 261, 261, 716, 715, 261, 261,
      261, 264, 264, 264, 264, 264, 264, 264, 264, 264,
      264, 264, 264, 264, 264, 264, 264, 267, 267, 267,
      267, 714, 267, 267, 267, 267, 267, 267, 267, 267,
      267, 267, 267, 271, 713, 712, 271, 271, 271, 271,
      271, 271, 271, 711, 271, 271, 271, 271, 271, 273,
      710, 273, 273, 273, 273, 273, 273, 273, 273, 273,
      273, 273, 273, 273, 273, 274, 707, 274, 274, 706,
      274, 274, 274, 705, 704, 274, 274, 703, 702, 701,
      274, 279, 279, 279, 279, 700, 699, 279, 279, 279,
      284, 698, 284, 284, 284, 284, 284, 284, 284, 284,
      284, 284, 284, 284, 284, 284, 288, 288, 697, 288,
      288, 696, 695, 694, 288, 288, 315, 693, 315, 315,
      315, 315, 315, 315, 315, 315, 315, 315, 315, 315,
      315, 315, 319, 692, 319, 319, 319, 319, 319, 319,
      319, 319, 319, 319, 319, 319, 319, 319, 320, 691,
      320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
      320, 320, 320, 320, 328, 328, 690, 689, 328, 328,
      328, 329, 329, 688, 687, 329, 329, 329, 330, 330,
      330, 330, 330, 330, 330, 330, 330, 330, 330, 330,
      330, 330, 330, 330, 334, 334, 334, 334, 334, 334,
      334, 334, 334, 334, 334, 334, 334, 334, 334, 334,
      338, 683, 338, 338, 338, 338, 338, 338, 338, 338,
      338, 682, 338, 338, 338, 338, 345, 345, 681, 680,
      679, 678, 345, 346, 346, 346, 346, 677, 676, 346,
      346, 346, 346, 351, 675, 351, 351, 351, 351, 351,
      351, 351, 351, 351, 351, 351, 351, 351, 351, 227,
      674, 227, 227, 227, 227, 227, 227, 227, 227, 227,
      227, 227, 227, 227, 227, 229, 673, 229, 229, 229,
      229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
      229, 230, 672, 230, 230, 230, 230, 230, 230, 230,
      230, 230, 230, 230, 230, 230, 230, 353, 671, 353,
      353, 353, 353, 353, 353, 353, 353, 353, 353, 353,
      353, 353, 353, 354, 670, 354, 354, 354, 354, 354,
      354, 354, 354, 354, 354, 354, 354, 354, 354, 234,
      234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
      234, 234, 234, 234, 234, 236, 668, 236, 236, 667,
      236, 236, 236, 666, 665, 236, 236, 664, 663, 662,
      236, 238, 238, 238, 238, 661, 660, 238, 238, 238,
      242, 659, 242, 242, 242, 242, 242, 242, 242, 242,
      242, 242, 242, 242, 242, 242, 246, 246, 246, 246,
      658, 657, 246, 246, 246, 361, 361, 656, 655, 654,
      361, 361, 255, 653, 652, 651, 255, 255, 255, 255,
      650, 649, 255, 255, 257, 648, 257, 257, 257, 257,
      257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
      261, 261, 261, 261, 647, 646, 261, 261, 261, 264,
      264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
      264, 264, 264, 264, 264, 267, 267, 267, 267, 645,
      267, 267, 267, 267, 267, 267, 267, 267, 267, 267,
      267, 271, 644, 643, 271, 271, 271, 271, 271, 271,
      271, 642, 271, 271, 271, 271, 271, 274, 641, 274,
      274, 640, 274, 274, 274, 639, 638, 274, 274, 637,
      636, 635, 274, 279, 279, 279, 279, 622, 621, 279,
      279, 279, 284, 620, 284, 284, 284, 284, 284, 284,
      284, 284, 284, 284, 284, 284, 284, 284, 288, 288,
      619, 288, 288, 618, 560, 614, 288, 288, 315, 613,
      315, 315, 315, 315, 315, 315, 315, 315, 315, 315,
      315, 315, 315, 315, 319, 612, 319, 319, 319, 319,
      319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
      320, 611, 320, 320, 320, 320, 320, 320, 320, 320,
      320, 320, 320, 320, 320, 320, 415, 415, 415, 415,
      415, 415, 415, 415, 415, 415, 415, 415, 415, 415,
      415, 415, 424, 424, 424, 424, 610, 609, 424, 424,
      424, 425, 425, 425, 425, 608, 607, 425, 425, 425,
      330, 330, 330, 330, 330, 330, 330, 330, 330, 330,
      330, 330, 330, 330, 330, 330, 334, 334, 334, 334,
      334, 334, 334, 334, 334, 334, 334, 334, 334, 334,
      334, 334, 338, 606, 338, 338, 338, 338, 338, 338,
      338, 338, 338, 605, 338, 338, 338, 338, 433, 433,
      604, 603, 602, 601, 433, 346, 346, 346, 346, 600,
      599, 346, 346, 346, 346, 351, 598, 351, 351, 351,
      351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
      351, 615, 615, 615, 615, 615, 615, 615, 615, 615,
      615, 615, 615, 615, 615, 615, 615, 684, 684, 684,
      684, 684, 684, 684, 684, 684, 684, 684, 684, 684,
      684, 684, 684, 597, 596, 595, 594, 593, 592, 589,
      588, 587, 586, 585, 584, 571, 570, 569, 568, 565,
      564, 563, 562, 561, 560, 559, 558, 557, 556, 555,
      554, 551, 550, 549, 548, 547, 546, 545, 544, 543,
      542, 541, 540, 539, 538, 537, 536, 535, 531, 530,
      529, 528, 527, 526, 525, 524, 523, 510, 509, 508,
      507, 506, 503, 499, 498, 497, 496, 492, 491, 490,
      489, 488, 484, 483, 482, 479, 478, 477, 476, 475,
      474, 473, 472, 471, 470, 469, 468, 467, 466, 465,
      464, 463, 462, 461, 460, 459, 458, 457, 456, 455,
      454, 453, 452, 451, 439, 437, 436, 435, 434, 347,
      426, 423, 422, 421, 322, 414, 316, 408, 407, 406,
      401, 400, 399, 398, 397, 396, 395, 394, 391, 390,
      389, 386, 385, 382, 379, 378, 285, 282, 377, 376,
      278, 373, 372, 243, 356, 355, 235, 231, 352, 350,
      349, 348, 218, 347, 337, 206, 333, 202, 318, 186,
      182, 316, 314, 313, 312, 311, 310, 309, 305, 299,
      298, 295, 294, 291, 287, 286, 285, 283, 282, 281,
      280, 260, 278, 277, 272, 270, 263, 262, 260, 256,
      250, 253, 250, 249, 247, 245, 244, 243, 241, 240,
      239, 237, 235, 228, 231, 228, 226, 218, 208, 202,
      199, 186, 182, 768, 94, 94, 85, 77, 77, 39,
      768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
      768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
      768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
      768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
      768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
      768, 768, 768, 768, 768, 768, 768
    } ;
static const short int yy_chk[2738] =
    { 0,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
        2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
        2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
        2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
        2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
        2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
        2, 2, 2, 2, 3, 3, 3, 3, 765, 3,
        5, 5, 3, 3, 3, 27, 27, 3, 6, 6,
        6, 75, 3, 75, 6, 17, 17, 3, 3, 11,
       11, 11, 12, 12, 12, 17, 18, 18, 17, 17,
       17, 19, 19, 19, 28, 28, 18, 29, 29, 18,
       18, 18, 20, 20, 20, 29, 160, 3, 3, 3,
        4, 4, 4, 4, 19, 4, 4, 445, 4, 4,
        4, 21, 48, 4, 160, 20, 22, 163, 4, 17,
       23, 23, 168, 4, 4, 167, 4, 30, 30, 167,
       18, 23, 168, 21, 21, 30, 21, 163, 22, 22,
      445, 22, 23, 23, 23, 41, 41, 41, 45, 45,
       45, 48, 764, 4, 4, 4, 9, 9, 9, 9,
        9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
        9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
        9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
        9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
        9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
        9, 9, 9, 13, 13, 13, 13, 13, 13, 13,
       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
       24, 24, 37, 310, 37, 38, 310, 38, 57, 57,
       57, 24, 60, 60, 763, 37, 37, 37, 38, 38,
       38, 762, 24, 24, 24, 25, 25, 25, 25, 25,
       25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
       25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
       25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
       25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
       25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
       25, 25, 31, 31, 31, 32, 32, 32, 62, 62,
       62, 99, 99, 99, 109, 128, 128, 130, 130, 131,
      131, 133, 133, 198, 198, 31, 761, 109, 32, 33,
       33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
       33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
       33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
       33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
       33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
       33, 33, 33, 33, 33, 33, 35, 35, 35, 35,
       35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
       35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
       35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
       35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
       35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
       35, 35, 35, 49, 53, 53, 53, 61, 61, 61,
       53, 441, 66, 170, 188, 63, 63, 63, 105, 105,
      105, 63, 441, 170, 366, 49, 170, 49, 63, 49,
      108, 108, 108, 63, 121, 49, 205, 205, 49, 49,
       49, 63, 49, 49, 61, 115, 115, 115, 49, 257,
       49, 121, 366, 188, 141, 105, 158, 294, 53, 66,
      141, 294, 158, 180, 180, 180, 257, 108, 574, 63,
      181, 181, 181, 185, 185, 185, 192, 192, 192, 193,
      193, 193, 115, 194, 194, 194, 195, 195, 195, 574,
      192, 192, 192, 193, 193, 193, 369, 194, 194, 194,
      195, 195, 195, 201, 201, 201, 209, 209, 210, 201,
      211, 211, 211, 289, 210, 210, 213, 213, 213, 264,
      264, 192, 369, 217, 217, 217, 194, 289, 195, 217,
      248, 248, 248, 266, 266, 291, 217, 267, 267, 269,
      269, 217, 275, 760, 309, 757, 298, 211, 275, 217,
      298, 314, 291, 309, 314, 330, 330, 201, 317, 317,
      317, 332, 332, 314, 314, 334, 334, 336, 336, 338,
      338, 344, 344, 344, 314, 415, 415, 217, 241, 241,
      241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
      241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
      241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
      241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
      241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
      241, 241, 241, 241, 241, 250, 250, 250, 250, 362,
      371, 250, 339, 418, 418, 405, 250, 756, 339, 339,
      250, 405, 755, 250, 371, 250, 494, 494, 250, 278,
      278, 362, 278, 278, 278, 278, 278, 278, 278, 278,
      278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
      278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
      278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
      278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
      278, 278, 278, 278, 278, 278, 321, 321, 321, 324,
      324, 324, 363, 365, 364, 340, 340, 340, 367, 368,
      321, 321, 321, 324, 324, 324, 340, 342, 342, 342,
      754, 443, 365, 485, 363, 444, 342, 342, 364, 485,
      448, 409, 519, 367, 409, 409, 444, 368, 443, 442,
      368, 448, 340, 341, 341, 519, 341, 341, 341, 341,
      341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
      341, 341, 341, 341, 341, 341, 341, 341, 341, 442,
      341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
      341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
      341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
      343, 343, 343, 446, 370, 504, 504, 343, 752, 343,
      343, 420, 420, 420, 343, 343, 343, 343, 343, 343,
      360, 360, 446, 360, 360, 360, 360, 360, 360, 360,
      370, 360, 360, 360, 360, 360, 360, 360, 360, 360,
      360, 360, 505, 505, 360, 360, 360, 360, 416, 416,
      416, 419, 419, 419, 750, 447, 495, 495, 495, 428,
      428, 428, 416, 416, 416, 419, 419, 419, 428, 428,
      503, 503, 503, 449, 360, 360, 360, 375, 375, 447,
      375, 375, 375, 375, 375, 375, 375, 440, 375, 375,
      375, 375, 375, 375, 375, 375, 375, 375, 375, 449,
      450, 375, 375, 375, 375, 431, 431, 431, 511, 462,
      512, 440, 514, 440, 431, 431, 501, 501, 501, 450,
      561, 561, 517, 521, 749, 501, 501, 748, 512, 747,
      462, 375, 375, 375, 427, 427, 462, 517, 521, 511,
      514, 427, 427, 427, 427, 427, 427, 427, 427, 427,
      427, 427, 427, 427, 427, 427, 427, 427, 427, 427,
      427, 427, 427, 427, 427, 427, 429, 429, 429, 516,
      513, 515, 518, 429, 522, 745, 520, 565, 565, 565,
      429, 429, 429, 429, 429, 429, 432, 432, 432, 520,
      515, 522, 572, 432, 513, 516, 518, 566, 566, 532,
      432, 432, 432, 432, 432, 432, 502, 502, 502, 532,
      567, 567, 575, 502, 576, 572, 573, 577, 578, 579,
      502, 502, 502, 502, 502, 502, 580, 573, 581, 582,
      634, 583, 615, 615, 575, 577, 617, 617, 656, 656,
      744, 681, 743, 581, 576, 742, 578, 684, 684, 579,
      583, 686, 686, 810, 810, 708, 580, 582, 681, 708,
      634, 769, 769, 769, 769, 769, 769, 769, 769, 769,
      769, 769, 769, 769, 769, 769, 769, 770, 770, 770,
      770, 770, 770, 770, 770, 770, 770, 770, 770, 770,
      770, 770, 770, 771, 771, 771, 771, 771, 771, 771,
      771, 771, 771, 771, 771, 771, 771, 771, 771, 772,
      772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
      772, 772, 772, 772, 772, 773, 773, 773, 773, 773,
      773, 773, 773, 773, 773, 773, 773, 773, 773, 773,
      773, 774, 774, 774, 774, 774, 774, 774, 774, 774,
      774, 774, 774, 774, 774, 774, 774, 775, 775, 775,
      775, 775, 775, 775, 775, 775, 775, 775, 775, 775,
      775, 775, 775, 776, 776, 776, 776, 776, 776, 776,
      776, 776, 776, 776, 776, 776, 776, 776, 776, 777,
      777, 777, 777, 777, 777, 777, 777, 777, 777, 777,
      777, 777, 777, 777, 777, 778, 778, 778, 778, 778,
      778, 778, 778, 778, 778, 778, 778, 778, 778, 778,
      778, 779, 779, 779, 779, 779, 779, 779, 779, 779,
      779, 779, 779, 779, 779, 779, 779, 780, 780, 780,
      780, 780, 780, 780, 780, 780, 780, 780, 780, 780,
      780, 780, 780, 781, 781, 781, 781, 781, 781, 781,
      781, 781, 781, 781, 781, 781, 781, 781, 781, 782,
      782, 782, 782, 782, 782, 782, 782, 782, 782, 782,
      782, 782, 782, 782, 782, 783, 783, 783, 783, 740,
      739, 783, 783, 783, 784, 784, 784, 784, 784, 784,
      784, 784, 784, 784, 784, 784, 784, 784, 784, 785,
      785, 785, 785, 738, 737, 785, 785, 785, 786, 736,
      786, 786, 786, 786, 786, 786, 786, 786, 786, 786,
      786, 786, 786, 786, 787, 735, 787, 787, 787, 787,
      787, 787, 787, 787, 787, 787, 787, 787, 787, 787,
      788, 788, 788, 734, 733, 788, 788, 788, 789, 732,
      789, 789, 789, 789, 789, 789, 789, 789, 789, 789,
      789, 789, 789, 789, 790, 731, 790, 790, 790, 790,
      790, 790, 790, 790, 790, 790, 790, 790, 790, 790,
      791, 729, 791, 791, 791, 791, 791, 791, 791, 791,
      791, 791, 791, 791, 791, 791, 792, 792, 792, 792,
      792, 792, 792, 792, 792, 792, 792, 792, 792, 792,
      792, 792, 793, 727, 793, 793, 726, 793, 793, 793,
      725, 724, 793, 793, 723, 722, 721, 793, 794, 794,
      794, 794, 720, 719, 794, 794, 794, 795, 718, 795,
      795, 795, 795, 795, 795, 795, 795, 795, 795, 795,
      795, 795, 795, 796, 796, 796, 796, 717, 715, 796,
      796, 796, 797, 714, 797, 797, 797, 797, 797, 797,
      797, 797, 797, 797, 797, 797, 797, 797, 798, 713,
      798, 798, 798, 798, 798, 798, 798, 798, 798, 712,
      798, 798, 798, 798, 799, 710, 709, 707, 799, 799,
      799, 799, 706, 705, 799, 799, 800, 704, 800, 800,
      800, 800, 800, 800, 800, 800, 800, 800, 800, 800,
      800, 800, 801, 801, 801, 801, 703, 702, 801, 801,
      801, 802, 802, 802, 802, 802, 802, 802, 802, 802,
      802, 802, 802, 802, 802, 802, 802, 803, 803, 803,
      803, 701, 803, 803, 803, 803, 803, 803, 803, 803,
      803, 803, 803, 804, 700, 699, 804, 804, 804, 804,
      804, 804, 804, 698, 804, 804, 804, 804, 804, 805,
      682, 805, 805, 805, 805, 805, 805, 805, 805, 805,
      805, 805, 805, 805, 805, 806, 680, 806, 806, 679,
      806, 806, 806, 678, 677, 806, 806, 675, 674, 672,
      806, 807, 807, 807, 807, 671, 670, 807, 807, 807,
      808, 669, 808, 808, 808, 808, 808, 808, 808, 808,
      808, 808, 808, 808, 808, 808, 809, 809, 668, 809,
      809, 667, 666, 665, 809, 809, 811, 664, 811, 811,
      811, 811, 811, 811, 811, 811, 811, 811, 811, 811,
      811, 811, 812, 663, 812, 812, 812, 812, 812, 812,
      812, 812, 812, 812, 812, 812, 812, 812, 813, 662,
      813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
      813, 813, 813, 813, 814, 814, 661, 660, 814, 814,
      814, 815, 815, 659, 658, 815, 815, 815, 816, 816,
      816, 816, 816, 816, 816, 816, 816, 816, 816, 816,
      816, 816, 816, 816, 817, 817, 817, 817, 817, 817,
      817, 817, 817, 817, 817, 817, 817, 817, 817, 817,
      818, 655, 818, 818, 818, 818, 818, 818, 818, 818,
      818, 653, 818, 818, 818, 818, 819, 819, 652, 651,
      650, 646, 819, 820, 820, 820, 820, 644, 643, 820,
      820, 820, 820, 821, 642, 821, 821, 821, 821, 821,
      821, 821, 821, 821, 821, 821, 821, 821, 821, 822,
      641, 822, 822, 822, 822, 822, 822, 822, 822, 822,
      822, 822, 822, 822, 822, 823, 639, 823, 823, 823,
      823, 823, 823, 823, 823, 823, 823, 823, 823, 823,
      823, 824, 637, 824, 824, 824, 824, 824, 824, 824,
      824, 824, 824, 824, 824, 824, 824, 825, 636, 825,
      825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
      825, 825, 825, 826, 635, 826, 826, 826, 826, 826,
      826, 826, 826, 826, 826, 826, 826, 826, 826, 827,
      827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
      827, 827, 827, 827, 827, 828, 633, 828, 828, 632,
      828, 828, 828, 631, 630, 828, 828, 629, 628, 627,
      828, 829, 829, 829, 829, 626, 625, 829, 829, 829,
      830, 624, 830, 830, 830, 830, 830, 830, 830, 830,
      830, 830, 830, 830, 830, 830, 831, 831, 831, 831,
      623, 621, 831, 831, 831, 832, 832, 619, 612, 611,
      832, 832, 833, 610, 609, 608, 833, 833, 833, 833,
      607, 606, 833, 833, 834, 604, 834, 834, 834, 834,
      834, 834, 834, 834, 834, 834, 834, 834, 834, 834,
      835, 835, 835, 835, 601, 600, 835, 835, 835, 836,
      836, 836, 836, 836, 836, 836, 836, 836, 836, 836,
      836, 836, 836, 836, 836, 837, 837, 837, 837, 599,
      837, 837, 837, 837, 837, 837, 837, 837, 837, 837,
      837, 838, 598, 597, 838, 838, 838, 838, 838, 838,
      838, 596, 838, 838, 838, 838, 838, 839, 595, 839,
      839, 594, 839, 839, 839, 593, 592, 839, 839, 591,
      590, 588, 839, 840, 840, 840, 840, 569, 568, 840,
      840, 840, 841, 564, 841, 841, 841, 841, 841, 841,
      841, 841, 841, 841, 841, 841, 841, 841, 842, 842,
      563, 842, 842, 562, 560, 559, 842, 842, 843, 558,
      843, 843, 843, 843, 843, 843, 843, 843, 843, 843,
      843, 843, 843, 843, 844, 557, 844, 844, 844, 844,
      844, 844, 844, 844, 844, 844, 844, 844, 844, 844,
      845, 556, 845, 845, 845, 845, 845, 845, 845, 845,
      845, 845, 845, 845, 845, 845, 846, 846, 846, 846,
      846, 846, 846, 846, 846, 846, 846, 846, 846, 846,
      846, 846, 847, 847, 847, 847, 555, 554, 847, 847,
      847, 848, 848, 848, 848, 553, 552, 848, 848, 848,
      849, 849, 849, 849, 849, 849, 849, 849, 849, 849,
      849, 849, 849, 849, 849, 849, 850, 850, 850, 850,
      850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
      850, 850, 851, 551, 851, 851, 851, 851, 851, 851,
      851, 851, 851, 549, 851, 851, 851, 851, 852, 852,
      548, 546, 545, 544, 852, 853, 853, 853, 853, 543,
      542, 853, 853, 853, 853, 854, 541, 854, 854, 854,
      854, 854, 854, 854, 854, 854, 854, 854, 854, 854,
      854, 855, 855, 855, 855, 855, 855, 855, 855, 855,
      855, 855, 855, 855, 855, 855, 855, 856, 856, 856,
      856, 856, 856, 856, 856, 856, 856, 856, 856, 856,
      856, 856, 856, 540, 539, 538, 536, 534, 533, 530,
      528, 526, 525, 524, 523, 509, 508, 507, 506, 500,
      499, 498, 497, 496, 492, 491, 490, 489, 488, 487,
      486, 483, 482, 481, 480, 479, 478, 476, 475, 474,
      473, 472, 471, 469, 468, 467, 464, 463, 461, 460,
      459, 458, 457, 454, 453, 452, 451, 439, 437, 436,
      435, 434, 430, 426, 423, 422, 421, 414, 413, 412,
      411, 410, 408, 407, 406, 404, 403, 402, 401, 400,
      399, 398, 397, 396, 395, 394, 393, 392, 391, 390,
      388, 387, 386, 384, 383, 382, 381, 380, 379, 378,
      377, 376, 373, 372, 361, 356, 355, 352, 350, 346,
      337, 327, 326, 325, 323, 318, 315, 313, 312, 311,
      308, 307, 306, 305, 303, 301, 300, 299, 297, 296,
      295, 293, 292, 290, 287, 286, 284, 282, 281, 280,
      276, 263, 262, 243, 240, 239, 234, 231, 226, 222,
      221, 220, 219, 216, 208, 207, 204, 203, 189, 187,
      183, 179, 176, 175, 174, 173, 172, 171, 169, 166,
      165, 162, 161, 159, 156, 155, 154, 153, 151, 149,
      148, 146, 144, 143, 137, 134, 125, 124, 122, 119,
      114, 112, 107, 103, 97, 92, 89, 87, 85, 84,
       83, 80, 76, 74, 73, 71, 67, 65, 59, 55,
       50, 47, 43, 39, 16, 15, 10, 8, 7, 768,
      768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
      768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
      768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
      768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
      768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
      768, 768, 768, 768, 768, 768, 768
    } ;
static yy_state_type yy_last_accepting_state;
static char *yy_last_accepting_cpos;
char *yytext;
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 ( int new_state );
static void yy_pop_state ( void );
int flexscan()
 {
 register yy_state_type yy_current_state;
 register char *yy_cp, *yy_bp;
 register int yy_act;
 static int bracelevel, didadef, indented_code;
 static int doing_rule_action = 0;
 static int option_sense;
 int doing_codeblock = 0;
 int i;
 unsigned char nmdef[2048], myesc();
 if ( yy_init )
  {
  yy_init = 0;
  if ( ! yy_start )
   yy_start = 1;
  if ( ! yyin )
   yyin = stdin;
  if ( ! yyout )
   yyout = stdout;
  if ( ! yy_current_buffer )
   yy_current_buffer =
    yy_create_buffer( yyin, 16384 );
  yy_load_buffer_state();
  }
 while ( 1 )
  {
  yy_cp = yy_c_buf_p;
  *yy_cp = yy_hold_char;
  yy_bp = yy_cp;
  yy_current_state = yy_start;
  yy_current_state += (yy_current_buffer->yy_at_bol);
yy_match:
  do
   {
   register YY_CHAR yy_c = yy_ec[((unsigned int) (unsigned char) *yy_cp)];
   if ( yy_accept[yy_current_state] )
    {
    yy_last_accepting_state = yy_current_state;
    yy_last_accepting_cpos = yy_cp;
    }
   while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
    {
    yy_current_state = (int) yy_def[yy_current_state];
    if ( yy_current_state >= 769 )
     yy_c = yy_meta[(unsigned int) yy_c];
    }
   yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
   ++yy_cp;
   }
  while ( yy_base[yy_current_state] != 2680 );
yy_find_action:
  yy_act = yy_accept[yy_current_state];
  if ( yy_act == 0 )
   {
   yy_cp = yy_last_accepting_cpos;
   yy_current_state = yy_last_accepting_state;
   yy_act = yy_accept[yy_current_state];
   }
  yytext = yy_bp; yyleng = (int) (yy_cp - yy_bp); yy_hold_char = *yy_cp; *yy_cp = '\0'; yy_c_buf_p = yy_cp;;
do_action:
  switch ( yy_act )
 {
   case 0:
   *yy_cp = yy_hold_char;
   yy_cp = yy_last_accepting_cpos;
   yy_current_state = yy_last_accepting_state;
   goto yy_find_action;
case 1:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
indented_code = 1; yy_start = 1 + 2 *(4);
 break;
case 2:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
add_action( yytext ); yy_push_state( 14 );
 break;
case 3:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_push_state( 18 );
 break;
case 4:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
return 260;
 break;
case 5:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
return 261;
 break;
case 6:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   ++linenum;
   line_directive_out( (FILE *) 0, 1 );
   indented_code = 0;
   yy_start = 1 + 2 *(4);
   }
 break;
case 7:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
 break;
case 8:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   sectnum = 2;
   bracelevel = 0;
   mark_defs1();
   line_directive_out( (FILE *) 0, 1 );
   yy_start = 1 + 2 *(2);
   return 259;
   }
 break;
case 9:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yytext_is_array = 0; ++linenum;
 break;
case 10:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yytext_is_array = 1; ++linenum;
 break;
case 11:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_start = 1 + 2 *(17); return 265;
 break;
case 12:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
++linenum;
 break;
case 13:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
++linenum;
 break;
case 14:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
synerr( ("unrecognized '%' directive") );
 break;
case 15:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   strcpy( nmstr, yytext );
   didadef = 0;
   yy_start = 1 + 2 *(5);
   }
 break;
case 16:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
strcpy( nmstr, yytext ); return 262;;
 break;
case 17:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
++linenum;
 break;
case 18:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
add_action( yytext ); ++linenum;
 break;
case 19:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
add_action( yytext ); yy_pop_state();
 break;
case 20:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
add_action( yytext );
 break;
case 21:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
add_action( yytext );
 break;
case 22:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
++linenum; add_action( yytext );
 break;
case 23:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_pop_state();
 break;
case 24:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
linenum = myctoi( yytext );
 break;
case 25:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   flex_free( infilename );
   infilename = copy_string( yytext + 1 );
   infilename[strlen( infilename ) - 1] = '\0';
   }
 break;
case 26:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
 break;
case 27:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
++linenum; yy_start = 1 + 2 *(0);
 break;
case 28:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
add_action( yytext );
 break;
case 29:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   ++linenum;
   add_action( yytext );
   if ( indented_code )
    yy_start = 1 + 2 *(0);
   }
 break;
case 30:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
 break;
case 31:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   strcpy( (char *) nmdef, yytext );
   for ( i = strlen( (char *) nmdef ) - 1;
         i >= 0 && (nmdef[i] == ' ' || nmdef[i] == '\t');
         --i )
    ;
   nmdef[i + 1] = '\0';
   ndinstal( nmstr, nmdef );
   didadef = 1;
   }
 break;
case 32:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   if ( ! didadef )
    synerr( ("incomplete name definition") );
   yy_start = 1 + 2 *(0);
   ++linenum;
   }
 break;
case 33:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
++linenum; yy_start = 1 + 2 *(0);
 break;
case 34:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
option_sense = 1;
 break;
case 35:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
return '=';
 break;
case 36:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
option_sense = ! option_sense;
 break;
case 37:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
csize = option_sense ? 128 : 256;
 break;
case 38:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
csize = option_sense ? 256 : 128;
 break;
case 39:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
long_align = option_sense;
 break;
case 40:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   action_define( "YY_ALWAYS_INTERACTIVE", option_sense );
   }
 break;
case 41:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yytext_is_array = option_sense;
 break;
case 42:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
backing_up_report = option_sense;
 break;
case 43:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
interactive = ! option_sense;
 break;
case 44:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
C_plus_plus = option_sense;
 break;
case 45:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
caseins = ! option_sense;
 break;
case 46:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
caseins = option_sense;
 break;
case 47:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
ddebug = option_sense;
 break;
case 48:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
spprdflt = ! option_sense;
 break;
case 49:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
useecs = option_sense;
 break;
case 50:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   useecs = usemecs = 0;
   use_read = fullspd = 1;
   }
 break;
case 51:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   useecs = usemecs = 0;
   use_read = fulltbl = 1;
   }
 break;
case 52:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{ if ( ! option_sense ) action_define( "YY_NO_INPUT", 1 ); };
 break;
case 53:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
interactive = option_sense;
 break;
case 54:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
lex_compat = option_sense;
 break;
case 55:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   action_define( "YY_MAIN", option_sense );
   do_yywrap = ! option_sense;
   }
 break;
case 56:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
usemecs = option_sense;
 break;
case 57:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   action_define( "YY_NEVER_INTERACTIVE", option_sense );
   }
 break;
case 58:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
performance_report += option_sense ? 1 : -1;
 break;
case 59:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yytext_is_array = ! option_sense;
 break;
case 60:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
use_read = option_sense;
 break;
case 61:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
reject_really_used = option_sense;
 break;
case 62:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
action_define( "YY_STACK_USED", option_sense );
 break;
case 63:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
do_stdinit = option_sense;
 break;
case 64:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
use_stdout = option_sense;
 break;
case 65:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{ if ( ! option_sense ) action_define( "YY_NO_UNPUT", 1 ); };
 break;
case 66:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
printstats = option_sense;
 break;
case 67:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
nowarn = ! option_sense;
 break;
case 68:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
do_yylineno = option_sense;
 break;
case 69:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yymore_really_used = option_sense;
 break;
case 70:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
do_yywrap = option_sense;
 break;
case 71:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{ if ( ! option_sense ) action_define( "YY_NO_PUSH_STATE", 1 ); };
 break;
case 72:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{ if ( ! option_sense ) action_define( "YY_NO_POP_STATE", 1 ); };
 break;
case 73:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{ if ( ! option_sense ) action_define( "YY_NO_TOP_STATE", 1 ); };
 break;
case 74:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{ if ( ! option_sense ) action_define( "YY_NO_SCAN_BUFFER", 1 ); };
 break;
case 75:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{ if ( ! option_sense ) action_define( "YY_NO_SCAN_BYTES", 1 ); };
 break;
case 76:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{ if ( ! option_sense ) action_define( "YY_NO_SCAN_STRING", 1 ); };
 break;
case 77:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
return 266;
 break;
case 78:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
return 267;
 break;
case 79:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
return 268;
 break;
case 80:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   strcpy( nmstr, yytext + 1 );
   nmstr[strlen( nmstr ) - 1] = '\0';
   return 262;
   }
 break;
case 81:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   format_synerr( ("unrecognized %%option: %s"),
    yytext );
   yy_start = 1 + 2 *(13);
   }
 break;
case 82:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
++linenum; yy_start = 1 + 2 *(0);
 break;
case 83:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
++bracelevel; do { *yy_cp = yy_hold_char; yy_c_buf_p = yy_cp = yy_bp + 2 - 0; yytext = yy_bp; yyleng = (int) (yy_cp - yy_bp); yy_hold_char = *yy_cp; *yy_cp = '\0'; yy_c_buf_p = yy_cp;; } while ( 0 );
 break;
case 84:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
--bracelevel; do { *yy_cp = yy_hold_char; yy_c_buf_p = yy_cp = yy_bp + 2 - 0; yytext = yy_bp; yyleng = (int) (yy_cp - yy_bp); yy_hold_char = *yy_cp; *yy_cp = '\0'; yy_c_buf_p = yy_cp;; } while ( 0 );
 break;
case 85:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
add_action( yytext );
 break;
case 86:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   if ( bracelevel <= 0 )
    {
    do { *yy_cp = yy_hold_char; yy_c_buf_p = yy_cp = yy_bp + 0 - 0; yytext = yy_bp; yyleng = (int) (yy_cp - yy_bp); yy_hold_char = *yy_cp; *yy_cp = '\0'; yy_c_buf_p = yy_cp;; } while ( 0 );
    { if ( ! yy_current_buffer ) yy_current_buffer = yy_create_buffer( yyin, 16384 ); yy_current_buffer->yy_at_bol = 1; };
    mark_prolog();
    yy_start = 1 + 2 *(1);
    }
   else
    add_action( yytext );
   }
 break;
case 87:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
add_action( yytext );
 break;
case 88:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
++linenum; add_action( yytext );
 break;
case (166 + 2 + 1):
{
   mark_prolog();
   sectnum = 0;
   return 0;
   }
 break;
case 89:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
++linenum;
 break;
case 90:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   indented_code = 0;
   doing_codeblock = 1;
   bracelevel = 1;
   yy_start = 1 + 2 *(16);
   }
 break;
case 91:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_start = 1 + 2 *(6); return '<';
 break;
case 92:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
return '^';
 break;
case 93:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_start = 1 + 2 *(9); return '"';
 break;
case 94:
*yy_cp = yy_hold_char;
yy_c_buf_p = yy_cp = yy_bp + 1;
yytext = yy_bp; yyleng = (int) (yy_cp - yy_bp); yy_hold_char = *yy_cp; *yy_cp = '\0'; yy_c_buf_p = yy_cp;;
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_start = 1 + 2 *(8); return '{';
 break;
case 95:
*yy_cp = yy_hold_char;
yy_c_buf_p = yy_cp = yy_bp + 1;
yytext = yy_bp; yyleng = (int) (yy_cp - yy_bp); yy_hold_char = *yy_cp; *yy_cp = '\0'; yy_c_buf_p = yy_cp;;
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
return '$';
 break;
case 96:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   bracelevel = 1;
   yy_start = 1 + 2 *(16);
   if ( in_rule )
    {
    doing_rule_action = 1;
    in_rule = 0;
    return '\n';
    }
   }
 break;
case 97:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
continued_action = 1; ++linenum; return '\n';
 break;
case 98:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   do { *yy_cp = yy_hold_char; yy_c_buf_p = yy_cp = yy_bp + yyleng - 2 - 0; yytext = yy_bp; yyleng = (int) (yy_cp - yy_bp); yy_hold_char = *yy_cp; *yy_cp = '\0'; yy_c_buf_p = yy_cp;; } while ( 0 );
   bracelevel = 0;
   continued_action = 0;
   yy_start = 1 + 2 *(12);
   }
 break;
case 99:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
 break;
case 100:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   bracelevel = 0;
   continued_action = 0;
   yy_start = 1 + 2 *(12);
   if ( in_rule )
    {
    doing_rule_action = 1;
    in_rule = 0;
    return '\n';
    }
   }
 break;
case 101:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   bracelevel = 0;
   continued_action = 0;
   yy_start = 1 + 2 *(12);
   yyunput( '\n', yytext );
   if ( in_rule )
    {
    doing_rule_action = 1;
    in_rule = 0;
    return '\n';
    }
   }
 break;
case 102:
case 103:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
return 264;
 break;
case 104:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   sectnum = 3;
   yy_start = 1 + 2 *(3);
   return 0;
   }
 break;
case 105:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   int cclval;
   strcpy( nmstr, yytext );
   if ( (cclval = ccllookup( (unsigned char *) nmstr )) != 0 )
    {
    if ( input() != ']' )
     synerr( ("bad character class") );
    yylval = cclval;
    ++cclreuse;
    return 263;
    }
   else
    {
    cclinstal( (unsigned char *) nmstr, lastccl + 1 );
    do { *yy_cp = yy_hold_char; yy_c_buf_p = yy_cp = yy_bp + 1 - 0; yytext = yy_bp; yyleng = (int) (yy_cp - yy_bp); yy_hold_char = *yy_cp; *yy_cp = '\0'; yy_c_buf_p = yy_cp;; } while ( 0 );
    yy_start = 1 + 2 *(10);
    return '[';
    }
   }
 break;
case 106:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   register unsigned char *nmdefptr;
   unsigned char *ndlookup();
   strcpy( nmstr, yytext + 1 );
   nmstr[yyleng - 2] = '\0';
   if ( (nmdefptr = ndlookup( nmstr )) == 0 )
    format_synerr(
     ("undefined definition {%s}"),
      nmstr );
   else
    {
    int len = strlen( (char *) nmdefptr );
    if ( lex_compat || nmdefptr[0] == '^' ||
         (len > 0 && nmdefptr[len - 1] == '$') )
     {
     for ( i = strlen( (char *) nmdefptr ) - 1; i >= 0; --i ) yyunput( ((char *) nmdefptr)[i], yytext );
     if ( nmdefptr[0] == '^' )
      yy_start = 1 + 2 *(7);
     }
    else
     {
     yyunput( ')', yytext );
     for ( i = strlen( (char *) nmdefptr ) - 1; i >= 0; --i ) yyunput( ((char *) nmdefptr)[i], yytext );
     yyunput( '(', yytext );
     }
    }
   }
 break;
case 107:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
return (unsigned char) yytext[0];
 break;
case 108:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yylval = (unsigned char) yytext[0]; return 257;;
 break;
case 109:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
return (unsigned char) yytext[0];
 break;
case 110:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_start = 1 + 2 *(1); return '>';
 break;
case 111:
*yy_cp = yy_hold_char;
yy_c_buf_p = yy_cp = yy_bp + 1;
yytext = yy_bp; yyleng = (int) (yy_cp - yy_bp); yy_hold_char = *yy_cp; *yy_cp = '\0'; yy_c_buf_p = yy_cp;;
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_start = 1 + 2 *(7); return '>';
 break;
case 112:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
strcpy( nmstr, yytext ); return 262;;
 break;
case 113:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   format_synerr( ("bad <start condition>: %s"),
    yytext );
   }
 break;
case 114:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_start = 1 + 2 *(1); return '^';
 break;
case 115:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yylval = (unsigned char) yytext[0]; return 257;;
 break;
case 116:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_start = 1 + 2 *(1); return '"';
 break;
case 117:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   synerr( ("missing quote") );
   yy_start = 1 + 2 *(1);
   ++linenum;
   return '"';
   }
 break;
case 118:
*yy_cp = yy_hold_char;
yy_c_buf_p = yy_cp = yy_bp + 1;
yytext = yy_bp; yyleng = (int) (yy_cp - yy_bp); yy_hold_char = *yy_cp; *yy_cp = '\0'; yy_c_buf_p = yy_cp;;
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_start = 1 + 2 *(11); return '^';
 break;
case 119:
*yy_cp = yy_hold_char;
yy_c_buf_p = yy_cp = yy_bp + 1;
yytext = yy_bp; yyleng = (int) (yy_cp - yy_bp); yy_hold_char = *yy_cp; *yy_cp = '\0'; yy_c_buf_p = yy_cp;;
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
return '^';
 break;
case 120:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_start = 1 + 2 *(11); yylval = (unsigned char) yytext[0]; return 257;;
 break;
case 121:
*yy_cp = yy_hold_char;
yy_c_buf_p = yy_cp = yy_bp + 1;
yytext = yy_bp; yyleng = (int) (yy_cp - yy_bp); yy_hold_char = *yy_cp; *yy_cp = '\0'; yy_c_buf_p = yy_cp;;
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
return '-';
 break;
case 122:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yylval = (unsigned char) yytext[0]; return 257;;
 break;
case 123:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_start = 1 + 2 *(1); return ']';
 break;
case 124:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   synerr( ("bad character class") );
   yy_start = 1 + 2 *(1);
   return ']';
   }
 break;
case 125:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_start = 1 + 2 *(11); return 269;
 break;
case 126:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_start = 1 + 2 *(11); return 270;
 break;
case 127:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_start = 1 + 2 *(11); return 271;
 break;
case 128:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_start = 1 + 2 *(11); return 272;
 break;
case 129:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_start = 1 + 2 *(11); return 273;
 break;
case 130:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_start = 1 + 2 *(11); return 274;
 break;
case 131:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_start = 1 + 2 *(11); return 275;
 break;
case 132:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_start = 1 + 2 *(11); return 276;
 break;
case 133:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_start = 1 + 2 *(11); return 277;
 break;
case 134:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_start = 1 + 2 *(11); return 278;
 break;
case 135:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_start = 1 + 2 *(11); return 279;
 break;
case 136:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_start = 1 + 2 *(11); return 280;
 break;
case 137:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   format_synerr(
    ("bad character class expression: %s"),
     yytext );
   yy_start = 1 + 2 *(11); return 269;
   }
 break;
case 138:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   yylval = myctoi( yytext );
   return 258;
   }
 break;
case 139:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
return ',';
 break;
case 140:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_start = 1 + 2 *(1); return '}';
 break;
case 141:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   synerr( ("bad character inside {}'s") );
   yy_start = 1 + 2 *(1);
   return '}';
   }
 break;
case 142:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   synerr( ("missing }") );
   yy_start = 1 + 2 *(1);
   ++linenum;
   return '}';
   }
 break;
case 143:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
bracelevel = 0;
 break;
case 144:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
add_action( yytext ); yy_push_state( 14 );
 break;
case 145:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   add_action( yytext );
   if ( all_upper( yytext ) ) reject = 1;;
   }
 break;
case 146:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   add_action( yytext );
   if ( all_lower( yytext ) ) yymore_used = 1;;
   }
 break;
case 147:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
add_action( yytext );
 break;
case 148:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   ++linenum;
   add_action( yytext );
   if ( bracelevel == 0 ||
        (doing_codeblock && indented_code) )
    {
    if ( doing_rule_action )
     add_action( "\tYY_BREAK\n" );
    doing_rule_action = doing_codeblock = 0;
    yy_start = 1 + 2 *(1);
    }
   }
 break;
case 149:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
add_action( yytext ); ++bracelevel;
 break;
case 150:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
add_action( yytext ); --bracelevel;
 break;
case 151:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
add_action( yytext );
 break;
case 152:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
add_action( yytext );
 break;
case 153:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
add_action( yytext );
 break;
case 154:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
add_action( yytext ); yy_start = 1 + 2 *(15);
 break;
case 155:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   ++linenum;
   add_action( yytext );
   if ( bracelevel == 0 )
    {
    if ( doing_rule_action )
     add_action( "\tYY_BREAK\n" );
    doing_rule_action = 0;
    yy_start = 1 + 2 *(1);
    }
   }
 break;
case 156:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
add_action( yytext );
 break;
case 157:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
add_action( yytext );
 break;
case 158:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
add_action( yytext );
 break;
case 159:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
++linenum; add_action( yytext );
 break;
case 160:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
add_action( yytext ); yy_start = 1 + 2 *(12);
 break;
case 161:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
add_action( yytext );
 break;
case (166 + 14 + 1):
case (166 + 12 + 1):
case (166 + 15 + 1):
{
   synerr( ("EOF encountered inside an action") );
   return 0;
   }
 break;
case 162:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
{
   yylval = myesc( (unsigned char *) yytext );
   if ( ((yy_start - 1) / 2) == 10 )
    yy_start = 1 + 2 *(11);
   return 257;
   }
 break;
case 163:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
(void) fwrite( yytext, yyleng, 1, yyout );
 break;
case (166 + 3 + 1):
sectnum = 0; return 0;
 break;
case 164:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
format_synerr( ("bad character: %s"), yytext );
 break;
case 165:
if ( yyleng > 0 ) yy_current_buffer->yy_at_bol = (yytext[yyleng - 1] == '\n');
yy_fatal_error( "flex scanner jammed" );
 break;
case (166 + 0 + 1):
case (166 + 1 + 1):
case (166 + 4 + 1):
case (166 + 5 + 1):
case (166 + 6 + 1):
case (166 + 7 + 1):
case (166 + 8 + 1):
case (166 + 9 + 1):
case (166 + 10 + 1):
case (166 + 11 + 1):
case (166 + 13 + 1):
case (166 + 16 + 1):
case (166 + 17 + 1):
case (166 + 18 + 1):
 return 0;
 case 166:
  {
  int yy_amount_of_matched_text = (int) (yy_cp - yytext) - 1;
  *yy_cp = yy_hold_char;
  if ( yy_current_buffer->yy_buffer_status == 0 )
   {
   yy_n_chars = yy_current_buffer->yy_n_chars;
   yy_current_buffer->yy_input_file = yyin;
   yy_current_buffer->yy_buffer_status = 1;
   }
  if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
   {
   yy_state_type yy_next_state;
   yy_c_buf_p = yytext + yy_amount_of_matched_text;
   yy_current_state = yy_get_previous_state();
   yy_next_state = yy_try_NUL_trans( yy_current_state );
   yy_bp = yytext + 0;
   if ( yy_next_state )
    {
    yy_cp = ++yy_c_buf_p;
    yy_current_state = yy_next_state;
    goto yy_match;
    }
   else
    {
    yy_cp = yy_c_buf_p;
    goto yy_find_action;
    }
   }
  else switch ( yy_get_next_buffer() )
   {
   case 1:
    {
    yy_did_buffer_switch_on_eof = 0;
    if ( yywrap() )
     {
     yy_c_buf_p = yytext + 0;
     yy_act = (166 + ((yy_start - 1) / 2) + 1);
     goto do_action;
     }
    else
     {
     if ( ! yy_did_buffer_switch_on_eof )
      yyrestart( yyin );
     }
    break;
    }
   case 0:
    yy_c_buf_p =
     yytext + yy_amount_of_matched_text;
    yy_current_state = yy_get_previous_state();
    yy_cp = yy_c_buf_p;
    yy_bp = yytext + 0;
    goto yy_match;
   case 2:
    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 + 0;
    goto yy_find_action;
   }
  break;
  }
 default:
  yy_fatal_error( "fatal flex scanner internal error--no action found" );
 }
  }
 }
static int yy_get_next_buffer()
 {
 register char *dest = yy_current_buffer->yy_ch_buf;
 register char *source = yytext;
 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 )
  {
  if ( yy_c_buf_p - yytext - 0 == 1 )
   {
   return 1;
   }
  else
   {
   return 2;
   }
  }
 number_to_move = (int) (yy_c_buf_p - yytext) - 1;
 for ( i = 0; i < number_to_move; ++i )
  *(dest++) = *(source++);
 if ( yy_current_buffer->yy_buffer_status == 2 )
  yy_n_chars = 0;
 else
  {
  int num_to_read =
   yy_current_buffer->yy_buf_size - number_to_move - 1;
  while ( num_to_read <= 0 )
   {
   YY_BUFFER_STATE b = yy_current_buffer;
   int yy_c_buf_p_offset =
    (int) (yy_c_buf_p - b->yy_ch_buf);
   if ( b->yy_is_our_buffer )
    {
    int new_size = b->yy_buf_size * 2;
    if ( new_size <= 0 )
     b->yy_buf_size += b->yy_buf_size / 8;
    else
     b->yy_buf_size *= 2;
    b->yy_ch_buf = (char *)
     yy_flex_realloc( (void *) b->yy_ch_buf,
        b->yy_buf_size + 2 );
    }
   else
    b->yy_ch_buf = 0;
   if ( ! b->yy_ch_buf )
    yy_fatal_error( "fatal error - scanner input buffer overflow" );
   yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
   num_to_read = yy_current_buffer->yy_buf_size -
      number_to_move - 1;
   }
  if ( num_to_read > 8192 )
   num_to_read = 8192;
  if ( yy_current_buffer->yy_is_interactive ) { int c = '*', n; for ( n = 0; n < num_to_read && (c = _IO_getc (yyin)) != (-1) && c != '\n'; ++n ) (&yy_current_buffer->yy_ch_buf[number_to_move])[n] = (char) c; if ( c == '\n' ) (&yy_current_buffer->yy_ch_buf[number_to_move])[n++] = (char) c; if ( c == (-1) && ferror( yyin ) ) yy_fatal_error( "input in flex scanner failed" ); yy_n_chars = n; } else if ( ((yy_n_chars = fread( (&yy_current_buffer->yy_ch_buf[number_to_move]), 1, num_to_read, yyin )) == 0) && ferror( yyin ) ) yy_fatal_error( "input in flex scanner failed" );;
  }
 if ( yy_n_chars == 0 )
  {
  if ( number_to_move == 0 )
   {
   ret_val = 1;
   yyrestart( yyin );
   }
  else
   {
   ret_val = 2;
   yy_current_buffer->yy_buffer_status =
    2;
   }
  }
 else
  ret_val = 0;
 yy_n_chars += number_to_move;
 yy_current_buffer->yy_ch_buf[yy_n_chars] = 0;
 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = 0;
 yytext = &yy_current_buffer->yy_ch_buf[0];
 return ret_val;
 }
static yy_state_type yy_get_previous_state()
 {
 register yy_state_type yy_current_state;
 register char *yy_cp;
 yy_current_state = yy_start;
 yy_current_state += (yy_current_buffer->yy_at_bol);
 for ( yy_cp = yytext + 0; yy_cp < yy_c_buf_p; ++yy_cp )
  {
  register YY_CHAR yy_c = (*yy_cp ? yy_ec[((unsigned int) (unsigned char) *yy_cp)] : 1);
  if ( yy_accept[yy_current_state] )
   {
   yy_last_accepting_state = yy_current_state;
   yy_last_accepting_cpos = yy_cp;
   }
  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
   {
   yy_current_state = (int) yy_def[yy_current_state];
   if ( yy_current_state >= 769 )
    yy_c = yy_meta[(unsigned int) yy_c];
   }
  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
  }
 return yy_current_state;
 }
static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
 {
 register int yy_is_jam;
 register char *yy_cp = yy_c_buf_p;
 register YY_CHAR yy_c = 1;
 if ( yy_accept[yy_current_state] )
  {
  yy_last_accepting_state = yy_current_state;
  yy_last_accepting_cpos = yy_cp;
  }
 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  {
  yy_current_state = (int) yy_def[yy_current_state];
  if ( yy_current_state >= 769 )
   yy_c = yy_meta[(unsigned int) yy_c];
  }
 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 yy_is_jam = (yy_current_state == 768);
 return yy_is_jam ? 0 : yy_current_state;
 }
static void yyunput( int c, register char *yy_bp )
 {
 register char *yy_cp = yy_c_buf_p;
 *yy_cp = yy_hold_char;
 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
  {
  register int number_to_move = yy_n_chars + 2;
  register char *dest = &yy_current_buffer->yy_ch_buf[
     yy_current_buffer->yy_buf_size + 2];
  register char *source =
    &yy_current_buffer->yy_ch_buf[number_to_move];
  while ( source > yy_current_buffer->yy_ch_buf )
   *--dest = *--source;
  yy_cp += (int) (dest - source);
  yy_bp += (int) (dest - source);
  yy_n_chars = yy_current_buffer->yy_buf_size;
  if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
   yy_fatal_error( "flex scanner push-back overflow" );
  }
 *--yy_cp = (char) c;
 yytext = yy_bp;
 yy_hold_char = *yy_cp;
 yy_c_buf_p = yy_cp;
 }
static int input()
 {
 int c;
 *yy_c_buf_p = yy_hold_char;
 if ( *yy_c_buf_p == 0 )
  {
  if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
   *yy_c_buf_p = '\0';
  else
   {
   yytext = yy_c_buf_p;
   ++yy_c_buf_p;
   switch ( yy_get_next_buffer() )
    {
    case 1:
     {
     if ( yywrap() )
      {
      yy_c_buf_p =
      yytext + 0;
      return (-1);
      }
     if ( ! yy_did_buffer_switch_on_eof )
      yyrestart( yyin );
     return input();
     }
    case 0:
     yy_c_buf_p = yytext + 0;
     break;
    case 2:
     yy_fatal_error( "unexpected last match in input()" );
    }
   }
  }
 c = *(unsigned char *) yy_c_buf_p;
 *yy_c_buf_p = '\0';
 yy_hold_char = *++yy_c_buf_p;
 yy_current_buffer->yy_at_bol = (c == '\n');
 return c;
 }
void yyrestart( FILE *input_file )
 {
 if ( ! yy_current_buffer )
  yy_current_buffer = yy_create_buffer( yyin, 16384 );
 yy_init_buffer( yy_current_buffer, input_file );
 yy_load_buffer_state();
 }
void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
 {
 if ( yy_current_buffer == new_buffer )
  return;
 if ( yy_current_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();
 yy_did_buffer_switch_on_eof = 1;
 }
void yy_load_buffer_state( void )
 {
 yy_n_chars = yy_current_buffer->yy_n_chars;
 yytext = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
 yyin = yy_current_buffer->yy_input_file;
 yy_hold_char = *yy_c_buf_p;
 }
YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
 {
 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;
 b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
 if ( ! b->yy_ch_buf )
  yy_fatal_error( "out of dynamic memory in yy_create_buffer()" );
 b->yy_is_our_buffer = 1;
 yy_init_buffer( b, file );
 return b;
 }
void yy_delete_buffer( YY_BUFFER_STATE b )
 {
 if ( b == yy_current_buffer )
  yy_current_buffer = (YY_BUFFER_STATE) 0;
 if ( b->yy_is_our_buffer )
  yy_flex_free( (void *) b->yy_ch_buf );
 yy_flex_free( (void *) b );
 }
extern int isatty ( int );
void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
 {
 yy_flush_buffer( b );
 b->yy_input_file = file;
 b->yy_fill_buffer = 1;
 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
 }
void yy_flush_buffer( YY_BUFFER_STATE b )
 {
 b->yy_n_chars = 0;
 b->yy_ch_buf[0] = 0;
 b->yy_ch_buf[1] = 0;
 b->yy_buf_pos = &b->yy_ch_buf[0];
 b->yy_at_bol = 1;
 b->yy_buffer_status = 0;
 if ( b == yy_current_buffer )
  yy_load_buffer_state();
 }
YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
 {
 YY_BUFFER_STATE b;
 if ( size < 2 ||
      base[size-2] != 0 ||
      base[size-1] != 0 )
  return 0;
 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
 if ( ! b )
  yy_fatal_error( "out of dynamic memory in yy_scan_buffer()" );
 b->yy_buf_size = size - 2;
 b->yy_buf_pos = b->yy_ch_buf = base;
 b->yy_is_our_buffer = 0;
 b->yy_input_file = 0;
 b->yy_n_chars = b->yy_buf_size;
 b->yy_is_interactive = 0;
 b->yy_at_bol = 1;
 b->yy_fill_buffer = 0;
 b->yy_buffer_status = 0;
 yy_switch_to_buffer( b );
 return b;
 }
YY_BUFFER_STATE yy_scan_string( const char *str )
 {
 int len;
 for ( len = 0; str[len]; ++len )
  ;
 return yy_scan_bytes( str, len );
 }
YY_BUFFER_STATE yy_scan_bytes( const char *bytes, int len )
 {
 YY_BUFFER_STATE b;
 char *buf;
 yy_size_t n;
 int i;
 n = len + 2;
 buf = (char *) yy_flex_alloc( n );
 if ( ! buf )
  yy_fatal_error( "out of dynamic memory in yy_scan_bytes()" );
 for ( i = 0; i < len; ++i )
  buf[i] = bytes[i];
 buf[len] = buf[len+1] = 0;
 b = yy_scan_buffer( buf, n );
 if ( ! b )
  yy_fatal_error( "bad buffer in yy_scan_bytes()" );
 b->yy_is_our_buffer = 1;
 return b;
 }
static void yy_push_state( int new_state )
 {
 if ( yy_start_stack_ptr >= yy_start_stack_depth )
  {
  yy_size_t new_size;
  yy_start_stack_depth += 25;
  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 - 1) / 2);
 yy_start = 1 + 2 *(new_state);
 }
static void yy_pop_state()
 {
 if ( --yy_start_stack_ptr < 0 )
  yy_fatal_error( "start-condition stack underflow" );
 yy_start = 1 + 2 *(yy_start_stack[yy_start_stack_ptr]);
 }
static void yy_fatal_error( const char msg[] )
 {
 (void) fprintf( err, "%s\n", msg );
 exit( 2 );
 }
static void *yy_flex_alloc( yy_size_t size )
 {
 return (void *) malloc( size );
 }
static void *yy_flex_realloc( void *ptr, yy_size_t size )
 {
 return (void *) realloc( ptr, size );
 }
static void yy_flex_free( void *ptr )
 {
 free( ptr );
 }
int yywrap()
 {
 if ( --num_input_files > 0 )
  {
  set_input_file( *++input_files );
  return 0;
  }
 else
  return 1;
 }
void set_input_file( file )
char *file;
 {
 if ( file )
  {
  infilename = copy_string( file );
  yyin = fopen( infilename, "r" );
  if ( yyin == ((void *)0) )
   lerrsf( ("can't open %s"), file );
  }
 else
  {
  yyin = stdin;
  infilename = copy_string( "<stdin>" );
  }
 linenum = 1;
 }
void *flex_alloc( size )
size_t size;
 {
 return (void *) malloc( size );
 }
void *flex_realloc( ptr, size )
void *ptr;
size_t size;
 {
 return (void *) realloc( ptr, size );
 }
void flex_free( ptr )
void *ptr;
 {
 if ( ptr )
  free( ptr );
 }



More information about the llvm-dev mailing list