]> andersk Git - splint.git/commitdiff
Merged this branch with the one in the splint.sf.net repository.
authordrl7x <drl7x>
Sat, 27 Jul 2002 04:40:52 +0000 (04:40 +0000)
committerdrl7x <drl7x>
Sat, 27 Jul 2002 04:40:52 +0000 (04:40 +0000)
83 files changed:
Makefile.am
Makefile.in
lib/posix.h
lib/standard.h
lib/unix.h
src/Headers/constraint.h
src/Headers/constraintExpr.h
src/Headers/constraintList.h
src/Headers/cstringList.h
src/Headers/cstringSList.h
src/Headers/exprChecks.h
src/Headers/fileLib.h
src/Headers/fileloc.h
src/Headers/flag_codes.h
src/Headers/flags.h
src/Headers/forwardTypes.h
src/Headers/general.h
src/Headers/lctype.h
src/Headers/llmain.h
src/Headers/qtype.h
src/Headers/qual.h
src/Headers/sort.h
src/Headers/splintMacros.nf
src/Headers/uentry.h
src/Headers/uentryList.h
src/Makefile.am
src/Makefile.in
src/abstract.c
src/cgrammar.c.der
src/cgrammar.y
src/clabstract.c
src/constraint.c
src/constraintExpr.c
src/constraintGeneration.c
src/constraintList.c
src/constraintResolve.c
src/constraintTerm.c
src/context.c
src/cpplib.c
src/cppmain.c
src/cscanner.l
src/cstringList.c
src/ctbase.i
src/cttable.i
src/ctype.c
src/exprChecks.c
src/exprNode.c
src/fileTable.c
src/fileloc.c
src/flags.c
src/flags.def
src/general.c
src/idDecl.c
src/lclinit.c
src/llerror.c
src/llgrammar.c.der
src/llgrammar.y
src/llmain.c
src/lltok.c
src/loopHeuristics.c
src/lslinit.c
src/message.c
src/osd.c
src/qtype.c
src/qual.c
src/qualList.c
src/sRef.c
src/signature.c.der
src/uentry.c
src/uentryList.c
src/usymtab.c
src/usymtab_interface.c
test/Makefile
test/Makefile.am
test/Makefile.in
test/ansireserved.expect
test/db1.expect
test/flags.expect
test/null6.lcd
test/tests2.2.expect
test/tests2.4/Makefile
test/tests2.5/newlint.lcd
test/utypes.expect

index 3beeb1d1ed222197099ad1811f6c2b65bd5794f6..38450a1f1346237a22814f93537338d5b135e8fa 100644 (file)
@@ -29,7 +29,7 @@
 AUTOMAKE_OPTIONS = 1.5 foreign
 
 binaryfixscript = ./fixBinaryDist.sh
-SUBDIRS =   lib imports test doc src
+SUBDIRS =   src lib imports test doc
 
 binaryDir = bin
 binaryDirFiles =  $(binaryDir)/Makefile.am $(binaryDir)/Makefile.in
index d299af7123db05a7f70815643b3f4ae755e8e7d7..70349f6f5dea82d36a77560083c6903509aacf17 100644 (file)
@@ -88,7 +88,7 @@ install_sh = @install_sh@
 AUTOMAKE_OPTIONS = 1.5 foreign
 
 binaryfixscript = ./fixBinaryDist.sh
-SUBDIRS = lib imports test doc src
+SUBDIRS = src lib imports test doc
 
 binaryDir = bin
 binaryDirFiles = $(binaryDir)/Makefile.am $(binaryDir)/Makefile.in
index 924efa8d2951243d3f17f95e3f03b883d2dc7014..afac9e471cbbfd1b8791ce471afb0210c304736f 100644 (file)
@@ -229,13 +229,13 @@ struct group {
   char **gr_mem;
 };
 
-/* evans 2002-07-09: added observer annotation (reported by Enrico Scholz). */
-
-/*@observer@*/ /*@null@*/ struct group * getgrgid (gid_t gid)
-   /*@modifies errno@*/;
+       extern /*@null@*/ struct group *
+getgrgid (gid_t gid)
+       /*@modifies errno@*/;
 
-/*@observer@*/ /*@null@*/ struct group *getgrnam (const char *nm)
-   /*@modifies errno@*/;
+       extern /*@null@*/ struct group *
+getgrnam (const char *nm)
+       /*@modifies errno@*/;
 
 /*
 ** limits.h
@@ -301,11 +301,13 @@ struct passwd {
   char *pw_shell;
 } ;
 
-/*@observer@*/ /*@null@*/ struct passwd *getpwnam (const char *)
-   /*@modifies errno@*/  /*@ensures maxRead(result) == 0 /\ maxSet(result) == 0 @*/;
+       extern /*@observer@*/ /*@null@*/ struct passwd *
+       getpwnam (const char *)
+       /*@modifies errno@*/  /*@ensures maxRead(result) == 0 /\ maxSet(result) == 0 @*/;
 
-/*@observer@*/ /*@null@*/ struct passwd *getpwuid (uid_t uid)
-   /*@modifies errno@*/  /*@ensures maxRead(result) == 0 /\ maxSet(result) == 0 @*/;
+       extern /*@observer@*/ /*@null@*/ struct passwd *
+getpwuid (uid_t uid)
+       /*@modifies errno@*/  /*@ensures maxRead(result) == 0 /\ maxSet(result) == 0 @*/;
 
 /*
 ** setjmp.h
@@ -313,9 +315,13 @@ struct passwd {
 
 typedef /*@abstract@*/ /*@mutable@*/ void *sigjmp_buf;
 
-/*@mayexit@*/ void siglongjmp (sigjmp_buf env, int val)        /*@*/;
+       extern /*@mayexit@*/ void
+siglongjmp (sigjmp_buf env, int val)
+       /*@*/;
 
-int sigsetjmp (/*@out@*/ sigjmp_buf env, int savemask) /*@modifies env@*/;
+       extern int
+sigsetjmp (/*@out@*/ sigjmp_buf env, int savemask)
+       /*@modifies env@*/;
 
 /*
 ** signal.h
index 6623d8b7823dff17b5a41fb0b5461ed25be167aa..caed5a73c0de897497c74ca3b5cec122269d1779 100644 (file)
@@ -1,5 +1,5 @@
 /*
-** standard.h --- ISO C99 Standard Library for Splint.
+** satndard.h --- ISO C99 Standard Library for Splint.
 **
 ** Process with -DSTRICT to get strict library.
 */
@@ -196,167 +196,41 @@ struct lconv *localeconv (void) /*@*/ ;
 
 /*
 ** math.h
-**
-** evans 2002-07-03: updated from ISO C99 (http://www.vmunix.com/~gabor/c/draft.html)
 */
 
-typedef float float_t;
-typedef double double_t;
-
 /*@constant double HUGE_VAL; @*/
-/*@constant float HUGE_VALF; @*/
-/*@constant long double HUGE_VALL; @*/
-
-/*@constant float INFINITY; @*/
-
-/*@constant float NAN; @*/
-  /*:warn implementationoptional "NAN is defined if and only if the implementation supports quiet float type NaNs.":*/ ;
-
-/*@constant int FP_INFINITE;@*/
-/*@constant int FP_NAN;@*/
-/*@constant int FP_NORMAL;@*/
-/*@constant int FP_SUBNORMAL;@*/
-/*@constant int FP_ZERO;@*/
-
-/*@constant int FP_ILOGB0;@*/
-/*@constant int FP_ILOGBNAN;@*/
-
-/*@constant int DECIMAL_DIG;@*/
-
-/* Defined for specs only - this type is any real type */
-typedef float /*@alt double, long double@*/ s_real_t;
-
-int fpclassify (/*@sef@*/ s_real_t) /*@*/ ;
-int signbit (/*@sef@*/ s_real_t) /*@*/ ;
-int isfinite (/*@sef@*/ s_real_t) /*@*/ ;
-int isnormal (/*@sef@*/ s_real_t) /*@*/ ;
-int isnan (/*@sef@*/ s_real_t) /*@*/ ;
-int isinf (/*@sef@*/ s_real_t) /*@*/ ;
 
 /*
-** math functions that may have a range error modify errno (implementation defined).
+** math functions that may have a range error modify errno 
 */
 
-double acos (double x) /*@modifies errno@*/ ;
+double sin (double x) /*@*/ ;
+double cos (double x) /*@*/ ;
+double tan (double x) /*@*/ ;
 double asin (double x) /*@modifies errno@*/ ;
+double acos (double x) /*@modifies errno@*/ ;
 double atan (double x) /*@*/ ;
 double atan2 (double y, double x) /*@*/ ;
-
-double cos (double x) /*@*/ ;
-double sin (double x) /*@*/ ;
-double tan (double x) /*@*/ ;
-
+double sinh (double x) /*@*/ ;
 double cosh (double x) /*@modifies errno@*/ ;
-double sinh (double x) /*@modifies errno@*/ ;
 double tanh (double x) /*@*/ ;
 
-double acosh (double x) /*@modifies errno@*/ ;
-double asinh (double x) /*@modifies errno@*/ ;
-double atanh (double x) /*@modifies errno@*/ ;
-
 double exp (double x) /*@modifies errno@*/ ;
-double frexp (double x, /*@out@*/ int *xp) /*@modifies *xp;@*/ ;
 double ldexp (double x, int n) /*@modifies errno@*/ ;
+double frexp (double x, /*@out@*/ int *xp) /*@modifies *xp;@*/ ;
 
 double log (double x) /*@modifies errno@*/ ;
 double log10 (double x) /*@modifies errno@*/ ;
 
-double modf (double x, /*@out@*/ double *ip) /*@modifies *ip;@*/ ;
-
-double exp2 (double x) /*@modifies errno@*/ ;
-double expm1 (double x) /*@modifies errno@*/ ;
-double log1p (double x) /*@modifies errno@*/ ;
-double log2 (double x) /*@modifies errno@*/ ;
-double logb (double x) /*@modifies errno@*/ ;
-
-double scalbn (double x, int n) /*@modifies errno@*/ ;
-double scalbln (double x, long int n) /*@modifies errno@*/ ;
-long double scalblnl(long double x, long int n) /*@modifies errno@*/ ;
-
-int ilogb (double x) /*@modifies errno@*/ ;
-int ilogbf (float x) /*@modifies errno@*/ ;
-int ilogbl (long double x) /*@modifies errno@*/ ;
-
-double fabs (double x) /*@*/ ;
-float fabsf (float x) /*@*/ ;
-long double fabsl (long double x) /*@*/ ;
-
 double pow (double x, double y) /*@modifies errno@*/ ;
-float powf(float x, float y) /*@modifies errno@*/ ;
-long double powl(long double x, long double y) /*@modifies errno@*/ ;
-
 double sqrt (double x) /*@modifies errno@*/ ;
-float sqrtf(float x) /*@modifies errno@*/ ;
-long double sqrtl (long double x) /*@modifies errno@*/ ;
-
-double cbrt (double x) /*@*/ ;
-float cbrtf (float x) /*@*/ ;
-long double cbrtl (long double x) /*@*/ ;
-
-double hypot (double x, double y) /*@modifies errno@*/ ;
-float hypotf (float x, float y) /*@modifies errno@*/ ;
-long double hypotl (long double x, long double y) /*@modifies errno@*/ ;
-
-double erf (double x) /*@*/ ;
-double erfc (double x) /*@*/ ;
-float erff (float x) /*@*/ ;
-long double erfl (long double x) /*@*/ ;
-float erfcf (float x) /*@*/ ;
-long double erfcl (long double x) /*@*/ ;
-
-double gamma (double x) /*@modifies errno@*/ ;
-float gammaf(float x) /*@modifies errno@*/ ;
-long double gammal (long double x) /*@modifies errno@*/ ;
-double lgamma (double x) /*@modifies errno@*/ ;
-float lgammaf (float x)  /*@modifies errno@*/ ;
-long double lgammal (long double x)  /*@modifies errno@*/ ;
 
 double ceil (double x) /*@*/ ;
-float ceilf(float x) /*@*/ ;
-long double ceill(long double x) /*@*/ ;
-
 double floor (double x) /*@*/ ;
-float floorf (float x) /*@*/ ;
-long double floorl (long double x) /*@*/ ;
+double fabs (double x) /*@*/ ;
 
-double nearbyint (double x) /*@*/ ;
-float nearbyintf (float x) /*@*/ ; 
-long double nearbyintl (long double x) /*@*/ ;
-
-double rint (double x) /*@*/;
-float rintf (float x) /*@*/ ;
-long double rintl (long double x) /*@*/ ;
-long int lrint (double x) /*@modifies errno@*/ ;
-long int lrintf (float x) /*@modifies errno@*/ ;
-long int lrintl (long double x) /*@modifies errno@*/ ;
-long long llrint (double x) /*@modifies errno@*/ ;
-long long llrintf(float x)  /*@modifies errno@*/ ;
-long long llrintl(long double x) /*@modifies errno@*/ ;
-
-double round (double x) /*@*/ ;
-long int lround (double x) /*@modifies errno@*/ ;
-long long llround (double x) /*@modifies errno@*/ ;
-
-double trunc (double x) /*@*/ ; 
+double modf (double x, /*@out@*/ double *ip) /*@modifies *ip;@*/ ;
 double fmod (double x, double y) /*@*/ ;
-double remainder (double x, double y) /*@*/ ;
-double remquo (double x, double y, /*@out@*/ int *quo) /*@modifies *quo@*/ ;
-double copysign (double x, double y) /*@*/ ;
-double nan (/*@nullterminated@*/ const char *tagp) /*@*/ ;
-double nextafter (double x, double y) /*@*/ ;
-double nextafterx (double x, long double y) /*@*/ ;
-
-double fdim (double x, double y) /*@modifies errno@*/ ;
-double fmax (double x, double y) /*@*/ ;
-double fmin (double x, double y) /*@*/ ;
-double fma (double x, double y, double z) /*@*/ ;
-
-int isgreater (s_real_t x, s_real_t y) /*@*/ ;
-int isgreaterequal (s_real_t x, s_real_t y) /*@*/ ;
-int isless (s_real_t x, s_real_t y) /*@*/ ;
-int islessequal (s_real_t x, s_real_t y) /*@*/ ;
-int islessgreater (s_real_t x, s_real_t y) /*@*/ ;
-int isunordered (s_real_t x, s_real_t y) /*@*/ ;
 
 /*
 ** These functions are optional in iso C.  An implementation does not
@@ -520,15 +394,12 @@ int fflush (/*@null@*/ FILE *stream)
 /*@dependent@*/ /*@null@*/ FILE *freopen (char *filename, char *mode, FILE *stream) 
   /*@modifies *stream, fileSystem, errno@*/ ;
 
-void setbuf (FILE *stream, /*@null@*/ /*@exposed@*/ /*@out@*/ char *buf) 
-     /*@modifies fileSystem, *stream, *buf@*/ 
-     /*:errorcode != 0*/ ;
-     /*:requires maxSet(buf) >= (BUFSIZ - 1):*/ ;
+extern void setbuf (FILE *stream, /*@null@*/ /*@exposed@*/ /*@out@*/ char *buf) 
+     /*@modifies fileSystem, *stream, *buf@*/ ;
 
-int setvbuf (FILE *stream, /*@null@*/ /*@exposed@*/ /*@out@*/ char *buf, 
-            int mode, size_t size)
-      /*@modifies fileSystem, *stream, *buf@*/
-     /*@requires maxSet(buf) >= (size - 1) @*/ ;
+extern int setvbuf (FILE *stream, /*@null@*/ /*@exposed@*/ /*@out@*/ char *buf, 
+                   int mode, size_t size)
+     /*@modifies fileSystem, *stream, *buf@*/ ;
 
 # ifdef STRICT
 /*@printflike@*/ 
@@ -542,7 +413,7 @@ int /*@alt void@*/ fprintf (FILE *stream, char *format, ...)
 
 /*@scanflike@*/ 
 int fscanf (FILE *stream, char *format, ...)
-   /*@modifies fileSystem, *stream, errno@*/ ;
+   /*@modifies fileSystem, *stream@*/ ;
 
 # ifdef STRICT
 /*@printflike@*/ 
@@ -559,29 +430,20 @@ int /*@alt void@*/ printf (char *format, ...)
 /*@scanflike@*/
 int scanf(char *format, ...)
    /*@globals stdin@*/
-   /*@modifies fileSystem, *stdin, errno@*/ ;
-   /*drl added errno 09-19-2001 */ ;
+   /*@modifies fileSystem, *stdin@*/ ;
 
 # ifdef STRICT
 /*@printflike@*/ 
 int sprintf (/*@out@*/ char *s, char *format, ...) 
-   /*@warn bufferoverflowhigh "Buffer overflow possible with sprintf.  Recommend using snprintf instead"@*/
    /*@modifies *s@*/ ;
 # else
 /*@printflike@*/ 
 int /*@alt void@*/ sprintf (/*@out@*/ char *s, char *format, ...) 
-   /*@warn bufferoverflowhigh "Buffer overflow possible with sprintf.  Recommend using snprintf instead"@*/
    /*@modifies *s@*/ ;
 # endif
 
-/* evans 2002-07-09: snprintf added to standard.h (from unix.h) */
-/*@printflike@*/
-int snprintf (/*@out@*/ char * restrict s, size_t n, const char * restrict format, ...)
-   /*@modifies s@*/
-   /*@requires maxSet(s) >= (n - 1)@*/ ;
-
 /*@scanflike@*/ 
-int sscanf (/*@out@*/ char *s, char *format, ...) /*@modifies errno@*/ ;
+int sscanf (/*@out@*/ char *s, char *format, ...) /*@*/ ;
    /* modifies extra arguments */
 
 int vprintf (const char *format, va_list arg)
@@ -596,7 +458,7 @@ int vsprintf (/*@out@*/ char *str, const char *format, va_list ap)
      /*@modifies str@*/ ;
 
 int vsnprintf (/*@out@*/ char *str, size_t size, const char *format, va_list ap)
-     /*@requires maxSet(str) >= (size - 1)@*/ /* drl - this was size, size-1 in stdio.h */
+     /*@requires maxSet(str) >= size@*/
      /*@modifies str@*/ ;
 
 int fgetc (FILE *stream) 
@@ -618,9 +480,9 @@ int fputs (char *s, FILE *stream)
 
 /* note use of sef --- stream may be evaluated more than once */
 int getc (/*@sef@*/ FILE *stream)
-  /*@modifies fileSystem, *stream, errno@*/ ;
+  /*@modifies fileSystem, *stream@*/ ;
 
-int getchar (void) /*@globals stdin@*/ /*@modifies fileSystem, *stdin, errno@*/ ;
+int getchar (void) /*@globals stdin@*/ /*@modifies fileSystem, *stdin@*/ ;
 
 /*@null@*/ char *gets (/*@out@*/ char *s) 
    /*@warn bufferoverflowhigh
@@ -629,36 +491,29 @@ int getchar (void) /*@globals stdin@*/ /*@modifies fileSystem, *stdin, errno@*/
 
 int putc (int /*@alt char@*/ c, /*@sef@*/ FILE *stream)
    /*:errorcode EOF:*/
-   /*@modifies fileSystem, *stream, errno;@*/ ;
+   /*@modifies fileSystem, *stream;@*/ ;
 
 int putchar (int /*@alt char@*/ c)
    /*:errorcode EOF:*/
-   /*@globals stdout@*/ 
-   /*@modifies fileSystem, *stdout, errno@*/ ; 
+   /*@globals stdout@*/ /*@modifies fileSystem, *stdout@*/ ; 
 
 int puts (const char *s)
    /*:errorcode EOF:*/
    /*@globals stdout@*/
-   /*@modifies fileSystem, *stdout, errno@*/ ; 
+   /*@modifies fileSystem, *stdout@*/ ; 
 
 int ungetc (int /*@alt char@*/ c, FILE *stream)
-  /*@modifies fileSystem, *stream@*/ ;
-      /*drl REMOVED errno 09-19-2001*/
+  /*@modifies fileSystem, *stream, errno@*/ ;
 
 size_t 
   fread (/*@out@*/ void *ptr, size_t size, size_t nobj, FILE *stream)
-  /*@modifies fileSystem, *ptr, *stream, errno@*/ 
-  /*requires maxSet(ptr) >= (size - 1) @*/
-  /*@ensures maxRead(ptr) == (size - 1) @*/ ;
+  /*@modifies fileSystem, *ptr, *stream, errno@*/ ;
 
 size_t fwrite (void *ptr, size_t size, size_t nobj, FILE *stream)
-  /*@modifies fileSystem, *stream, errno@*/ 
-  /*@requires maxRead(ptr) >= size @*/ ;
+  /*@modifies fileSystem, *stream, errno@*/ ;
 
 int fgetpos (FILE *stream, /*@out@*/ fpos_t *pos)
-   /*@modifies *pos, errno@*/
-   /*@requires maxSet(pos) >= 0@*/
-   /*@ensures maxRead(pos) >= 0 @*/;
+  /*@modifies *pos, errno@*/ ;
 
 int fseek (FILE *stream, long int offset, int whence)
    /*:errorcode -1:*/
@@ -1080,7 +935,7 @@ size_t strcspn (char *s1, char *s2) /*@*/ ;
 size_t strspn (char *s, char *t) /*@*/ ;
 
 /*@null@*/ /*@exposed@*/  char *
-  strstr (/*@returned@*/ const char *s, const char *t) /*@*/
+  strstr (/*@returned@*/ /*@unique@*/ char *s, char *t) /*@*/
        /*@ensures maxSet(result) >= 0 /\ maxSet(result) <= maxSet(s) /\ maxRead (result) <= maxRead(s) /\ maxRead(result) >= 0 /\ maxRead(result) >= maxRead(t) /\ maxSet(result) >= maxRead(t)@*/ ;
 
 /*@null@*/ /*@exposed@*/ char *
index 627bb30693d7adad22a9a73a0b923e0c1c9af1dc..00e01fc4e790c506fb38ae7e41c5d9289c965cc2 100644 (file)
@@ -105,13 +105,10 @@ extern /*@null@*/ /*@dependent@*/ char *
 extern /*@null@*/ /*@dependent@*/ char *
   rindex (/*@returned@*/ char *s, char c) /*@*/ ;
 
-# if 0
-These are in ISO C99.  Moved to standard.h:
-   extern double cbrt (double x) /*@modifies errno@*/ ;
-   extern double rint (double x) /*@*/ ;
-   extern double trunc (double x) /*@*/ ; 
-# endif
 
+extern double cbrt (double x) /*@modifies errno@*/ ;
+extern double rint (double x) /*@*/ ;
+extern double trunc (double x) /*@*/ ; 
 
 /*@constant int ENOTBLK@*/
 /*@constant int ETXTBSY@*/
@@ -264,6 +261,7 @@ typedef char *addr_t;
 typedef long physadr_t;
 typedef short cnt_t;
 typedef        int chan_t;     
+typedef unsigned long rlim_t;
 typedef        int paddr_t;
 typedef        void *mid_t;
 typedef char slab_t[12];       
@@ -292,24 +290,22 @@ int ioctl (int d, int /*@alt long@*/ request, /*@out@*/ void *arg)
 
 pid_t vfork (void) /*@modifies fileSystem@*/ ;
 
-/*
-** sys/uio.h
-*/
 
 struct iovec {
-  /*@dependent@*/ void *iov_base;
-  size_t iov_len; /*: maxSet(iov_base) = iov_len */
+  void    *iov_base;
+  size_t   iov_len;
 };
 
-/* from limits.h */
 /*@constant int UIO_MAXIOV@*/   /* BSD */
 /*@constant int IOV_MAX@*/      /* supposedly SVR4 */
 
-ssize_t readv (int fd, const struct iovec *iov, int iovcnt)
-     /*@modifies iov->iov_base, fileSystem, errno@*/;
+       extern ssize_t
+readv (int fd, const struct iovec iov[], int iovcnt)
+       /*@modifies iov[].iov_base, fileSystem, errno@*/;
 
-ssize_t writev (int fd, const struct iovec *iov, int iovcnt)
-     /*@modifies errno@*/;
+       extern ssize_t
+writev (int fd, const struct iovec iov[], int iovcnt)
+       /*@modifies errno@*/;
 
 /*________________________________________________________________________
  * poll.h
@@ -347,34 +343,34 @@ extern void free (/*@notnull@*/ /*@out@*/ /*@only@*/ void *p) /*@modifies *p@*/
  * sys/socket.h
  */
 
-
-
-
+/*@constant int SOCK_STREAM@*/
+/*@constant int SOCK_DGRAM@*/
+/*@constant int SOCK_RAW@*/
 /*@constant int SOCK_RDM@*/
-
-
-
-
-
-
-
+/*@constant int SOCK_SEQPACKET@*/
+/*@constant int SO_DEBUG@*/
+/*@constant int SO_ACCEPTCONN@*/
+/*@constant int SO_REUSEADDR@*/
+/*@constant int SO_KEEPALIVE@*/
+/*@constant int SO_DONTROUTE@*/
+/*@constant int SO_BROADCAST@*/
 /*@constant int SO_USELOOPBACK@*/
-
-
+/*@constant int SO_LINGER@*/
+/*@constant int SO_OOBINLINE@*/
 /*@constant int SO_REUSEPORT@*/
-
-
-
-
-
-
-
-
-
-
+/*@constant int SO_SNDBUF@*/
+/*@constant int SO_RCVBUF@*/
+/*@constant int SO_SNDLOWAT@*/
+/*@constant int SO_RCVLOWAT@*/
+/*@constant int SO_SNDTIMEO@*/
+/*@constant int SO_RCVTIMEO@*/
+/*@constant int SO_ERROR@*/
+/*@constant int SO_TYPE@*/
+/*@constant int SOL_SOCKET@*/
+/*@constant int AF_UNSPEC@*/
 /*@constant int AF_LOCAL@*/
-
-
+/*@constant int AF_UNIX@*/
+/*@constant int AF_INET@*/
 /*@constant int AF_IMPLINK@*/
 /*@constant int AF_PUP@*/
 /*@constant int AF_CHAOS@*/
@@ -402,12 +398,13 @@ extern void free (/*@notnull@*/ /*@out@*/ /*@only@*/ void *p) /*@modifies *p@*/
 /*@constant int AF_ISDN@*/
 /*@constant int AF_E164@*/
 /*@constant int AF_MAX@*/
-
-
-
-
-
-
+/*@constant int MSG_OOB@*/
+/*@constant int MSG_PEEK@*/
+/*@constant int MSG_DONTROUTE@*/
+/*@constant int MSG_EOR@*/
+/*@constant int MSG_TRUNC@*/
+/*@constant int MSG_CTRUNC@*/
+/*@constant int MSG_WAITALL@*/
 /*@constant int MSG_DONTWAIT@*/
 /*@constant int MSG_EOF@*/
 /*@constant int MSG_COMPAT@*/
@@ -446,121 +443,58 @@ extern void free (/*@notnull@*/ /*@out@*/ /*@only@*/ void *p) /*@modifies *p@*/
 /*@constant int NET_RT_FLAGS@*/
 /*@constant int NET_RT_IFLIST@*/
 /*@constant int NET_RT_MAXID@*/
-
-/*moved this to before socket.h to get splint to parse the header*/
-typedef /*@unsignedintegraltype@*/ sa_family_t;
-
-/*
-** sys/socket.h
-** (updated 26 May 2002)
-*/
-
-typedef /*@unsignedintegraltype@*/ socklen_t;
-
-struct sockaddr {
-  sa_family_t  sa_family;              /* address family */
-  char          sa_data[];             /* variable length */
-};
-
-struct sockaddr_storage {
-  sa_family_t ss_family;
-} ;
-
-struct msghdr {
-  /*@dependent@*/ void *msg_name;              
-  socklen_t msg_namelen;       /*: maxSet (msg_name) >= msg_namelen */
-  /*@dependent@*/ struct iovec *msg_iov;       /* scatter/gather array */
-  int msg_iovlen;              /* # elements in msg_iov */ /*: maxSet (msg_iov) >= msg_iovlen */
-  /*@dependent@*/ void *msg_control;           /* ancillary data, see below */
-  socklen_t msg_controllen;     /*: maxSet (msg_control) >= msg_controllen */
-  int msg_flags;               /* flags on received message */
-} ;
-
-struct cmsghdr {
-  socklen_t cmsg_len;          /* data byte count, including hdr */
-  int cmsg_level;              /* originating protocol */
-  int cmsg_type;               /* protocol-specific type */
-} ;
-
+/*@constant int SOMAXCONN@*/
 /*@constant int SCM_RIGHTS@*/
 
-/*@exposed@*/ unsigned char *CMSG_DATA (/*@sef@*/ struct cmsghdr *) /*@*/ ;
-/*@null@*/ /*@exposed@*/ struct cmsghdr *CMSG_NXTHDR (struct msghdr *, struct cmsghdr *) /*@*/ ;
-/*@null@*/ /*@exposed@*/ struct cmsghdr *CMSG_FIRSTHDR (struct msghdr *) /*@*/ ;
-
-struct linger {
-  int l_onoff; 
-  int l_linger;        
+ struct sockaddr {
+       u_char  sa_len;                 /* total length */
+       u_char  sa_family;              /* address family */
+       char    sa_data[14];            /* actually longer; address value */
 };
 
-/*@constant int SOCK_DGRAM@*/
-/*@constant int SOCK_RAW@*/
-/*@constant int SOCK_SEQPACKET@*/
-/*@constant int SOCK_STREAM@*/
-
-/*@constant int SOL_SOCKET@*/
-
-/*@constant int SO_ACCEPTCONN@*/
-/*@constant int SO_BROADCAST@*/
-/*@constant int SO_DEBUG@*/
-/*@constant int SO_DONTROUTE@*/
-/*@constant int SO_ERROR@*/
-/*@constant int SO_KEEPALIVE@*/
-/*@constant int SO_LINGER@*/
-/*@constant int SO_OOBINLINE@*/
-/*@constant int SO_RCVBUF@*/
-/*@constant int SO_RCVLOWAT@*/
-/*@constant int SO_RCVTIMEO@*/
-/*@constant int SO_REUSEADDR@*/
-/*@constant int SO_SNDBUF@*/
-/*@constant int SO_SNDLOWAT@*/
-/*@constant int SO_SNDTIMEO@*/
-/*@constant int SO_TYPE@*/
-
-/*@constant int SOMAXCONN@*/
-
-/*@constant int MSG_CTRUNC@*/
-/*@constant int MSG_DONTROUTE@*/
-/*@constant int MSG_EOR@*/
-/*@constant int MSG_OOB@*/
-/*@constant int MSG_PEEK@*/
-/*@constant int MSG_TRUNC@*/
-/*@constant int MSG_WAITALL@*/
-
-/*@constant int AF_INET@*/
-/*@constant int AF_INET6@*/
-/*@constant int AF_UNIX@*/
-/*@constant int AF_UNSPEC@*/
-
-/*@constant int SHUT_RD@*/
-/*@constant int SHUT_RDWR@*/
-/*@constant int SHUT_WR@*/
-
-# if 0
-/*
-** These were in the old unix.h spec, but are not in SUS6
-*/
+ struct linger {
+       int     l_onoff;                /* option on/off */
+       int     l_linger;               /* linger time */
+};
 
-struct sockproto {
-  u_short      sp_family;              /* address family */
-  u_short      sp_protocol;            /* protocol */
+ struct sockproto {
+       u_short sp_family;              /* address family */
+       u_short sp_protocol;            /* protocol */
+};
+ struct msghdr {
+       caddr_t msg_name;               /* optional address */
+       u_int   msg_namelen;            /* size of address */
+       struct  iovec *msg_iov;         /* scatter/gather array */
+       u_int   msg_iovlen;             /* # elements in msg_iov */
+       caddr_t msg_control;            /* ancillary data, see below */
+       u_int   msg_controllen;         /* ancillary data buffer len */
+       int     msg_flags;              /* flags on received message */
 };
 
-# endif
+ struct cmsghdr {
+       u_int   cmsg_len;               /* data byte count, including hdr */
+       int     cmsg_level;             /* originating protocol */
+       int     cmsg_type;              /* protocol-specific type */
+/* followed by u_char  cmsg_data[]; */
+};
 
-int accept (int s, struct sockaddr *addr, int *addrlen)
-  /*@modifies *addrlen, errno@*/;
+       extern int
+accept (int s, struct sockaddr *addr, int *addrlen)
+       /*@modifies *addrlen, errno@*/;
 
-int bind (int s, const struct sockaddr *name, int namelen)
-  /*@modifies errno, fileSystem@*/;
+       extern int
+bind (int s, struct sockaddr *name, int namelen)
+       /*@modifies errno, fileSystem@*/;
 
-int connect (int s, const struct sockaddr *name, int namelen)
-  /*@modifies errno, internalState@*/;
+       extern int
+connect (int s, struct sockaddr *name, int namelen)
+       /*@modifies errno, internalState@*/;
 
-int getpeername (int s, /*@out@*/ struct sockaddr */*restrict*/ name, socklen_t */*restrict*/ namelen)
-  /*drl splint doesn't handle restrict yet*/
-   /*@modifies *name, *namelen, errno@*/;
+int getpeername (int s, /*@out@*/ struct sockaddr *name, size_t *namelen)
+       /*@modifies *name, *namelen, errno@*/;
        
+       typedef /*@unsignedintegraltype@*/ socklen_t;
+
 #ifdef STRICT
 
 int getsockname (int s, /*@out@*/ struct sockaddr *address, socklen_t *address_len)
@@ -922,37 +856,46 @@ int gethostname (/*@out@*/ char *address, size_t address_len)
 int initgroups (const char *name, int basegid)
    /*@modifies internalState@*/;
 
-int lchown (const char *path, uid_t owner, gid_t group)
-     /*@modifies errno, fileSystem@*/;
-     
-int select (int mfd, fd_set /*@null@*/ *r, fd_set /*@null@*/ *w, fd_set /*@null@*/ *e, /*@null@*/ struct timeval *t)
-     /*@modifies *r, *w, *e, *t, errno@*/;
-     /* evans - 2002-05-26: added null for t, bug reported by Enrico Scholz */
+       extern int
+lchown (const char *path, uid_t owner, gid_t group)
+       /*@modifies errno, fileSystem@*/;
 
-int setegid (gid_t egid)
-     /*@modifies errno, internalState@*/;
+       extern int
+select (int mfd, fd_set /*@null@*/ *r, fd_set /*@null@*/ *w, fd_set /*@null@*/ *e, struct timeval *t)
+       /*@modifies *r, *w, *e, *t, errno@*/;
+
+       extern int
+setegid (gid_t egid)
+       /*@modifies errno, internalState@*/;
+
+       extern int
+seteuid (uid_t euid)
+       /*@modifies errno, internalState@*/;
+
+       extern int
+setgroups (int ngroups, const gid_t *gidset)
+       /*@modifies errno, internalState@*/;
+
+       extern int
+setregid (gid_t rgid, gid_t egid)
+       /*@modifies errno, internalState@*/;
+
+       extern int
+setreuid (gid_t ruid, gid_t euid)
+       /*@modifies errno, internalState@*/;
+
+       extern void
+sync (void)
+       /*@modifies fileSystem@*/;
+
+       extern int
+symlink (const char *path, const char *path2)
+       /*@modifies fileSystem@*/;
+
+       extern int
+truncate (const char *name, off_t length)
+       /*@modifies errno, fileSystem@*/;
 
-int seteuid (uid_t euid)
-     /*@modifies errno, internalState@*/;
-     
-int setgroups (int ngroups, const gid_t *gidset)
-     /*@modifies errno, internalState@*/;
-     
-int setregid (gid_t rgid, gid_t egid)
-     /*@modifies errno, internalState@*/;
-     
-int setreuid (gid_t ruid, gid_t euid)
-     /*@modifies errno, internalState@*/;
-     
-void sync (void)
-     /*@modifies fileSystem@*/;
-     
-int symlink (const char *path, const char *path2)
-     /*@modifies fileSystem@*/;
-     
-int truncate (const char *name, off_t length)
-     /*@modifies errno, fileSystem@*/;
-     
 /*@constant int EBADRPC@*/
 /*@constant int ERPCMISMATCH@*/
 /*@constant int EPROGUNAVAIL@*/
@@ -1167,11 +1110,153 @@ extern int shmdt (void *addr)
 extern int shmget (key_t key, int size, int flag)
      /*@modifies errno@*/ ;
 
+# if 0
+     /*
+     ** this is in stdio.h!
+     */
+
+/*
+** stdio.h
+*/
 
 /*
-** stdio.h - in separte file stdio.h
+** evans 2001-12-30: added from http://www.opengroup.org/onlinepubs/007908799/xsh/stdio.h.html
 */
 
+/*@constant unsignedintegraltype BUFSIZ@*/ 
+/*@constant unsignedintegraltype FILENAME_MAX@*/
+/*@constant unsignedintegraltype FOPEN_MAX@*/
+/*@constant bool _IOFBF@*/
+/*@constant bool _IOLBF@*/
+/*@constant bool _IONBF@*/
+/*@constant unsignedintegraltype L_ctermid@*/
+/*@constant unsignedintegraltype L_cuserid@*/
+/*@constant unsignedintegraltype L_tmpnam@*/
+/*@constant unsignedintegraltype SEEK_CUR@*/
+/*@constant unsignedintegraltype SEEK_END@*/
+/*@constant unsignedintegraltype SEEK_SET@*/
+/*@constant unsignedintegraltype TMP_MAX@*/
+
+/* EOF */
+/* NULL */
+
+/*@constant observer char *P_tmpdir@*/
+
+void clearerr (FILE *s) 
+   /*@modifies s@*/ ;
+
+/*@dependent@*/ char *ctermid (/*@returned@*/ /*@null@*/ char *) /*@*/ ;
+   /* Result may be static pointer if parameter is NULL, otherwise is fresh. */
+
+char *cuserid (/*@null@*/ /*@returned@*/ char *) 
+  /*@warn legacy "cuserid is obsolete"@*/ /*@*/ ;
+
+/* fclose in standard.h */
+
+/*@null@*/ FILE *fdopen (int, const char *)
+  /*@modifies errno, fileSystem@*/ ;
+
+/* feof, ferror fflush, fgetc, fgetpos, fgets - in standard.h */
+
+int fileno (/*@notnull@*/ FILE *)
+  /*:errorcode -1:*/ 
+  /*@modifies errno@*/ ;
+
+void flockfile (/*@notnull@*/ FILE *f)
+   /*@modifies f, fileSystem@*/ ;
+
+int fseeko (FILE *stream, off_t offset, int whence)
+   /*:errorcode -1:*/
+   /*@modifies stream, errno@*/ ;
+
+off_t ftello(FILE *stream)
+   /*:errorcode -1:*/ /*@modifies errno*/ ;
+
+int ftrylockfile(FILE *stream)
+   /*:errorcode !0:*/
+   /*@modifies stream, fileSystem, errno*/ ;
+
+void funlockfile (FILE *stream)
+   /*@modifies stream, fileSystem*/ ;
+
+int getc_unlocked(FILE *stream)
+   /*@warn multithreaded "getc_unlocked is a thread unsafe version of getc"@*/
+   /*@modifies *stream, fileSystem, errno@*/ ;
+
+int getchar_unlocked (void)
+   /*@warn multithreaded "getchar_unlocked is a thread unsafe version of getchar"@*/
+   /*@globals stdin@*/
+   /*@modifies *stdin, fileSystem@*/ ;
+
+int getopt (int, char * const[], const char)
+   /*@warn legacy@*/ ;
+
+int getw (FILE *stream)
+   /*:errorcode EOF:*/
+   /*@modifies fileSystem, *stream, errno@*/ ;
+
+int pclose(FILE *stream)
+   /*:errorcode -1:*/
+   /*@modifies *stream, errno@*/ ;
+
+/*@null@*/ FILE *popen (const char *command, const char *mode)
+   /*:errorcode NULL:*/
+   /*@modifies fileSystem, errno@*/ ;
+
+int putc_unlocked (int, FILE *stream)
+   /*@warn multithreaded "putc_unlocked is a thread unsafe version of putc"@*/
+   /*:errorcode EOF:*/
+   /*@modifies fileSystem, *stream, errno@*/ ;
+
+int putchar_unlocked(int)
+   /*@warn multithreaded "putchar_unlocked is a thread unsafe version of putchar"@*/
+   /*:errorcode EOF:*/
+   /*@modifies fileSystem, *stdout, errno@*/ ;
+
+int putw(int, FILE *stream)
+   /*:errorcode EOF:*/
+   /*@modifies fileSystem, *stdout, errno@*/ ;
+
+int remove (const char *)
+   /*@modifies fileSystem@*/ ;
+
+int rename (const char *, const char *)
+   /*@modifies fileSystem@*/ ;
+
+void rewind (FILE *stream)
+   /*@modifies *stream@*/ ;
+
+void setbuf (FILE *stream, /*@null@*/ /*@dependent@*/ /*@exposed@*/ char *buf)
+     /*@modifies stream@*/
+
+int setvbuf (FILE *stream, /*@null@*/ /*@dependent@*/ /*@exposed@*/ char *buf, int type, size_t size)
+     /*@modifies stream@*/ 
+     /*:errorcode !0:*/ ;
+     
+int snprintf (char *s, size_t n, const char *format, ...);
+
+     int      sprintf(char *, const char *, ...);
+     int      sscanf(const char *, const char *, int ...);
+     char    *tempnam(const char *, const char *);
+     FILE    *tmpfile(void);
+     char    *tmpnam(char *);
+     int      ungetc(int, FILE *);
+     int      vfprintf(FILE *, const char *, va_list);
+     int      vprintf(const char *, va_list);
+     int      vsnprintf(char *, size_t, const char *, va_list);
+     int      vsprintf(char *, const char *, va_list);
+
+
+     The following external variables are defined: 
+
+
+     extern char  *optarg;    )
+     extern int    opterr;    )
+     extern int    optind;    ) (LEGACY)
+     extern int    optopt;    )
+
+# endif
+
 /*
 ** syslog.h
 */
@@ -1254,20 +1339,29 @@ setpassent (int stayopen)
 setpwent (void)
        /*@modifies internalState@*/;
 
-/*
-** grp.h
-*/
+/*________________________________________________________________________
+ * grp.h
+ */
 
-void endgrent (void) /*@modifies internalState@*/;
+       extern void
+endgrent (void)
+       /*@modifies internalState@*/;
 
-/*@null@*/ /*@observer@*/ struct group *getgrent (void)
-   /*@modifies internalState@*/;
+       extern /*@null@*/ struct group *
+getgrent (void)
+       /*@modifies internalState@*/;
 
-int setgrent (void) /*@modifies internalState@*/;
+       extern int
+setgrent (void)
+       /*@modifies internalState@*/;
 
-void setgrfile (const char *name) /*@modifies internalState@*/;
+       extern void
+setgrfile (const char *name)
+       /*@modifies internalState@*/;
 
-int setgroupent (int stayopen) /*@modifies internalState@*/;
+       extern int
+setgroupent (int stayopen)
+       /*@modifies internalState@*/;
 
 /*
 ** sys/stat.h
@@ -1456,59 +1550,78 @@ putmsg (int fd, const struct strbuf *c, const struct strbuf *d, int *f)
 extern int putpmsg (int fd, const struct strbuf *c, const struct strbuf *d, int b, int *f)
    /*@modifies internalState, errno@*/;
 
-/*
-** sys/resource.h
-**
-** Update 2002-07-09 from
-** http://www.opengroup.org/onlinepubs/007904975/basedefs/sys/resource.h.html
-*/
+/*________________________________________________________________________
+ * sys/resource.h
+ */
 
+/*@constant int RLIMIT_CPU@*/
+/*@constant int RLIMIT_FSIZE@*/
+/*@constant int RLIMIT_DATA@*/
+/*@constant int RLIMIT_STACK@*/
+/*@constant int RLIMIT_CORE@*/
+/*@constant int RLIMIT_RSS@*/
+/*@constant int RLIMIT_MEMLOCK@*/
+/*@constant int RLIMIT_NPROC@*/
+/*@constant int RLIMIT_NOFILE@*/
+/*@constant int RLIM_NLIMITS@*/
+/*@constant int RLIM_INFINITY@*/
+/*@constant int PRIO_MIN@*/
+/*@constant int PRIO_MAX@*/
 /*@constant int PRIO_PROCESS@*/
 /*@constant int PRIO_PGRP@*/
 /*@constant int PRIO_USER@*/
-
-typedef /*@unsignedintegraltype@*/ rlim_t;
-
-/*@constant rlim_t RLIM_INFINITY@*/
-/*@constant rlim_t RLIM_SAVED_MAX@*/
-/*@constant rlim_t RLIM_SAVED_CUR@*/
-
 /*@constant int RUSAGE_SELF@*/
 /*@constant int RUSAGE_CHILDREN@*/
 
-struct rlimit {
-  rlim_t rlim_cur;
-  rlim_t rlim_max;
+ struct rusage {
+       struct timeval ru_utime;        /* user time used */
+       struct timeval ru_stime;        /* system time used */
+       long    ru_maxrss;              /* max resident set size */
+       long    ru_ixrss;               /* integral shared memory size */
+       long    ru_idrss;               /* integral unshared data " */
+       long    ru_isrss;               /* integral unshared stack " */
+       long    ru_minflt;              /* page reclaims */
+       long    ru_majflt;              /* page faults */
+       long    ru_nswap;               /* swaps */
+       long    ru_inblock;             /* block input operations */
+       long    ru_oublock;             /* block output operations */
+       long    ru_msgsnd;              /* messages sent */
+       long    ru_msgrcv;              /* messages received */
+       long    ru_nsignals;            /* signals received */
+       long    ru_nvcsw;               /* voluntary context switches */
+       long    ru_nivcsw;              /* involuntary " */
 };
 
-struct rusage {
-  struct timeval ru_utime;        /* user time used */
-  struct timeval ru_stime;        /* system time used */
-  /* other members optional */
+ struct rlimit {
+       long  rlim_cur;
+       long  rlim_max;
 };
 
-/*@constant int RLIMIT_CORE@*/
-/*@constant int RLIMIT_CPU@*/
-/*@constant int RLIMIT_DATA@*/
-/*@constant int RLIMIT_FSIZE@*/
-/*@constant int RLIMIT_NOFILE@*/
-/*@constant int RLIMIT_STACK@*/
-/*@constant int RLIMIT_AS@*/
+ struct loadavg {
+       unsigned long ldavg[3];
+       long fscale;
+};
+
+       extern int
+getpriority (int which, int who)
+       /*@modifies errno@*/;
 
-int getpriority (int which, id_t who)
-   /*@modifies errno@*/;
+       extern int
+getrlimit (int res, /*@out@*/ struct rlimit *rlp)
+       /*@modifies *rlp, errno@*/;
 
-int getrlimit (int res, /*@out@*/ struct rlimit *rlp)
-   /*@modifies *rlp, errno@*/;
+       extern int
+getrusage (int who, /*@out@*/ struct rusage *rusage)
+       /*@modifies *rusage, errno@*/;
 
-int getrusage (int who, /*@out@*/ struct rusage *rusage)
-   /*@modifies *rusage, errno@*/;
+       extern int
+setpriority (int which, int who, int prio)
+       /*@modifies errno, internalState@*/;
 
-int setpriority (int which, id_t who, int prio)
-   /*@modifies errno, internalState@*/;
+       extern int
+setrlimit (int resource, const struct rlimit *rlp)
+       /*@modifies errno, internalState@*/;
 
-int setrlimit (int resource, const struct rlimit *rlp)
-   /*@modifies errno, internalState@*/;
 
 /*
 ** in <netdb.h>
@@ -2072,7 +2185,7 @@ void srand48 (long int seedval) /*@modifies internalState@*/ ;
 typedef /*@unsignedintegraltype@*/ in_port_t; /* An unsigned integral type of exactly 16 bits. */
 typedef /*@unsignedintegraltype@*/ in_addr_t; /* An unsigned integral type of exactly 32 bits. */
 
-/* sa_family_t moved earlier */
+typedef /*@unsignedintegraltype@*/ sa_family_t;
 
 struct in_addr {
   in_addr_t      s_addr;
index 04b735aa39bbd86eb9d603920887e7f652d6f67c..43f9fccb33b04b1e817aa64fcf677307811614c9 100644 (file)
@@ -36,7 +36,7 @@ extern void constraint_free (/*@only@*/  constraint p_c);
 /* constraint makeConstraintParse (sRef x, lltok relOp, exprNode cconstant); */
 
 /*@i22*/
-/*@-czechfcns*/
+
 
 extern constraint 
 constraint_makeReadSafeExprNode (/*@observer@*/ exprNode p_po,
@@ -107,7 +107,7 @@ extern /*@only@*/ constraint constraint_makeMaxSetSideEffectPostDecrement (/*@de
 
 extern bool constraint_search (constraint p_c, constraintExpr p_old);
 
-extern /*@only@*/ constraint makeConstraintParse3 (constraintExpr p_l, lltok p_relOp, constraintExpr p_r);
+extern /*@only@*/ constraint constraint_makeConstraintLltok (constraintExpr p_l, lltok p_relOp, constraintExpr p_r);
 
 extern constraint constraint_addGeneratingExpr (/*@returned@*/ constraint p_c, /*@dependent@*/ /*@exposed@*/ exprNode p_e);
 
index df65c150305fac2faa11f2e9c50f1640aa67a758..c5e429098dc2de20fe25b7bcbf1db7ab382e7c78 100644 (file)
@@ -17,10 +17,12 @@ struct s_constraintExpr {
   constraintExprData data;
 };
 
-
+/*@i222*/ /*get rid of this soon */
+/*@-null@*/
 
 /*@constant null constraintExpr constraintExpr_undefined; @*/
 # define constraintExpr_undefined ((constraintExpr)NULL)
+/*@=null@*/
 
 extern /*@falsewhennull@*/ bool constraintExpr_isDefined (constraintExpr p_e) /*@*/ ;
 extern /*@unused@*/ /*@nullwhentrue@*/ bool constraintExpr_isUndefined (constraintExpr p_e) /*@*/ ;
index 85c2f38915e2c79d0ccba9c79f4eec556bb517c6..cb6f8fea98b3916b29cd81adad6dc01f553f0bb1 100644 (file)
@@ -30,8 +30,10 @@ extern bool constraintList_isEmpty (/*@sef@*/ constraintList p_e) /*@*/;
 
 # define constraintList_isEmpty(e)      ((constraintList_isUndefined((e)) ) ||(( (e)->nelements == 0) ) )
 
-extern constraintList constraintList_single (/*@only@*/ constraint) ;
+extern int constraintList_size (/*@sef@*/ constraintList);
+# define constraintList_size(s)  (constraintList_isDefined (s) ? (s)->nelements : 0)
 
+extern constraintList constraintList_single (/*@only@*/ constraint) ;
 extern constraintList constraintList_addListFree (/*@returned@*/ constraintList, /*@only@*/ constraintList) ;
 extern constraintList constraintList_preserveCallInfo (/*@returned@*/ constraintList p_c, /*@observer@*/ /*@dependent@*/ exprNode p_fcn) ;
 
index 617ad97137b6c44cd3964d54e549c90e539ff476..c0766463957a12ec2f8a33b9037decf7e63847ee 100644 (file)
@@ -27,8 +27,6 @@ extern /*@unused@*/ /*@falsewhennull@*/ bool cstringList_empty (/*@sef@*/ cstrin
 
 extern cstring cstringList_unparseSep (cstringList p_s, cstring p_sep) /*@*/ ;
 
-extern /*@exposed@*/ /*@null@*/ bn_mstring *cstringList_getElements (cstringList) /*@*/ ;
-
 extern /*@unused@*/ /*@only@*/ cstringList cstringList_new (void) /*@*/ ;
 
 extern /*@only@*/ cstringList cstringList_single (/*@keep@*/ cstring p_el) /*@*/ ;
index a1bf382847c9cd25e2be4ab96679e952eeb7c202..03c51dd9471dec5a11c16a4f6bdf192810fc6e95 100644 (file)
@@ -8,12 +8,12 @@
 
 typedef /*@observer@*/ cstring ob_cstring;
 
-struct s_cstringSList
+abst_typedef /*@null@*/ struct s_cstringSList
 {
   int      nelements;
   int      nspace;
   /*@reldef@*/ /*@relnull@*/ ob_cstring *elements;
-} ;
+} *cstringSList ;
 
 /*@constant null cstringSList cstringSList_undefined;@*/
 # define cstringSList_undefined ((cstringSList) NULL)
@@ -42,7 +42,7 @@ extern void cstringSList_alphabetize (cstringSList p_s);
 extern /*@observer@*/ cstring cstringSList_get (cstringSList p_s, int p_index) /*@*/ ;
 
 extern /*@only@*/ cstring cstringSList_unparseAbbrev (cstringSList p_s) /*@*/ ;
-extern /*@unused@*/ /*@only@*/ cstring cstringSList_unparse (cstringSList p_s) /*@*/ ;
+extern /*@unused@*/ /*@only@*/ cstring cstringSList_unparse (cstringSList p_s) ;
 extern void cstringSList_free (/*@only@*/ cstringSList p_s) ;
 
 extern void cstringSList_printSpaced (cstringSList p_s, size_t p_indent, size_t p_gap, int p_linelen);
index cfb9dae8b877fe303955ac379823f2d24a383e80..5e391bb935d59b5b70c7fd1019680535500dad51 100644 (file)
@@ -32,3 +32,5 @@ extern void exprNode_checkReturn (exprNode p_e);
 extern void exprChecks_checkStatementEffect (exprNode p_e);
 extern void exprChecks_checkUsedGlobs (globSet p_decl, globSet p_used);
 
+/*drl added for code generation*/
+void exprNode_spitFunction (/*@unused@*/ uentry p_ue, exprNode p_fcnBody);
index d25aff397ec9ebc706cdf0996d6be3a7e1cdad67..86ac34b9cffac0831c643ee799fc1a8a301ca6f3 100644 (file)
@@ -47,4 +47,10 @@ extern /*@observer@*/ cstring
 /*@constant observer cstring PP_EXTENSION;@*/
 # define PP_EXTENSION cstring_makeLiteralTemp (".pp")
 
+/*drl added 6 April 2002 */
+/* compiler produced binary objecct files  */
+/*@constant observer cstring OBJECT_EXTENSION;@*/
+# define OBJECT_EXTENSION cstring_makeLiteralTemp (".o")
+   
+
 # endif
index d8dc68cbe0c3d5debd1710010dddebf89746ee2a..b14c6bfdd420052fdce1cf7a33eee1fdf7e34d29 100644 (file)
@@ -180,6 +180,10 @@ extern bool fileloc_storable (/*@sef@*/ fileloc p_f) /*@*/;
 # define fileloc_storable(f) ((f) != g_currentloc || fileloc_isBuiltin (f) || fileloc_isExternal (f))
 
 
+/*drl added 04/16/2002 */
+extern cstring fileloc_getName (fileloc p_f);
+extern bool fileloc_canGetName (fileloc p_f);
+extern bool fileloc_isDotH (fileloc p_f);
 # else
 # error "Multiple include"
 # endif
index 8f5531abd933ec82ab4b51396463444f0649f2fe..cf5a8a7107c8f8cc3459bde0ab48bd1b8a8def9f 100644 (file)
@@ -16,7 +16,6 @@
 
 typedef enum  
 { 
-  MODENAME_FLAG = -3,
   SKIP_FLAG = -2,
   INVALID_FLAG = -1,
 # include "flag_codes.gen"
index 4cf14a22db57efe4fadd43e183ed3f7482ff46c3..8bb783edc0f28805680211e757360bee48cfc913 100644 (file)
@@ -63,9 +63,6 @@ extern bool flagcode_isInvalid (flagcode p_f) /*@*/ ;
 extern bool flagcode_isSkip (flagcode p_f) /*@*/ ;
 # define flagcode_isSkip(f) ((f) == SKIP_FLAG)
 
-extern bool flagcode_isModeName (flagcode p_f) /*@*/ ;
-# define flagcode_isModeName(f) ((f) == MODENAME_FLAG)
-
 extern bool flagcode_isValid (flagcode p_f) /*@*/ ;
 # define flagcode_isValid(f) ((f) != INVALID_FLAG)
 
@@ -91,7 +88,9 @@ extern bool flagcode_hasArgument (flagcode p_f) /*@*/ ;
 /*@constant observer cstring DEFAULT_MODE;@*/
 # define DEFAULT_MODE (cstring_makeLiteralTemp ("standard"))
 
-extern bool flags_isModeName (cstring p_s) /*@*/ ;
+extern void flags_initMod (void) /*@modifies internalState@*/ ;
+
+extern bool isMode (cstring p_s) /*@*/ ;
 extern /*@only@*/ cstring describeModes (void) /*@modifies g_messagestream@*/ ;
 extern void summarizeErrors (void) /*@modifies g_messagestream@*/ ;
 
@@ -101,21 +100,7 @@ extern bool flagcode_isModeFlag (flagcode p_f) /*@*/ ;
 extern bool flagcode_isSpecialFlag (flagcode p_f) /*@*/ ;
 extern bool flagcode_isGlobalFlag (flagcode p_f) /*@*/ ;
 extern bool flagcode_isMessageControlFlag (flagcode p_f) /*@*/ ;
-extern bool flagcode_isHelpFlag (flagcode p_f) /*@*/ ;
-
-extern void flags_initMod (void) /*@modifies internalState@*/ ;
-
-extern void
-flags_processFlags (bool p_inCommandLine, 
-                   fileIdList p_xfiles,
-                   fileIdList p_cfiles,
-                   fileIdList p_lclfiles,
-                   fileIdList p_mtfiles,
-                   cstringSList *p_passThroughArgs,
-                   int p_argc, /*@null@*/ char **p_argv)
-     /*@requires maxRead(p_argv) >= (p_argc - 1) @*/
-     /* returns true if normal, false if execution should exit */ ;
-
 # else
 # error "Multiple include"
 # endif
index 396363868f1909330aa5f695daf74fc4fedd6aa5..329e7dbb5826d6ea7856389d4f913bfa084b65cd 100644 (file)
@@ -24,7 +24,6 @@ abst_typedef /*@null@*/ struct s_genericTable *genericTable;
 abst_typedef /*@null@*/ struct s_annotationInfo *annotationInfo;
 abst_typedef /*@null@*/ struct s_inputStream *inputStream;
 abst_typedef /*@null@*/ struct s_stateValue *stateValue;
-abst_typedef /*@null@*/ struct s_pointers *pointers;
 abst_typedef /*@null@*/ genericTable valueTable;
 abst_typedef /*@null@*/ genericTable metaStateTable;
 abst_typedef /*@null@*/ genericTable annotationTable;
@@ -72,12 +71,12 @@ abst_typedef sRefSet globSet;
 abst_typedef /*@null@*/ struct s_constraint *constraint;
 abst_typedef /*@null@*/ struct s_constraintList *constraintList;
 
-abst_typedef /*@null@*/ struct s_ctypeList *ctypeList;
-abst_typedef /*@null@*/ ctypeList fileIdList;
 
 /* DRL modified 9 26 00 */
 
-abst_typedef /*@null@*/ struct s_constraintExpr *constraintExpr;
+abst_typedef /*@notnull@*/ struct s_constraintExpr * constraintExpr;
+
+
 
 /*@-cppnames@*/
 typedef int bool;
@@ -86,10 +85,6 @@ typedef int bool;
 abst_typedef /*@untainted@*/ /*@null@*/ char *cstring;
 typedef /*@only@*/ cstring o_cstring;
 
-abst_typedef /*@null@*/ struct s_cstringSList *cstringSList;
-
-typedef enum e_LSLInitRuleCode LSLInitRuleCode;
-
 immut_typedef int ctype;
 
 /* sRef -> bool */
index 7951d373ecf6e8e0f1ed17a4d35485f45bd752e9..1711cf8aca32dec18f0b5f5756d7d20e2cd91555 100644 (file)
@@ -98,6 +98,12 @@ typedef /*@dependent@*/ char *d_char;
 
 unsigned int int_toNonNegative (int p_x) /*@*/;
 
+/*drl added 4-15-2002 intened to be called on file names*/
+extern bool cstring_isDotH (cstring p_name);
+
+extern void outputCode (cstring p_st);
+
+
 # else
 # error "Multiple include"
 # endif
index 3288b34c296eaf0bc46fecf8ec09381ab4c96b76..0cd603ce0da571c648753be79c329572444217ba 100644 (file)
@@ -232,19 +232,17 @@ extern ctkind ctkind_fromInt (int p_i) /*@*/ ;
 
 extern bool ctype_matchDef (ctype p_c1, ctype p_c2) /*@*/ ;
 extern ctype ctype_undump (char **p_c);
-extern ctype ctype_adjustPointers (pointers p_p, ctype p_c);
+extern ctype ctype_adjustPointers(int p_np, ctype p_c);
 extern ctype ctype_baseArrayPtr (ctype p_c) /*@*/ ;
 extern ctype ctype_combine (ctype p_dominant, ctype p_modifier) ;
 
 extern ctype ctype_createAbstract (typeId p_u)  /*@*/ ;
-
+extern ctype 
+  ctype_createEnum (/*@keep@*/ cstring p_tag, /*@keep@*/ enumNameList p_el);
 extern ctype ctype_createForwardStruct (/*@only@*/ cstring p_n)  /*@*/ ;
 extern ctype ctype_createForwardUnion (/*@only@*/ cstring p_n)  /*@*/ ;
-extern ctype ctype_createForwardEnum (/*@only@*/ cstring p_n) /*@*/ ;
-
 extern ctype ctype_createStruct (/*@only@*/ cstring p_n, /*@only@*/ uentryList p_f);
 extern ctype ctype_createUnion (/*@only@*/ cstring p_n, /*@only@*/ uentryList p_f);
-extern ctype ctype_createEnum (/*@keep@*/ cstring p_tag, /*@keep@*/ enumNameList p_el);
 
 extern ctype ctype_createUnnamedStruct (/*@only@*/ uentryList p_f) ;
 extern ctype ctype_createUnnamedUnion (/*@only@*/ uentryList p_f) ;
@@ -366,11 +364,20 @@ extern ctype ctype_widest (ctype, ctype) /*@*/ ;
 
 /* drl modified */
 extern size_t ctype_getArraySize (ctype p_c);
+
+extern cstring ctype_unparseFunction (ctype p_c, /*@only@*/ cstring p_name);
+
+
+extern cstring
+ctype_unparseFunctionPointer (ctype p_c, cstring p_quals,  /*@only@*/ cstring p_name);
+
 /*end drl add functions */
 
 /* Should only be used in uentry.c */
 extern bool ctype_isUserBool (ctype p_ct) /*@*/ ;
 
+
+
 # else
 # error "Multiple include"
 # endif
index 3d7b0fc997a9e3dfc55ab9fc975a2403aa15394c..89ca3dcc5437ff0aa42f2958a2790b558d84b735 100644 (file)
@@ -10,17 +10,21 @@ extern int main (int p_argc, char *p_argv[])
 # ifdef NOLCL
   /*@globals killed undef g_currentloc,
             killed undef yyin,
-                    undef g_warningstream;@*/
-  /*@modifies g_currentloc, fileSystem, internalState, yyin;@*/
+                    undef g_warningstream,
+   @*/
+  /*@modifies g_currentloc, fileSystem, internalState, yyin; 
+  @*/
 # else
   /*@globals killed undef g_currentloc,
+            killed       g_localSpecPath,  
             killed undef g_currentSpec,
             killed undef g_currentSpecName,
             killed undef g_currentloc,
             killed undef yyin,
                     undef g_warningstream;
    @*/
-  /*@modifies g_currentloc, g_currentSpec, g_currentSpecName,
+  /*@modifies g_currentloc,
+              g_localSpecPath, g_currentSpec, g_currentSpecName,
              yyin, internalState, fileSystem; 
   @*/ 
 # endif
index 208e332a7c1d47246f578cab6edd8143ae767840..2c3dd1ed18798bc011e3547edfbb48e38ef2c14a 100644 (file)
@@ -24,7 +24,7 @@ abst_typedef /*@null@*/ struct
 extern /*@nullwhentrue@*/ bool qtype_isUndefined (qtype p_q);
 # define qtype_isUndefined(q) ((q) == qtype_undefined)
 
-extern /*@falsewhennull@*/ bool qtype_isDefined (qtype p_q);
+extern /*@falsewhennull@*/ bool qtype_isDefined (qtype p_q) /*@*/;
 # define qtype_isDefined(q)   ((q) != qtype_undefined)
 
 extern ctype qtype_getType (/*@sef@*/ qtype p_q);
@@ -51,12 +51,19 @@ extern qtype qtype_combine (/*@returned@*/ qtype p_q1, ctype p_ct);
 extern qtype qtype_mergeAlt (/*@returned@*/ qtype p_q1, /*@only@*/ qtype p_q2);
 
 extern qtype qtype_resolve (/*@returned@*/ qtype p_q);
-extern void qtype_adjustPointers (/*@only@*/ pointers p_n, /*@returned@*/ qtype p_q);
+extern void qtype_adjustPointers (int p_n, /*@returned@*/ qtype p_q);
 extern /*@only@*/ cstring qtype_unparse (qtype p_q) /*@*/ ;
 extern qtype qtype_newBase (/*@returned@*/ qtype p_q, ctype p_ct);
 extern qtype qtype_newQbase (/*@returned@*/ qtype p_q1, qtype p_q2);
 extern void qtype_free (/*@only@*/ qtype p_q);
 
+extern cstring qtype_unparseArraySize (qtype p_q);
+extern cstring qtype_unparseArrayType (qtype p_q);
+
+extern bool qtype_isFixedArray (qtype p_q) /*@*/;
+
+extern bool qtype_isArray (qtype p_q) /*@*/;
+
 # else
 # error "Multiple include"
 # endif
index 646e8abcc2acd19237be8a121b64308c85171010..39d3d584abfa9f43184d951ee2b86b14b854e807 100644 (file)
@@ -19,9 +19,8 @@
 
 typedef enum { 
   QU_UNKNOWN = 0,
-  QU_CONST, QU_VOLATILE, QU_RESTRICT,
-  QU_INLINE, QU_EXTERN, QU_STATIC, 
-  QU_AUTO, QU_REGISTER, 
+  QU_CONST, QU_VOLATILE, QU_INLINE, 
+  QU_EXTERN, QU_STATIC, QU_AUTO, QU_REGISTER, 
   QU_SHORT, QU_LONG, QU_SIGNED, QU_UNSIGNED, 
   QU_OUT, QU_IN,
   QU_ONLY, QU_IMPONLY,
@@ -43,6 +42,7 @@ typedef enum {
   QU_UNDEF, QU_KILLED,
   QU_PRINTFLIKE, QU_SCANFLIKE, QU_MESSAGELIKE,
   QU_USERANNOT,
+  QU_INNERCONST,
   QU_LAST
 } quenum;
 
@@ -92,7 +92,6 @@ extern bool qual_isNeverExit (qual) /*@*/ ;
 extern bool qual_isTrueExit (qual) /*@*/ ;
 extern bool qual_isFalseExit (qual) /*@*/ ;
 extern bool qual_isConst (qual) /*@*/ ;
-extern bool qual_isRestrict (qual) /*@*/ ;
 extern bool qual_isVolatile (qual) /*@*/ ;
 extern bool qual_isInline (qual) /*@*/ ;
 extern bool qual_isExtern (qual) /*@*/ ;
@@ -180,7 +179,6 @@ extern /*@observer@*/ annotationInfo qual_getAnnotationInfo (qual) /*@*/ ;
 # define qual_isTrueExit(q)   ((q)->kind == QU_TRUEEXIT)
 # define qual_isFalseExit(q)  ((q)->kind == QU_FALSEEXIT)
 # define qual_isConst(q)      ((q)->kind == QU_CONST)
-# define qual_isRestrict(q)   ((q)->kind == QU_RESTRICT)
 # define qual_isVolatile(q)   ((q)->kind == QU_VOLATILE)
 # define qual_isInline(q)     ((q)->kind == QU_INLINE)
 # define qual_isExtern(q)     ((q)->kind == QU_EXTERN)
@@ -226,6 +224,8 @@ extern /*@observer@*/ annotationInfo qual_getAnnotationInfo (qual) /*@*/ ;
 
 # define qual_isNullTerminated(q) ((q)->kind == QU_NULLTERMINATED)
 
+# define qual_isInnerConst(q) ((q)->kind == QU_INNERCONST)
+
 extern qual qual_createPlain (quenum) /*@*/ ;
 extern qual qual_createMetaState (/*@observer@*/ annotationInfo) /*@*/ ;
 extern qual qual_createTrueNull (void) /*@*/ ;   
@@ -251,7 +251,6 @@ extern qual qual_createNeverExit (void) /*@*/ ;
 extern qual qual_createFalseExit (void) /*@*/ ;    
 extern qual qual_createTrueExit (void) /*@*/ ;    
 extern qual qual_createConst (void) /*@*/ ;      
-extern qual qual_createRestrict (void) /*@*/ ;      
 extern qual qual_createVolatile (void) /*@*/ ;   
 extern qual qual_createInline (void) /*@*/ ;     
 extern qual qual_createExtern (void) /*@*/ ;     
@@ -323,7 +322,6 @@ extern qual qual_createMessageLike (void) /*@*/ ;
 # define qual_createTrueExit()   qual_createPlain (QU_TRUEEXIT)
 # define qual_createFalseExit()  qual_createPlain (QU_FALSEEXIT)
 # define qual_createConst()      qual_createPlain (QU_CONST)
-# define qual_createRestrict()   qual_createPlain (QU_RESTRICT)
 # define qual_createVolatile()   qual_createPlain (QU_VOLATILE)
 # define qual_createInline()     qual_createPlain (QU_INLINE)
 # define qual_createExtern()     qual_createPlain (QU_EXTERN)
@@ -399,7 +397,8 @@ extern bool qual_isNullStateQual (/*@sef@*/ qual) /*@*/ ;
 # define qual_isCQual(q) \
   (qual_isAuto(q) || qual_isRegister(q) || qual_isInline(q) \
    || qual_isConst(q) || qual_isVolatile(q) || qual_isShort(q) \
-   || qual_isLong (q) || qual_isSigned (q) || qual_isUnsigned (q))
+   || qual_isLong (q) || qual_isSigned (q) || qual_isUnsigned (q)\
+   || qual_isInnerConst(q))
 
 # define qual_isAllocQual(q) \
   (qual_isOut (q) || qual_isIn (q) || qual_isSpecial (q) \
@@ -421,6 +420,7 @@ extern bool qual_isExitQual (/*@sef@*/ qual p_q) /*@*/ ;
   (qual_isExits (q) || qual_isNeverExit (q) || qual_isMayExit (q) \
    || qual_isTrueExit (q) || qual_isFalseExit (q))
 
+cstring insertInnerConstQual(/*@only@*/cstring p_fullId);
 # else
 # error "Multiple include"
 # endif
index 728b3a7ed222ac0bf15bb66ef711758fe4286346..14f7a5c07cc7a331cdefec18f2048ac37748918a 100644 (file)
@@ -101,7 +101,7 @@ extern sort sort_makeSyn (ltoken p_t, sort p_s, lsymbol p_n) /*@*/ ;
 extern sort sort_makeFormal (sort p_insort) /*@*/ ;
 extern sort sort_makeGlobal (sort p_insort) /*@*/ ;
 extern sort sort_makePtr (ltoken p_t, sort p_baseSort) /*@*/ ;
-extern sort sort_makePtrN (sort p_s, pointers p_p) /*@*/ ;
+extern sort sort_makePtrN (sort p_s, int p_pointers) /*@*/ ;
 extern sort sort_makeVal (sort p_sor) /*@*/ ;
 extern sort sort_makeObj (sort p_sor) /*@*/ ;
 
index 265edf61688ccf6b8bcb065f9aa2cbca5effa329..193459b9b2eef10b4317deeb13f0faf41872b488 100644 (file)
 # define COMPARERETURN(z) \
    do { if (z != 0) { return z; } } while (FALSE);
 
+/*drl added 04-23-2002 */
+
+extern int  willOutputCode (void);
+
+#define willOutputCode (!fileloc_isDotH(g_currentloc) ) && context_getFlag(FLG_GENERATECODEANDOVERWRITE) 
+
+//#define willOutputCode \
+// ( (!fileloc_isDotH(g_currentloc) ) && context_getFlag(FLG_GENERATECODEANDOVERWRITE) )
+
 # else
 # error "Multiple include"
 # endif
index f335c937b21b33d5ebd3cd322ac34e0ab17b059c..a97eea3137938363160d5189ee0b2c1406c8937b 100644 (file)
@@ -161,6 +161,9 @@ struct s_uentry
 
   storageClassCode      storageclass;
   /*@relnull@*/ uinfo   info; /* null for KELIPSMARKER, KINVALID */
+
+  qualList cQuals; /*drl 04-19-2002 stores c qualifiers.  THis was neccessary to get the
+                   function to print out right as C quals are not stored anywhere else*/
 } ;
 
 /*
@@ -672,6 +675,10 @@ extern void uentry_setPostconditions (uentry p_ue, /*@only@*/ functionConstraint
 extern void uentry_setPreconditions (uentry p_ue, /*@only@*/ functionConstraint p_preconditions);
 /*end mods*/
 
+/*drl added function for cod generation */
+extern /*@only@*/ cstring uentry_unparseFunctionHeader (uentry p_v) /*@*/;
+
+/*end drl*/
 /*
 ** For debugging only
 */
index 56cd289c7f4798fb7ee1f75c476bdc44240eed3f..8e979a47d69e6b214a8d9cbd39c11132ddda1fbb 100644 (file)
@@ -87,6 +87,8 @@ extern bool uentryList_sameObject (uentryList, uentryList);
 extern bool uentryList_matchFields (uentryList p_p1, uentryList p_p2);
 extern bool uentryList_matchParams (uentryList p_p1, uentryList p_p2, bool p_force, bool p_arg);
 
+extern cstring uentryList_unparseParamsComplete (uentryList p_s);
+
 # define uentryList_sameObject(s,t) ((s) == (t))
 
 /*@constant int uentryListBASESIZE;@*/
index cd9ece6bbbd84f2d02babfc8060886dfe10cf783..bf7cd2b5b98d521ca3cbf054a9febf2fa924ee90 100644 (file)
@@ -40,10 +40,9 @@ CSRC = context.c uentry.c cprim.c macrocache.c qual.c qtype.c stateClause.c \
        stateClauseList.c ctype.c cvar.c clabstract.c idDecl.c clause.c \
        globalsClause.c modifiesClause.c warnClause.c functionClause.c \
        functionClauseList.c metaStateConstraint.c metaStateConstraintList.c \
-       metaStateExpression.c metaStateSpecifier.c functionConstraint.c \
-       pointers.c      
+       metaStateExpression.c metaStateSpecifier.c functionConstraint.c
 
-SPLINTSRC = exprNode.c exprChecks.c llmain.c help.c rcfiles.c
+SPLINTSRC = exprNode.c exprChecks.c llmain.c
 CHECKSRC = structNames.c transferChecks.c varKinds.c nameChecks.c
 
 GLOBSRC = globals.c flags.c general.c osd.c reader.c mtreader.c
@@ -53,6 +52,7 @@ GRAMSRC = cgrammar.c cscanner.c mtscanner.c mtgrammar.c llgrammar.c signature.c
 OVERFLOWCHSRC = constraintGeneration.c constraintTerm.c \
                 constraintExprData.c constraintExpr.c constraint.c \
                 constraintList.c constraintResolve.c \
+                codeGeneration.c \
                 constraintOutput.c loopHeuristics.c 
 
 GENERALSRC = exprData.c cstring.c fileloc.c message.c inputStream.c \
@@ -153,7 +153,7 @@ HEADERSRC = Headers/abstBodyNode.h           Headers/ltokenList.h \
           Headers/exprNode.h               Headers/quantifierNode.h \
           Headers/exprNodeList.h           Headers/quantifierNodeList.h \
           Headers/exprNodeSList.h          Headers/randomNumbers.h \
-          Headers/fcnNode.h                Headers/rcfiles.h \
+          Headers/fcnNode.h                \
           Headers/fcnNodeList.h            Headers/reader.h \
           Headers/fileId.h                 Headers/refTable-branch.h \
           Headers/fileIdList.h             Headers/renamingNode.h \
@@ -287,7 +287,7 @@ Headers/signature_gen.h signature.c: signature.c.der signature.y
          $(BISON) $(YFLAGS) -p lsl signature.y; \
          $(CAT) bison.head signature.tab.c bison.reset >signature.c; \
          $(CP) signature.c signature.c.der; \
-         $(MV) Headers/signature_gen.h Headers/signature_gen.bak; \
+         -$(MV) Headers/signature_gen.h Headers/signature_gen.bak; \
          $(CAT) bison.head signature.tab.h bison.reset >Headers/signature_gen.h; \
          $(RM) signature.tab.c signature.tab.h; \
        fi
@@ -304,7 +304,7 @@ Headers/cgrammar_tokens.h cgrammar.c: cgrammar.c.der cgrammar.y
          $(BISON) $(YFLAGS) cgrammar.y; \
          $(CAT) bison.head cgrammar.tab.c bison.reset >cgrammar.c; \
          $(CP) cgrammar.c cgrammar.c.der; \
-         $(MV) Headers/cgrammar_tokens.h Headers/cgrammar_tokens.bak; \
+         -$(MV) Headers/cgrammar_tokens.h Headers/cgrammar_tokens.bak; \
          $(CAT) bison.head cgrammar.tab.h bison.reset >Headers/cgrammar_tokens.h; \
          $(RM) cgrammar.tab.c cgrammar.tab.h; \
        fi
@@ -321,7 +321,7 @@ Headers/mtgrammar_tokens.h mtgrammar.c: mtgrammar.y
          $(BISON) $(YFLAGS) -p mt mtgrammar.y; \
          $(CAT) bison.head mtgrammar.tab.c bison.reset >mtgrammar.c; \
          $(CP) mtgrammar.c mtgrammar.c.der; \
-         $(MV) Headers/mtgrammar_tokens.h Headers/mtgrammar_tokens.bak; \
+         -$(MV) Headers/mtgrammar_tokens.h Headers/mtgrammar_tokens.bak; \
          $(CAT) bison.head mtgrammar.tab.h bison.reset >Headers/mtgrammar_tokens.h; \
          $(RM) mtgrammar.tab.c mtgrammar.tab.h; \
        fi
@@ -375,7 +375,7 @@ etags:
 lintnew: splintme
 
 splintme: 
-       ./splint $(DEFAULT_INCLUDES) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) +singleinclude $(LINTSRC) $(OVERFLOWCHSRC) $(LCLSRC) -dump lclint +forcehints -misplacedsharequal +showsourceloc -unrecogcomments -supcounts -fcnuse -incondefs -exportlocal -constuse -mts file -mts filerw 
+       ./splint $(DEFAULT_INCLUDES) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) +singleinclude  $(OVERFLOWCHSRC) $(LINTSRC) $(LCLSRC) -dump lclint +forcehints -misplacedsharequal +showsourceloc -unrecogcomments -supcounts -fcnuse -incondefs -exportlocal -constuse -mts file -mts filerw
 
 splintsome: 
        ./splint $(DEFAULT_INCLUDES) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) +singleinclude lcllib.c  -dump lclint +forcehints -misplacedsharequal +showsourceloc -unrecogcomments -supcounts -fcnuse -incondefs -exportlocal -constuse -mts file -mts filerw +partial
index 044831e97d089fb418f809fa3057ff991d64fc54..6fa9d65121948eaf254557a8de964287bc606243 100644 (file)
@@ -121,11 +121,10 @@ CSRC = context.c uentry.c cprim.c macrocache.c qual.c qtype.c stateClause.c \
        stateClauseList.c ctype.c cvar.c clabstract.c idDecl.c clause.c \
        globalsClause.c modifiesClause.c warnClause.c functionClause.c \
        functionClauseList.c metaStateConstraint.c metaStateConstraintList.c \
-       metaStateExpression.c metaStateSpecifier.c functionConstraint.c \
-       pointers.c      
+       metaStateExpression.c metaStateSpecifier.c functionConstraint.c
 
 
-SPLINTSRC = exprNode.c exprChecks.c llmain.c help.c rcfiles.c
+SPLINTSRC = exprNode.c exprChecks.c llmain.c
 CHECKSRC = structNames.c transferChecks.c varKinds.c nameChecks.c
 
 GLOBSRC = globals.c flags.c general.c osd.c reader.c mtreader.c
@@ -135,6 +134,7 @@ GRAMSRC = cgrammar.c cscanner.c mtscanner.c mtgrammar.c llgrammar.c signature.c
 OVERFLOWCHSRC = constraintGeneration.c constraintTerm.c \
                 constraintExprData.c constraintExpr.c constraint.c \
                 constraintList.c constraintResolve.c \
+                codeGeneration.c \
                 constraintOutput.c loopHeuristics.c 
 
 
@@ -239,7 +239,7 @@ HEADERSRC = Headers/abstBodyNode.h           Headers/ltokenList.h \
           Headers/exprNode.h               Headers/quantifierNode.h \
           Headers/exprNodeList.h           Headers/quantifierNodeList.h \
           Headers/exprNodeSList.h          Headers/randomNumbers.h \
-          Headers/fcnNode.h                Headers/rcfiles.h \
+          Headers/fcnNode.h                \
           Headers/fcnNodeList.h            Headers/reader.h \
           Headers/fileId.h                 Headers/refTable-branch.h \
           Headers/fileIdList.h             Headers/renamingNode.h \
@@ -409,12 +409,11 @@ am_splint_OBJECTS = cgrammar.$(OBJEXT) cscanner.$(OBJEXT) \
        functionClause.$(OBJEXT) functionClauseList.$(OBJEXT) \
        metaStateConstraint.$(OBJEXT) metaStateConstraintList.$(OBJEXT) \
        metaStateExpression.$(OBJEXT) metaStateSpecifier.$(OBJEXT) \
-       functionConstraint.$(OBJEXT) pointers.$(OBJEXT) \
-       structNames.$(OBJEXT) transferChecks.$(OBJEXT) \
-       varKinds.$(OBJEXT) nameChecks.$(OBJEXT) exprData.$(OBJEXT) \
-       cstring.$(OBJEXT) fileloc.$(OBJEXT) message.$(OBJEXT) \
-       inputStream.$(OBJEXT) fileTable.$(OBJEXT) \
-       cstringTable.$(OBJEXT) valueTable.$(OBJEXT) \
+       functionConstraint.$(OBJEXT) structNames.$(OBJEXT) \
+       transferChecks.$(OBJEXT) varKinds.$(OBJEXT) \
+       nameChecks.$(OBJEXT) exprData.$(OBJEXT) cstring.$(OBJEXT) \
+       fileloc.$(OBJEXT) message.$(OBJEXT) inputStream.$(OBJEXT) \
+       fileTable.$(OBJEXT) cstringTable.$(OBJEXT) valueTable.$(OBJEXT) \
        stateValue.$(OBJEXT) llerror.$(OBJEXT) messageLog.$(OBJEXT) \
        flagMarker.$(OBJEXT) aliasTable.$(OBJEXT) ynm.$(OBJEXT) \
        sRefTable.$(OBJEXT) genericTable.$(OBJEXT) ekind.$(OBJEXT) \
@@ -446,10 +445,10 @@ am_splint_OBJECTS = cgrammar.$(OBJEXT) cscanner.$(OBJEXT) \
        mtDefaultsDecl.$(OBJEXT) mtMergeItem.$(OBJEXT) \
        mtMergeClause.$(OBJEXT) mtMergeClauseList.$(OBJEXT) \
        exprNode.$(OBJEXT) exprChecks.$(OBJEXT) llmain.$(OBJEXT) \
-       help.$(OBJEXT) rcfiles.$(OBJEXT) constraintGeneration.$(OBJEXT) \
-       constraintTerm.$(OBJEXT) constraintExprData.$(OBJEXT) \
-       constraintExpr.$(OBJEXT) constraint.$(OBJEXT) \
-       constraintList.$(OBJEXT) constraintResolve.$(OBJEXT) \
+       constraintGeneration.$(OBJEXT) constraintTerm.$(OBJEXT) \
+       constraintExprData.$(OBJEXT) constraintExpr.$(OBJEXT) \
+       constraint.$(OBJEXT) constraintList.$(OBJEXT) \
+       constraintResolve.$(OBJEXT) codeGeneration.$(OBJEXT) \
        constraintOutput.$(OBJEXT) loopHeuristics.$(OBJEXT)
 splint_OBJECTS = $(am_splint_OBJECTS)
 splint_LDFLAGS =
@@ -465,7 +464,8 @@ depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 @AMDEP_TRUE@   $(DEPDIR)/annotationTable.Po $(DEPDIR)/cgrammar.Po \
 @AMDEP_TRUE@   $(DEPDIR)/checking.Po $(DEPDIR)/clabstract.Po \
 @AMDEP_TRUE@   $(DEPDIR)/clause.Po $(DEPDIR)/clauseStack.Po \
-@AMDEP_TRUE@   $(DEPDIR)/constraint.Po $(DEPDIR)/constraintExpr.Po \
+@AMDEP_TRUE@   $(DEPDIR)/codeGeneration.Po $(DEPDIR)/constraint.Po \
+@AMDEP_TRUE@   $(DEPDIR)/constraintExpr.Po \
 @AMDEP_TRUE@   $(DEPDIR)/constraintExprData.Po \
 @AMDEP_TRUE@   $(DEPDIR)/constraintGeneration.Po \
 @AMDEP_TRUE@   $(DEPDIR)/constraintList.Po \
@@ -497,9 +497,9 @@ depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 @AMDEP_TRUE@   $(DEPDIR)/general.Po $(DEPDIR)/genericTable.Po \
 @AMDEP_TRUE@   $(DEPDIR)/globSet.Po $(DEPDIR)/globals.Po \
 @AMDEP_TRUE@   $(DEPDIR)/globalsClause.Po $(DEPDIR)/guardSet.Po \
-@AMDEP_TRUE@   $(DEPDIR)/help.Po $(DEPDIR)/idDecl.Po \
-@AMDEP_TRUE@   $(DEPDIR)/idDeclList.Po $(DEPDIR)/importNodeList.Po \
-@AMDEP_TRUE@   $(DEPDIR)/imports.Po $(DEPDIR)/initDeclNodeList.Po \
+@AMDEP_TRUE@   $(DEPDIR)/idDecl.Po $(DEPDIR)/idDeclList.Po \
+@AMDEP_TRUE@   $(DEPDIR)/importNodeList.Po $(DEPDIR)/imports.Po \
+@AMDEP_TRUE@   $(DEPDIR)/initDeclNodeList.Po \
 @AMDEP_TRUE@   $(DEPDIR)/inputStream.Po $(DEPDIR)/intSet.Po \
 @AMDEP_TRUE@   $(DEPDIR)/interfaceNodeList.Po \
 @AMDEP_TRUE@   $(DEPDIR)/lclctypes.Po $(DEPDIR)/lclinit.Po \
@@ -546,19 +546,19 @@ depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 @AMDEP_TRUE@   $(DEPDIR)/mttok.Po $(DEPDIR)/multiVal.Po \
 @AMDEP_TRUE@   $(DEPDIR)/nameChecks.Po $(DEPDIR)/osd.Po \
 @AMDEP_TRUE@   $(DEPDIR)/pairNodeList.Po \
-@AMDEP_TRUE@   $(DEPDIR)/paramNodeList.Po $(DEPDIR)/pointers.Po \
+@AMDEP_TRUE@   $(DEPDIR)/paramNodeList.Po \
 @AMDEP_TRUE@   $(DEPDIR)/programNodeList.Po $(DEPDIR)/qtype.Po \
 @AMDEP_TRUE@   $(DEPDIR)/qual.Po $(DEPDIR)/qualList.Po \
 @AMDEP_TRUE@   $(DEPDIR)/quantifierNodeList.Po \
-@AMDEP_TRUE@   $(DEPDIR)/randomNumbers.Po $(DEPDIR)/rcfiles.Po \
-@AMDEP_TRUE@   $(DEPDIR)/reader.Po $(DEPDIR)/replaceNodeList.Po \
-@AMDEP_TRUE@   $(DEPDIR)/sRef.Po $(DEPDIR)/sRefList.Po \
-@AMDEP_TRUE@   $(DEPDIR)/sRefSet.Po $(DEPDIR)/sRefSetList.Po \
-@AMDEP_TRUE@   $(DEPDIR)/sRefTable.Po $(DEPDIR)/scan.Po \
-@AMDEP_TRUE@   $(DEPDIR)/scanline.Po $(DEPDIR)/shift.Po \
-@AMDEP_TRUE@   $(DEPDIR)/sigNodeSet.Po $(DEPDIR)/signature.Po \
-@AMDEP_TRUE@   $(DEPDIR)/sort.Po $(DEPDIR)/sortList.Po \
-@AMDEP_TRUE@   $(DEPDIR)/sortSet.Po $(DEPDIR)/sortSetList.Po \
+@AMDEP_TRUE@   $(DEPDIR)/randomNumbers.Po $(DEPDIR)/reader.Po \
+@AMDEP_TRUE@   $(DEPDIR)/replaceNodeList.Po $(DEPDIR)/sRef.Po \
+@AMDEP_TRUE@   $(DEPDIR)/sRefList.Po $(DEPDIR)/sRefSet.Po \
+@AMDEP_TRUE@   $(DEPDIR)/sRefSetList.Po $(DEPDIR)/sRefTable.Po \
+@AMDEP_TRUE@   $(DEPDIR)/scan.Po $(DEPDIR)/scanline.Po \
+@AMDEP_TRUE@   $(DEPDIR)/shift.Po $(DEPDIR)/sigNodeSet.Po \
+@AMDEP_TRUE@   $(DEPDIR)/signature.Po $(DEPDIR)/sort.Po \
+@AMDEP_TRUE@   $(DEPDIR)/sortList.Po $(DEPDIR)/sortSet.Po \
+@AMDEP_TRUE@   $(DEPDIR)/sortSetList.Po \
 @AMDEP_TRUE@   $(DEPDIR)/stDeclNodeList.Po \
 @AMDEP_TRUE@   $(DEPDIR)/stateClause.Po \
 @AMDEP_TRUE@   $(DEPDIR)/stateClauseList.Po \
@@ -583,7 +583,7 @@ CCLD = $(CC)
 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 CFLAGS = @CFLAGS@
 DIST_SOURCES = $(lcl_SOURCES) $(splint_SOURCES)
-DIST_COMMON = ChangeLog Makefile.am Makefile.in
+DIST_COMMON = Makefile.am Makefile.in
 SOURCES = $(lcl_SOURCES) $(splint_SOURCES)
 
 all: $(BUILT_SOURCES)
@@ -640,6 +640,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/clabstract.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/clause.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/clauseStack.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/codeGeneration.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/constraint.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/constraintExpr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/constraintExprData.Po@am__quote@
@@ -693,7 +694,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/globals.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/globalsClause.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/guardSet.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/help.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/idDecl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/idDeclList.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/importNodeList.Po@am__quote@
@@ -765,14 +765,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/osd.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/pairNodeList.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/paramNodeList.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/pointers.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/programNodeList.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/qtype.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/qual.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/qualList.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/quantifierNodeList.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/randomNumbers.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/rcfiles.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/reader.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/replaceNodeList.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/sRef.Po@am__quote@
@@ -981,7 +979,7 @@ Headers/signature_gen.h signature.c: signature.c.der signature.y
          $(BISON) $(YFLAGS) -p lsl signature.y; \
          $(CAT) bison.head signature.tab.c bison.reset >signature.c; \
          $(CP) signature.c signature.c.der; \
-         $(MV) Headers/signature_gen.h Headers/signature_gen.bak; \
+         -$(MV) Headers/signature_gen.h Headers/signature_gen.bak; \
          $(CAT) bison.head signature.tab.h bison.reset >Headers/signature_gen.h; \
          $(RM) signature.tab.c signature.tab.h; \
        fi
@@ -996,7 +994,7 @@ Headers/cgrammar_tokens.h cgrammar.c: cgrammar.c.der cgrammar.y
          $(BISON) $(YFLAGS) cgrammar.y; \
          $(CAT) bison.head cgrammar.tab.c bison.reset >cgrammar.c; \
          $(CP) cgrammar.c cgrammar.c.der; \
-         $(MV) Headers/cgrammar_tokens.h Headers/cgrammar_tokens.bak; \
+         -$(MV) Headers/cgrammar_tokens.h Headers/cgrammar_tokens.bak; \
          $(CAT) bison.head cgrammar.tab.h bison.reset >Headers/cgrammar_tokens.h; \
          $(RM) cgrammar.tab.c cgrammar.tab.h; \
        fi
@@ -1010,7 +1008,7 @@ Headers/mtgrammar_tokens.h mtgrammar.c: mtgrammar.y
          $(BISON) $(YFLAGS) -p mt mtgrammar.y; \
          $(CAT) bison.head mtgrammar.tab.c bison.reset >mtgrammar.c; \
          $(CP) mtgrammar.c mtgrammar.c.der; \
-         $(MV) Headers/mtgrammar_tokens.h Headers/mtgrammar_tokens.bak; \
+         -$(MV) Headers/mtgrammar_tokens.h Headers/mtgrammar_tokens.bak; \
          $(CAT) bison.head mtgrammar.tab.h bison.reset >Headers/mtgrammar_tokens.h; \
          $(RM) mtgrammar.tab.c mtgrammar.tab.h; \
        fi
@@ -1056,7 +1054,7 @@ etags:
 lintnew: splintme
 
 splintme: 
-       ./splint $(DEFAULT_INCLUDES) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) +singleinclude $(LINTSRC) $(OVERFLOWCHSRC) $(LCLSRC) -dump lclint +forcehints -misplacedsharequal +showsourceloc -unrecogcomments -supcounts -fcnuse -incondefs -exportlocal -constuse -mts file -mts filerw 
+       ./splint $(DEFAULT_INCLUDES) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) +singleinclude  $(OVERFLOWCHSRC) $(LINTSRC) $(LCLSRC) -dump lclint +forcehints -misplacedsharequal +showsourceloc -unrecogcomments -supcounts -fcnuse -incondefs -exportlocal -constuse -mts file -mts filerw
 
 splintsome: 
        ./splint $(DEFAULT_INCLUDES) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) +singleinclude lcllib.c  -dump lclint +forcehints -misplacedsharequal +showsourceloc -unrecogcomments -supcounts -fcnuse -incondefs -exportlocal -constuse -mts file -mts filerw +partial
index 301a81f67a33cce9472170ba69da218746ec4093..e57c603bd7f93981d8d457d8ca37f166b51b8543 100644 (file)
@@ -1674,7 +1674,7 @@ makeLclTypeSpecNodeConj (/*@null@*/ lclTypeSpecNode a, /*@null@*/ lclTypeSpecNod
   lclTypeSpecNode n = (lclTypeSpecNode) dmalloc (sizeof (*n));
 
   n->kind = LTS_CONJ;
-  n->pointers = pointers_undefined;
+  n->pointers = 0;
   n->quals = qualList_new ();
   n->content.conj = (lclconj) dmalloc (sizeof (*n->content.conj));
   n->content.conj->a = a;
@@ -1689,7 +1689,7 @@ makeLclTypeSpecNodeType (/*@null@*/ CTypesNode x)
   lclTypeSpecNode n = (lclTypeSpecNode) dmalloc (sizeof (*n));
 
   n->kind = LTS_TYPE;
-  n->pointers = pointers_undefined;
+  n->pointers = 0;
   n->content.type = x;
   n->quals = qualList_new ();
   return (n);
@@ -1701,7 +1701,7 @@ makeLclTypeSpecNodeSU (/*@null@*/ strOrUnionNode x)
   lclTypeSpecNode n = (lclTypeSpecNode) dmalloc (sizeof (*n));
 
   n->kind = LTS_STRUCTUNION;
-  n->pointers = pointers_undefined;
+  n->pointers = 0;
   n->content.structorunion = x;
   n->quals = qualList_new ();
   return (n);
@@ -1714,7 +1714,7 @@ makeLclTypeSpecNodeEnum (/*@null@*/ enumSpecNode x)
 
   n->quals = qualList_new ();
   n->kind = LTS_ENUM;
-  n->pointers = pointers_undefined;
+  n->pointers = 0;
   n->content.enumspec = x;
   return (n);
 }
@@ -3235,7 +3235,7 @@ paramNode_checkQualifiers (lclTypeSpecNode t, typeExpr d)
 
   llassert (lclTypeSpecNode_isDefined (t));
 
-  if (pointers_isUndefined (t->pointers)
+  if (t->pointers == 0 
       && (d != (typeExpr)0 && d->kind != TEXPR_PTR) && d->kind != TEXPR_ARRAY)
     {
       if (t->kind == LTS_TYPE)
@@ -5179,10 +5179,12 @@ lclTypeSpecNode2sort (lclTypeSpecNode type)
          return sort_makePtrN (type->content.type->sort, type->pointers);
        case LTS_STRUCTUNION:
          llassert (type->content.structorunion != NULL);
-         return sort_makePtrN (type->content.structorunion->sort, type->pointers);
+         return sort_makePtrN (type->content.structorunion->sort,
+                               type->pointers);
        case LTS_ENUM:
          llassert (type->content.enumspec != NULL);
-         return sort_makePtrN (type->content.enumspec->sort, type->pointers);
+         return sort_makePtrN (type->content.enumspec->sort, 
+                               type->pointers);
        case LTS_CONJ:
          return (lclTypeSpecNode2sort (type->content.conj->a));
        }
index 4be861899be702be091292f73c53a87ff6c2151d..0736e31362f6d1b815c75bb182bf17d5e44878d2 100644 (file)
 #define        QMESSAGELIKE    363
 #define        QNOTREACHED     364
 #define        QCONST  365
-#define        QRESTRICT       366
-#define        QVOLATILE       367
-#define        QINLINE 368
-#define        QEXTENSION      369
-#define        QEXTERN 370
-#define        QSTATIC 371
-#define        QAUTO   372
-#define        QREGISTER       373
-#define        QOUT    374
-#define        QIN     375
-#define        QYIELD  376
-#define        QONLY   377
-#define        QTEMP   378
-#define        QSHARED 379
-#define        QREF    380
-#define        QUNIQUE 381
-#define        QCHECKED        382
-#define        QUNCHECKED      383
-#define        QCHECKEDSTRICT  384
-#define        QCHECKMOD       385
-#define        QKEEP   386
-#define        QKEPT   387
-#define        QPARTIAL        388
-#define        QSPECIAL        389
-#define        QOWNED  390
-#define        QDEPENDENT      391
-#define        QRETURNED       392
-#define        QEXPOSED        393
-#define        QNULL   394
-#define        QOBSERVER       395
-#define        QISNULL 396
-#define        QEXITS  397
-#define        QMAYEXIT        398
-#define        QNEVEREXIT      399
-#define        QTRUEEXIT       400
-#define        QFALSEEXIT      401
-#define        QLONG   402
-#define        QSIGNED 403
-#define        QUNSIGNED       404
-#define        QSHORT  405
-#define        QUNUSED 406
-#define        QSEF    407
-#define        QNOTNULL        408
-#define        QRELNULL        409
-#define        QABSTRACT       410
-#define        QCONCRETE       411
-#define        QMUTABLE        412
-#define        QIMMUTABLE      413
-#define        QTRUENULL       414
-#define        QFALSENULL      415
-#define        QEXTERNAL       416
-#define        QREFCOUNTED     417
-#define        QREFS   418
-#define        QNEWREF 419
-#define        QTEMPREF        420
-#define        QKILLREF        421
-#define        QRELDEF 422
-#define        CGCHAR  423
-#define        CBOOL   424
-#define        CINT    425
-#define        CGFLOAT 426
-#define        CDOUBLE 427
-#define        CVOID   428
-#define        QANYTYPE        429
-#define        QINTEGRALTYPE   430
-#define        QUNSIGNEDINTEGRALTYPE   431
-#define        QSIGNEDINTEGRALTYPE     432
-#define        QNULLTERMINATED 433
-#define        QSETBUFFERSIZE  434
-#define        QSETSTRINGLENGTH        435
-#define        QMAXSET 436
-#define        QMAXREAD        437
-#define        QTESTINRANGE    438
-#define        TCAND   439
-#define        IDENTIFIER      440
-#define        NEW_IDENTIFIER  441
-#define        TYPE_NAME_OR_ID 442
-#define        CANNOTATION     443
-#define        CCONSTANT       444
-#define        ITER_NAME       445
-#define        ITER_ENDNAME    446
-#define        TYPE_NAME       447
-#define        METASTATE_NAME  448
+#define        QVOLATILE       366
+#define        QINLINE 367
+#define        QEXTENSION      368
+#define        QEXTERN 369
+#define        QSTATIC 370
+#define        QAUTO   371
+#define        QREGISTER       372
+#define        QOUT    373
+#define        QIN     374
+#define        QYIELD  375
+#define        QONLY   376
+#define        QTEMP   377
+#define        QSHARED 378
+#define        QREF    379
+#define        QUNIQUE 380
+#define        QCHECKED        381
+#define        QUNCHECKED      382
+#define        QCHECKEDSTRICT  383
+#define        QCHECKMOD       384
+#define        QKEEP   385
+#define        QKEPT   386
+#define        QPARTIAL        387
+#define        QSPECIAL        388
+#define        QOWNED  389
+#define        QDEPENDENT      390
+#define        QRETURNED       391
+#define        QEXPOSED        392
+#define        QNULL   393
+#define        QOBSERVER       394
+#define        QISNULL 395
+#define        QEXITS  396
+#define        QMAYEXIT        397
+#define        QNEVEREXIT      398
+#define        QTRUEEXIT       399
+#define        QFALSEEXIT      400
+#define        QLONG   401
+#define        QSIGNED 402
+#define        QUNSIGNED       403
+#define        QSHORT  404
+#define        QUNUSED 405
+#define        QSEF    406
+#define        QNOTNULL        407
+#define        QRELNULL        408
+#define        QABSTRACT       409
+#define        QCONCRETE       410
+#define        QMUTABLE        411
+#define        QIMMUTABLE      412
+#define        QTRUENULL       413
+#define        QFALSENULL      414
+#define        QEXTERNAL       415
+#define        QREFCOUNTED     416
+#define        QREFS   417
+#define        QNEWREF 418
+#define        QTEMPREF        419
+#define        QKILLREF        420
+#define        QRELDEF 421
+#define        CGCHAR  422
+#define        CBOOL   423
+#define        CINT    424
+#define        CGFLOAT 425
+#define        CDOUBLE 426
+#define        CVOID   427
+#define        QANYTYPE        428
+#define        QINTEGRALTYPE   429
+#define        QUNSIGNEDINTEGRALTYPE   430
+#define        QSIGNEDINTEGRALTYPE     431
+#define        QNULLTERMINATED 432
+#define        QSETBUFFERSIZE  433
+#define        QSETSTRINGLENGTH        434
+#define        QMAXSET 435
+#define        QMAXREAD        436
+#define        QTESTINRANGE    437
+#define        TCAND   438
+#define        IDENTIFIER      439
+#define        NEW_IDENTIFIER  440
+#define        TYPE_NAME_OR_ID 441
+#define        CANNOTATION     442
+#define        CCONSTANT       443
+#define        ITER_NAME       444
+#define        ITER_ENDNAME    445
+#define        TYPE_NAME       446
+#define        METASTATE_NAME  447
 
 
 /*
@@ -321,7 +320,7 @@ typedef union
   /*@only@*/ modifiesClause modsclause;
   /*@only@*/ warnClause warnclause;
   /*@only@*/ stateClause stateclause;
-  /*@only@*/ pointers pointers;
+
   /*@only@*/ functionConstraint fcnconstraint; 
 
   /*@only@*/ metaStateConstraint msconstraint;
@@ -368,11 +367,11 @@ typedef union
 
 
 
-#define        YYFINAL         1239
+#define        YYFINAL         1233
 #define        YYFLAG          -32768
-#define        YYNTBASE        195
+#define        YYNTBASE        194
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 448 ? yytranslate[x] : 460)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 447 ? yytranslate[x] : 459)
 
 static const short yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -419,7 +418,7 @@ static const short yytranslate[] = {     0,
    157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
    167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
    177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
-   187,   188,   189,   190,   191,   192,   193,   194
+   187,   188,   189,   190,   191,   192,   193
 };
 
 #if YYDEBUG != 0
@@ -443,277 +442,276 @@ static const short yyprhs[] = {     0,
    475,   477,   479,   483,   485,   487,   489,   493,   495,   497,
    498,   503,   505,   510,   514,   519,   526,   532,   538,   541,
    544,   552,   554,   558,   560,   563,   566,   569,   572,   575,
-   578,   581,   584,   586,   588,   592,   597,   599,   609,   610,
-   614,   619,   622,   627,   630,   632,   637,   639,   643,   647,
-   651,   653,   657,   661,   663,   667,   671,   673,   677,   681,
-   685,   689,   691,   695,   699,   701,   705,   707,   711,   713,
-   717,   719,   720,   725,   727,   728,   733,   735,   736,   737,
-   745,   747,   751,   755,   759,   763,   767,   771,   775,   779,
-   783,   787,   791,   793,   797,   798,   800,   802,   804,   806,
-   808,   812,   813,   823,   824,   836,   839,   840,   847,   848,
-   857,   862,   867,   868,   869,   872,   874,   879,   880,   885,
-   887,   891,   896,   899,   902,   905,   907,   910,   914,   917,
-   919,   923,   925,   927,   929,   931,   933,   936,   937,   944,
-   947,   950,   951,   958,   959,   965,   967,   969,   971,   973,
-   975,   977,   979,   981,   983,   985,   987,   989,   991,   993,
-   995,   997,   999,  1001,  1003,  1005,  1007,  1009,  1011,  1013,
-  1015,  1017,  1019,  1021,  1023,  1025,  1027,  1029,  1031,  1033,
-  1035,  1037,  1039,  1041,  1043,  1045,  1047,  1049,  1051,  1053,
-  1055,  1057,  1059,  1061,  1063,  1065,  1067,  1069,  1072,  1075,
-  1078,  1081,  1084,  1087,  1090,  1093,  1096,  1099,  1102,  1105,
-  1108,  1111,  1114,  1117,  1120,  1123,  1126,  1129,  1132,  1135,
-  1138,  1141,  1144,  1147,  1151,  1153,  1158,  1160,  1164,  1167,
-  1170,  1173,  1174,  1176,  1177,  1178,  1179,  1192,  1193,  1194,
-  1206,  1213,  1220,  1221,  1222,  1233,  1234,  1235,  1246,  1252,
-  1258,  1263,  1268,  1269,  1271,  1273,  1276,  1282,  1286,  1289,
-  1294,  1296,  1300,  1305,  1312,  1313,  1322,  1327,  1329,  1333,
-  1336,  1338,  1343,  1345,  1347,  1350,  1353,  1355,  1358,  1360,
-  1363,  1365,  1367,  1369,  1371,  1374,  1376,  1379,  1382,  1386,
-  1388,  1392,  1394,  1398,  1400,  1402,  1406,  1407,  1410,  1411,
-  1416,  1421,  1423,  1425,  1428,  1430,  1432,  1435,  1436,  1438,
-  1444,  1447,  1451,  1455,  1460,  1464,  1469,  1474,  1480,  1482,
-  1484,  1486,  1488,  1490,  1492,  1494,  1496,  1498,  1500,  1502,
-  1504,  1507,  1510,  1518,  1525,  1528,  1529,  1530,  1541,  1542,
-  1549,  1551,  1553,  1555,  1557,  1560,  1562,  1564,  1566,  1568,
-  1570,  1572,  1574,  1578,  1580,  1581,  1585,  1588,  1591,  1593,
-  1595,  1597,  1599,  1601,  1603,  1605,  1607,  1609,  1611,  1615,
-  1617,  1619,  1622,  1625,  1626,  1629,  1630,  1635,  1636,  1643,
-  1644,  1648,  1649,  1655,  1659,  1662,  1666,  1667,  1668,  1669,
-  1670,  1671,  1673,  1676,  1679,  1683,  1686,  1690,  1694,  1699,
-  1702,  1705,  1709,  1713,  1718,  1720,  1723,  1725,  1728,  1730,
-  1734,  1736,  1741,  1743,  1746,  1748,  1751,  1753,  1756,  1758,
-  1763,  1766,  1767,  1773,  1774,  1781,  1786,  1791,  1792,  1793,
-  1804,  1806,  1807,  1812,  1814,  1816,  1818,  1820,  1822,  1825,
-  1827,  1831,  1833,  1838,  1842,  1847,  1854,  1860,  1866,  1869,
-  1872,  1874,  1877,  1880,  1883,  1886,  1889,  1892,  1895,  1898,
-  1900,  1902,  1907,  1909,  1913,  1917,  1921,  1923,  1927,  1931,
-  1933,  1937,  1941,  1943,  1947,  1951,  1955,  1959,  1961,  1965,
-  1969,  1971,  1975,  1977,  1981,  1983,  1987,  1989,  1993,  1995,
-  1999,  2001,  2002,  2003,  2011,  2013,  2017,  2021,  2025,  2029,
-  2033,  2037,  2041,  2045,  2049,  2053,  2057,  2059,  2060,  2062,
-  2065,  2073,  2076,  2079,  2087,  2094,  2097,  2101,  2104,  2108,
-  2111,  2115,  2119,  2123,  2127,  2130,  2134,  2135,  2137,  2138,
-  2140,  2142,  2144,  2146,  2148,  2150,  2152,  2154,  2156,  2161
+   578,   581,   584,   586,   588,   592,   594,   604,   605,   609,
+   614,   617,   622,   625,   627,   632,   634,   638,   642,   646,
+   648,   652,   656,   658,   662,   666,   668,   672,   676,   680,
+   684,   686,   690,   694,   696,   700,   702,   706,   708,   712,
+   714,   715,   720,   722,   723,   728,   730,   731,   732,   740,
+   742,   746,   750,   754,   758,   762,   766,   770,   774,   778,
+   782,   786,   788,   792,   793,   795,   797,   799,   801,   803,
+   807,   808,   818,   819,   831,   834,   835,   842,   843,   852,
+   857,   862,   863,   864,   867,   869,   874,   875,   880,   882,
+   886,   891,   894,   897,   900,   902,   905,   909,   912,   914,
+   918,   920,   922,   924,   926,   928,   931,   932,   939,   942,
+   945,   946,   953,   954,   960,   962,   964,   966,   968,   970,
+   972,   974,   976,   978,   980,   982,   984,   986,   988,   990,
+   992,   994,   996,   998,  1000,  1002,  1004,  1006,  1008,  1010,
+  1012,  1014,  1016,  1018,  1020,  1022,  1024,  1026,  1028,  1030,
+  1032,  1034,  1036,  1038,  1040,  1042,  1044,  1046,  1048,  1050,
+  1052,  1054,  1056,  1058,  1060,  1062,  1064,  1067,  1070,  1073,
+  1076,  1079,  1082,  1085,  1088,  1091,  1094,  1097,  1100,  1103,
+  1106,  1109,  1112,  1115,  1118,  1121,  1124,  1127,  1130,  1133,
+  1136,  1139,  1143,  1145,  1150,  1152,  1156,  1159,  1162,  1165,
+  1166,  1168,  1169,  1170,  1171,  1184,  1185,  1186,  1198,  1205,
+  1212,  1213,  1214,  1225,  1226,  1227,  1238,  1244,  1250,  1255,
+  1260,  1261,  1263,  1265,  1268,  1274,  1278,  1281,  1286,  1288,
+  1292,  1297,  1304,  1305,  1314,  1319,  1321,  1325,  1328,  1330,
+  1335,  1337,  1339,  1342,  1345,  1347,  1350,  1352,  1355,  1357,
+  1359,  1361,  1364,  1366,  1369,  1372,  1376,  1378,  1382,  1384,
+  1388,  1390,  1392,  1396,  1397,  1400,  1401,  1406,  1411,  1413,
+  1415,  1418,  1420,  1422,  1425,  1426,  1428,  1434,  1437,  1441,
+  1445,  1450,  1454,  1459,  1464,  1470,  1472,  1474,  1476,  1478,
+  1480,  1482,  1484,  1486,  1488,  1490,  1492,  1494,  1497,  1500,
+  1508,  1515,  1518,  1519,  1520,  1531,  1532,  1539,  1541,  1543,
+  1545,  1547,  1550,  1552,  1554,  1556,  1558,  1560,  1562,  1564,
+  1568,  1570,  1571,  1575,  1578,  1581,  1583,  1585,  1587,  1589,
+  1591,  1593,  1595,  1597,  1599,  1601,  1605,  1607,  1609,  1612,
+  1615,  1616,  1619,  1620,  1625,  1626,  1633,  1634,  1638,  1639,
+  1645,  1649,  1652,  1656,  1657,  1658,  1659,  1660,  1661,  1663,
+  1666,  1669,  1673,  1676,  1680,  1684,  1689,  1692,  1695,  1699,
+  1703,  1708,  1710,  1713,  1715,  1718,  1720,  1724,  1726,  1731,
+  1733,  1736,  1738,  1741,  1743,  1746,  1748,  1753,  1756,  1757,
+  1763,  1764,  1771,  1776,  1781,  1782,  1783,  1794,  1796,  1797,
+  1802,  1804,  1806,  1808,  1810,  1812,  1815,  1817,  1821,  1823,
+  1828,  1832,  1837,  1844,  1850,  1856,  1859,  1862,  1864,  1867,
+  1870,  1873,  1876,  1879,  1882,  1885,  1888,  1890,  1892,  1897,
+  1899,  1903,  1907,  1911,  1913,  1917,  1921,  1923,  1927,  1931,
+  1933,  1937,  1941,  1945,  1949,  1951,  1955,  1959,  1961,  1965,
+  1967,  1971,  1973,  1977,  1979,  1983,  1985,  1989,  1991,  1992,
+  1993,  2001,  2003,  2007,  2011,  2015,  2019,  2023,  2027,  2031,
+  2035,  2039,  2043,  2047,  2049,  2050,  2052,  2055,  2063,  2066,
+  2069,  2077,  2084,  2087,  2091,  2094,  2098,  2101,  2105,  2109,
+  2113,  2117,  2120,  2124,  2125,  2127,  2128,  2130,  2132,  2134,
+  2136,  2138,  2140,  2142,  2144,  2146,  2151
 };
 
 static const short yyrhs[] = {    -1,
-   196,     0,   197,     0,   196,   197,     0,   258,   455,     0,
-   198,     0,   199,     0,   209,     0,   212,     0,   296,     0,
-    18,     0,     1,     0,    77,   337,   351,   361,   351,   455,
-   304,    91,     0,    77,   337,   351,   361,   351,    23,   304,
-   309,   308,   455,    91,     0,     0,    78,   200,   201,   455,
-    91,     0,   202,     0,   337,   351,   202,     0,   206,     0,
-   365,   206,     0,   458,     0,   304,    24,   351,   361,   304,
-    25,     0,   203,    26,    27,     0,   203,    26,   304,   295,
-    27,   351,     0,     0,   203,   305,    24,    25,   204,   230,
-     0,     0,   203,   305,    24,   362,    25,   205,   230,     0,
-   458,     0,   304,    24,   351,   202,   304,    25,     0,   206,
-    26,    27,     0,   206,    26,   304,   295,    27,   351,     0,
-     0,   206,   305,    24,    25,   207,   231,     0,     0,   206,
-   305,    24,   362,    25,   208,   231,     0,     0,     0,    79,
-   458,    24,   362,    25,   210,   231,   211,   455,    91,     0,
-    92,   392,    95,     0,    93,   378,    95,     0,    94,   379,
-    95,     0,    92,    95,     0,   253,     0,   215,    23,   218,
-     0,     0,   227,   216,    22,   219,     0,     0,     5,   217,
-    22,   219,     0,   215,     0,   215,    40,   218,     0,   194,
-     0,   185,     0,    56,     0,   222,   220,   221,     0,   222,
-     0,   225,   224,   225,     0,   182,     0,   183,     0,    53,
-     0,    52,     0,    54,     0,   226,     0,   228,    24,   225,
-    25,     0,    24,   225,   229,   225,    25,     0,   227,     0,
-   190,     0,   457,     0,   187,     0,   227,    26,    27,     0,
-   227,    26,   190,    27,     0,    34,   227,     0,    24,   227,
-    25,     0,   227,    28,   458,     0,   227,    45,   458,     0,
-   223,     0,    33,     0,    32,     0,     0,   232,   230,     0,
-     0,   233,   231,     0,   234,     0,   238,     0,   237,     0,
-   315,     0,   318,     0,   244,     0,   235,     0,   239,     0,
-   237,     0,   316,     0,   320,     0,   245,     0,   235,    91,
-     0,     0,    74,   236,   246,   455,     0,    76,     0,   239,
-    91,     0,     0,    75,   240,   259,     0,   242,     0,   242,
-    40,   241,     0,   187,     0,   244,     0,     0,   245,    91,
-     0,    73,   241,   431,     0,    73,   241,     0,   247,     0,
-   246,    21,   247,     0,   248,   249,     0,     0,   250,   248,
-     0,   457,     0,   187,     0,   296,     0,    89,     0,    90,
-     0,   120,     0,   121,     0,   134,     0,    80,     0,    81,
+   195,     0,   196,     0,   195,   196,     0,   257,   454,     0,
+   197,     0,   198,     0,   208,     0,   211,     0,   295,     0,
+    18,     0,     1,     0,    77,   336,   350,   360,   350,   454,
+   303,    91,     0,    77,   336,   350,   360,   350,    23,   303,
+   308,   307,   454,    91,     0,     0,    78,   199,   200,   454,
+    91,     0,   201,     0,   336,   350,   201,     0,   205,     0,
+   364,   205,     0,   457,     0,   303,    24,   350,   360,   303,
+    25,     0,   202,    26,    27,     0,   202,    26,   303,   294,
+    27,   350,     0,     0,   202,   304,    24,    25,   203,   229,
+     0,     0,   202,   304,    24,   361,    25,   204,   229,     0,
+   457,     0,   303,    24,   350,   201,   303,    25,     0,   205,
+    26,    27,     0,   205,    26,   303,   294,    27,   350,     0,
+     0,   205,   304,    24,    25,   206,   230,     0,     0,   205,
+   304,    24,   361,    25,   207,   230,     0,     0,     0,    79,
+   457,    24,   361,    25,   209,   230,   210,   454,    91,     0,
+    92,   391,    95,     0,    93,   377,    95,     0,    94,   378,
+    95,     0,    92,    95,     0,   252,     0,   214,    23,   217,
+     0,     0,   226,   215,    22,   218,     0,     0,     5,   216,
+    22,   218,     0,   214,     0,   214,    40,   217,     0,   193,
+     0,   184,     0,    56,     0,   221,   219,   220,     0,   221,
+     0,   224,   223,   224,     0,   181,     0,   182,     0,    53,
+     0,    52,     0,    54,     0,   225,     0,   227,    24,   224,
+    25,     0,    24,   224,   228,   224,    25,     0,   226,     0,
+   189,     0,   456,     0,   186,     0,   226,    26,    27,     0,
+   226,    26,   189,    27,     0,    34,   226,     0,    24,   226,
+    25,     0,   226,    28,   457,     0,   226,    45,   457,     0,
+   222,     0,    33,     0,    32,     0,     0,   231,   229,     0,
+     0,   232,   230,     0,   233,     0,   237,     0,   236,     0,
+   314,     0,   317,     0,   243,     0,   234,     0,   238,     0,
+   236,     0,   315,     0,   319,     0,   244,     0,   234,    91,
+     0,     0,    74,   235,   245,   454,     0,    76,     0,   238,
+    91,     0,     0,    75,   239,   258,     0,   241,     0,   241,
+    40,   240,     0,   186,     0,   243,     0,     0,   244,    91,
+     0,    73,   240,   430,     0,    73,   240,     0,   246,     0,
+   245,    21,   246,     0,   247,   248,     0,     0,   249,   247,
+     0,   456,     0,   186,     0,   295,     0,    89,     0,    90,
+     0,   119,     0,   120,     0,   133,     0,    80,     0,    81,
      0,    82,     0,    83,     0,    84,     0,    85,     0,    86,
-     0,   361,     0,   337,   351,   361,     0,     0,    19,   255,
-   409,     0,     0,     0,   256,   413,   257,   402,     0,   213,
-   254,     0,   262,   455,     0,   455,     0,   457,     0,   187,
-     0,   260,    26,    27,     0,   260,    26,   261,    27,     0,
-    34,   260,     0,    24,   260,    25,     0,   260,    28,   458,
-     0,   260,    45,   458,     0,   260,     0,   431,     0,   260,
-     0,   262,    21,   260,     0,   457,     0,   187,     0,   263,
-    26,    27,     0,   263,    26,   261,    27,     0,    34,   263,
-     0,    24,   263,    25,     0,   263,    28,   458,     0,   263,
-    45,   458,     0,     0,   265,     0,   263,     0,   265,    21,
-   263,     0,   457,     0,   187,     0,   431,     0,    24,   293,
-    25,     0,   188,     0,   115,     0,     0,    24,   267,   402,
-    25,     0,   266,     0,   268,    26,   293,    27,     0,   268,
-    24,    25,     0,   268,    24,   269,    25,     0,    71,    24,
-   292,    21,   373,    25,     0,   268,   351,    28,   458,   304,
-     0,   268,   351,    45,   458,   304,     0,   268,    48,     0,
-   268,    49,     0,    24,   373,    25,    19,   414,   456,    20,
-     0,   292,     0,   269,    21,   292,     0,   268,     0,    48,
-   270,     0,    49,   270,     0,    29,   276,     0,    34,   276,
-     0,    33,   276,     0,    32,   276,     0,    31,   276,     0,
-    30,   276,     0,   273,     0,   272,     0,   271,    28,   458,
-     0,   271,    26,   293,    27,     0,   458,     0,    47,   304,
-    24,   373,   351,    21,   271,    25,   304,     0,     0,   304,
-   274,   275,     0,    42,    24,   373,    25,     0,    42,   270,
-     0,    43,    24,   373,    25,     0,    43,   270,     0,   270,
-     0,    24,   373,    25,   276,     0,   276,     0,   277,    34,
-   276,     0,   277,    35,   276,     0,   277,    36,   276,     0,
-   277,     0,   278,    33,   277,     0,   278,    32,   277,     0,
-   278,     0,   279,    50,   278,     0,   279,    51,   278,     0,
-   279,     0,   280,    37,   279,     0,   280,    38,   279,     0,
-   280,    52,   279,     0,   280,    53,   279,     0,   280,     0,
-   281,    54,   280,     0,   281,    55,   280,     0,   281,     0,
-   282,    29,   281,     0,   282,     0,   283,    39,   282,     0,
-   283,     0,   284,    40,   283,     0,   284,     0,     0,   285,
-    56,   286,   284,     0,   285,     0,     0,   287,    57,   288,
-   285,     0,   287,     0,     0,     0,   287,    41,   290,   293,
-    22,   291,   289,     0,   289,     0,   270,    23,   292,     0,
-   270,    58,   292,     0,   270,    59,   292,     0,   270,    60,
-   292,     0,   270,    61,   292,     0,   270,    62,   292,     0,
-   270,    63,   292,     0,   270,    64,   292,     0,   270,    65,
-   292,     0,   270,    66,   292,     0,   270,    67,   292,     0,
-   292,     0,   293,    21,   292,     0,     0,   293,     0,   289,
-     0,   297,     0,    72,     0,   302,     0,   337,   304,    18,
-     0,     0,   337,   351,   361,   351,   298,   304,   308,    18,
-   304,     0,     0,   337,   351,   361,   351,    23,   299,   304,
-   309,   308,    18,   304,     0,   361,   351,     0,     0,   361,
-   351,    23,   301,   304,   309,     0,     0,    46,   337,   303,
-   351,   306,   304,   243,    18,     0,    46,   337,   304,    18,
-     0,    46,   306,   304,    18,     0,     0,     0,   307,   304,
-     0,   300,     0,   306,    21,   351,   300,     0,     0,   308,
-    21,   351,   300,     0,   292,     0,    19,   313,    20,     0,
-    19,   313,    21,    20,     0,   310,   309,     0,   311,    23,
-     0,   458,    22,     0,   312,     0,   311,   312,     0,    26,
-   295,    27,     0,    28,   458,     0,   309,     0,   313,    21,
-   309,     0,   116,     0,   114,     0,   117,     0,   118,     0,
-   119,     0,   316,    91,     0,     0,   251,   351,   317,   265,
-   455,   304,     0,   320,    91,     0,   252,   351,     0,     0,
-   319,   326,   321,   264,   455,   304,     0,     0,   319,   322,
-   323,   455,   304,     0,   221,     0,   214,     0,   143,     0,
-   144,     0,   146,     0,   147,     0,   145,     0,   128,     0,
-   131,     0,   129,     0,   130,     0,   136,     0,   137,     0,
-   122,     0,   124,     0,   123,     0,   132,     0,   133,     0,
-   125,     0,   127,     0,   140,     0,   142,     0,   155,     0,
-   154,     0,   139,     0,   141,     0,   179,     0,   189,     0,
-   138,     0,   153,     0,   152,     0,   162,     0,   160,     0,
-   161,     0,   156,     0,   157,     0,   158,     0,   159,     0,
-   163,     0,   164,     0,   167,     0,   168,     0,   165,     0,
-   166,     0,   151,     0,   148,     0,   149,     0,   150,     0,
-   120,     0,   121,     0,   134,     0,   135,     0,   111,   304,
-     0,   113,   304,     0,   112,   304,     0,   333,   304,     0,
-   326,   304,     0,   324,   304,     0,   327,   304,     0,   325,
-   304,     0,   329,   304,     0,   328,   304,     0,   330,   304,
-     0,   331,   304,     0,   169,   351,     0,   171,   351,     0,
-   170,   351,     0,   172,   351,     0,   173,   351,     0,   174,
-   351,     0,   175,   351,     0,   176,   351,     0,   177,   351,
-     0,   178,   351,     0,   459,   351,     0,   342,   351,     0,
-   356,   351,     0,   332,   351,     0,   304,   337,   304,     0,
-   339,     0,   339,    88,   338,    91,     0,   373,     0,   373,
-    21,   338,     0,   314,   340,     0,   334,   340,     0,   335,
-   340,     0,     0,   337,     0,     0,     0,     0,   351,    68,
-   458,   304,    19,   343,   406,   352,   407,   344,    20,   341,
-     0,     0,     0,   351,    69,   458,   304,    19,   345,   406,
-   352,   407,   346,    20,     0,   351,    68,   458,   304,    19,
-    20,     0,   351,    69,   458,   304,    19,    20,     0,     0,
-     0,   351,    68,   304,    19,   347,   406,   352,   407,   348,
-    20,     0,     0,     0,   351,    69,   304,    19,   349,   406,
-   352,   407,   350,    20,     0,   351,    68,   304,    19,    20,
-     0,   351,    69,   304,    19,    20,     0,   351,    68,   458,
-   351,     0,   351,    69,   458,   351,     0,     0,   353,     0,
-   212,     0,   352,   353,     0,   337,   351,   354,   304,    18,
-     0,   337,   304,    18,     0,   355,   351,     0,   354,    21,
-   355,   351,     0,   361,     0,    22,   304,   295,     0,   361,
-    22,   304,   295,     0,   351,    70,    19,   358,    20,   304,
-     0,     0,   351,    70,   458,    19,   357,   358,    20,   304,
-     0,   351,    70,   458,   304,     0,   359,     0,   358,    21,
-   359,     0,   358,    21,     0,   458,     0,   458,    23,   304,
-   295,     0,   203,     0,   375,     0,   365,   193,     0,   365,
-   360,     0,   203,     0,   365,   203,     0,   368,     0,   351,
-   366,     0,   111,     0,   112,     0,   113,     0,   363,     0,
-   364,   363,     0,    34,     0,    34,   364,     0,    34,   365,
-     0,    34,   364,   365,     0,   367,     0,   367,    21,     5,
-     0,   458,     0,   367,    21,   458,     0,     5,     0,   369,
-     0,   369,    21,     5,     0,     0,   370,   372,     0,     0,
-   369,    21,   371,   372,     0,   304,   337,   360,   304,     0,
-   458,     0,   336,     0,   336,   374,     0,   365,     0,   376,
-     0,   365,   376,     0,     0,   376,     0,   304,    24,   351,
-   374,    25,     0,    26,    27,     0,    26,   295,    27,     0,
-   376,    26,    27,     0,   376,    26,   295,    27,     0,   304,
-    24,    25,     0,   304,    24,   368,    25,     0,   376,   304,
-    24,    25,     0,   376,   304,    24,   368,    25,     0,   394,
-     0,   396,     0,   399,     0,   402,     0,   417,     0,   420,
-     0,   452,     0,   425,     0,   454,     0,   380,     0,   378,
-     0,   387,     0,   380,   387,     0,   424,   380,     0,   451,
-   393,    11,    24,   293,    25,    18,     0,   451,   393,    11,
-    24,   293,    25,     0,   382,   387,     0,     0,     0,    13,
-    24,   294,    18,   294,    18,   383,   294,   384,    25,     0,
-     0,   191,   404,    24,   386,   428,    25,     0,   192,     0,
-   394,     0,   396,     0,   399,     0,   390,   413,     0,   390,
-     0,   391,     0,   417,     0,   388,     0,   381,     0,   385,
-     0,   454,     0,    24,   387,    25,     0,     1,     0,     0,
-   419,   389,   387,     0,   404,    19,     0,   408,    20,     0,
-   393,     0,   412,     0,   394,     0,   396,     0,   399,     0,
-   403,     0,   418,     0,   420,     0,   425,     0,   453,     0,
-    24,   393,    25,     0,   454,     0,     1,     0,   458,    22,
-     0,   110,   377,     0,     0,   101,   395,     0,     0,     6,
-   295,   397,    22,     0,     0,   101,   395,     6,   295,   398,
-    22,     0,     0,     7,   400,    22,     0,     0,   101,   395,
-     7,   401,    22,     0,    24,   402,    25,     0,   404,   410,
-     0,   404,   411,   405,     0,     0,     0,     0,     0,     0,
-    20,     0,   110,    20,     0,   416,    20,     0,   416,   110,
-    20,     0,   413,    20,     0,   413,   110,    20,     0,   413,
-   416,    20,     0,   413,   416,   110,    20,     0,    19,   409,
-     0,    19,    20,     0,    19,   412,    20,     0,    19,   413,
-    20,     0,    19,   413,   416,    20,     0,   393,     0,   412,
-   393,     0,   296,     0,   413,   296,     0,   415,     0,   414,
-    21,   415,     0,   292,     0,    19,   414,   456,    20,     0,
-   377,     0,   416,   377,     0,    18,     0,   293,    18,     0,
-    18,     0,   293,    18,     0,   293,     0,     8,    24,   293,
-    25,     0,   419,   377,     0,     0,   419,   377,     9,   421,
-   377,     0,     0,    10,    24,   293,   422,    25,   377,     0,
-    11,    24,   293,    25,     0,    11,    24,   293,    25,     0,
-     0,     0,   191,   426,   404,    24,   427,   428,    25,   402,
-   450,   405,     0,   430,     0,     0,   428,   429,    21,   430,
-     0,   449,     0,   457,     0,   188,     0,   187,     0,   190,
-     0,   431,   190,     0,   431,     0,    24,   293,    25,     0,
-   432,     0,   268,    26,   293,    27,     0,   268,    24,    25,
-     0,   268,    24,   269,    25,     0,    71,    24,   292,    21,
-   373,    25,     0,   268,   351,    28,   458,   304,     0,   268,
-   351,    45,   458,   304,     0,   268,    48,     0,   268,    49,
-     0,   433,     0,    48,   270,     0,    49,   270,     0,    29,
-   276,     0,    34,   276,     0,    33,   276,     0,    32,   276,
-     0,    31,   276,     0,    30,   276,     0,   273,     0,   434,
-     0,    24,   373,    25,   276,     0,   435,     0,   277,    34,
-   276,     0,   277,    35,   276,     0,   277,    36,   276,     0,
-   436,     0,   278,    33,   277,     0,   278,    32,   277,     0,
-   437,     0,   279,    50,   278,     0,   279,    51,   278,     0,
-   438,     0,   280,    37,   279,     0,   280,    38,   279,     0,
-   280,    52,   279,     0,   280,    53,   279,     0,   439,     0,
-   281,    54,   280,     0,   281,    55,   280,     0,   440,     0,
-   282,    29,   281,     0,   441,     0,   283,    39,   282,     0,
-   442,     0,   284,    40,   283,     0,   443,     0,   285,    56,
-   284,     0,   444,     0,   287,    57,   285,     0,   445,     0,
-     0,     0,   287,    41,   447,   293,    22,   448,   289,     0,
-   446,     0,   270,    23,   292,     0,   270,    58,   292,     0,
-   270,    59,   292,     0,   270,    60,   292,     0,   270,    61,
-   292,     0,   270,    62,   292,     0,   270,    63,   292,     0,
-   270,    64,   292,     0,   270,    65,   292,     0,   270,    66,
-   292,     0,   270,    67,   292,     0,   192,     0,     0,    12,
-     0,   423,   377,     0,   451,   377,    11,    24,   293,    25,
-    18,     0,   382,   377,     0,   423,   393,     0,   451,   393,
-    11,    24,   293,    25,    18,     0,   451,   393,    11,    24,
-   293,    25,     0,   382,   393,     0,    14,   458,    18,     0,
+     0,   360,     0,   336,   350,   360,     0,     0,    19,   254,
+   408,     0,     0,     0,   255,   412,   256,   401,     0,   212,
+   253,     0,   261,   454,     0,   454,     0,   456,     0,   186,
+     0,   259,    26,    27,     0,   259,    26,   260,    27,     0,
+    34,   259,     0,    24,   259,    25,     0,   259,    28,   457,
+     0,   259,    45,   457,     0,   259,     0,   430,     0,   259,
+     0,   261,    21,   259,     0,   456,     0,   186,     0,   262,
+    26,    27,     0,   262,    26,   260,    27,     0,    34,   262,
+     0,    24,   262,    25,     0,   262,    28,   457,     0,   262,
+    45,   457,     0,     0,   264,     0,   262,     0,   264,    21,
+   262,     0,   456,     0,   186,     0,   430,     0,    24,   292,
+    25,     0,   187,     0,   114,     0,     0,    24,   266,   401,
+    25,     0,   265,     0,   267,    26,   292,    27,     0,   267,
+    24,    25,     0,   267,    24,   268,    25,     0,    71,    24,
+   291,    21,   372,    25,     0,   267,   350,    28,   457,   303,
+     0,   267,   350,    45,   457,   303,     0,   267,    48,     0,
+   267,    49,     0,    24,   372,    25,    19,   413,   455,    20,
+     0,   291,     0,   268,    21,   291,     0,   267,     0,    48,
+   269,     0,    49,   269,     0,    29,   275,     0,    34,   275,
+     0,    33,   275,     0,    32,   275,     0,    31,   275,     0,
+    30,   275,     0,   272,     0,   271,     0,   270,    28,   457,
+     0,   457,     0,    47,   303,    24,   372,   350,    21,   270,
+    25,   303,     0,     0,   303,   273,   274,     0,    42,    24,
+   372,    25,     0,    42,   269,     0,    43,    24,   372,    25,
+     0,    43,   269,     0,   269,     0,    24,   372,    25,   275,
+     0,   275,     0,   276,    34,   275,     0,   276,    35,   275,
+     0,   276,    36,   275,     0,   276,     0,   277,    33,   276,
+     0,   277,    32,   276,     0,   277,     0,   278,    50,   277,
+     0,   278,    51,   277,     0,   278,     0,   279,    37,   278,
+     0,   279,    38,   278,     0,   279,    52,   278,     0,   279,
+    53,   278,     0,   279,     0,   280,    54,   279,     0,   280,
+    55,   279,     0,   280,     0,   281,    29,   280,     0,   281,
+     0,   282,    39,   281,     0,   282,     0,   283,    40,   282,
+     0,   283,     0,     0,   284,    56,   285,   283,     0,   284,
+     0,     0,   286,    57,   287,   284,     0,   286,     0,     0,
+     0,   286,    41,   289,   292,    22,   290,   288,     0,   288,
+     0,   269,    23,   291,     0,   269,    58,   291,     0,   269,
+    59,   291,     0,   269,    60,   291,     0,   269,    61,   291,
+     0,   269,    62,   291,     0,   269,    63,   291,     0,   269,
+    64,   291,     0,   269,    65,   291,     0,   269,    66,   291,
+     0,   269,    67,   291,     0,   291,     0,   292,    21,   291,
+     0,     0,   292,     0,   288,     0,   296,     0,    72,     0,
+   301,     0,   336,   303,    18,     0,     0,   336,   350,   360,
+   350,   297,   303,   307,    18,   303,     0,     0,   336,   350,
+   360,   350,    23,   298,   303,   308,   307,    18,   303,     0,
+   360,   350,     0,     0,   360,   350,    23,   300,   303,   308,
+     0,     0,    46,   336,   302,   350,   305,   303,   242,    18,
+     0,    46,   336,   303,    18,     0,    46,   305,   303,    18,
+     0,     0,     0,   306,   303,     0,   299,     0,   305,    21,
+   350,   299,     0,     0,   307,    21,   350,   299,     0,   291,
+     0,    19,   312,    20,     0,    19,   312,    21,    20,     0,
+   309,   308,     0,   310,    23,     0,   457,    22,     0,   311,
+     0,   310,   311,     0,    26,   294,    27,     0,    28,   457,
+     0,   308,     0,   312,    21,   308,     0,   115,     0,   113,
+     0,   116,     0,   117,     0,   118,     0,   315,    91,     0,
+     0,   250,   350,   316,   264,   454,   303,     0,   319,    91,
+     0,   251,   350,     0,     0,   318,   325,   320,   263,   454,
+   303,     0,     0,   318,   321,   322,   454,   303,     0,   220,
+     0,   213,     0,   142,     0,   143,     0,   145,     0,   146,
+     0,   144,     0,   127,     0,   130,     0,   128,     0,   129,
+     0,   135,     0,   136,     0,   121,     0,   123,     0,   122,
+     0,   131,     0,   132,     0,   124,     0,   126,     0,   139,
+     0,   141,     0,   154,     0,   153,     0,   138,     0,   140,
+     0,   178,     0,   188,     0,   137,     0,   152,     0,   151,
+     0,   161,     0,   159,     0,   160,     0,   155,     0,   156,
+     0,   157,     0,   158,     0,   162,     0,   163,     0,   166,
+     0,   167,     0,   164,     0,   165,     0,   150,     0,   147,
+     0,   148,     0,   149,     0,   119,     0,   120,     0,   133,
+     0,   134,     0,   111,   303,     0,   112,   303,     0,   332,
+   303,     0,   325,   303,     0,   323,   303,     0,   326,   303,
+     0,   324,   303,     0,   328,   303,     0,   327,   303,     0,
+   329,   303,     0,   330,   303,     0,   168,   350,     0,   170,
+   350,     0,   169,   350,     0,   171,   350,     0,   172,   350,
+     0,   173,   350,     0,   174,   350,     0,   175,   350,     0,
+   176,   350,     0,   177,   350,     0,   458,   350,     0,   341,
+   350,     0,   355,   350,     0,   331,   350,     0,   303,   336,
+   303,     0,   338,     0,   338,    88,   337,    91,     0,   372,
+     0,   372,    21,   337,     0,   313,   339,     0,   333,   339,
+     0,   334,   339,     0,     0,   336,     0,     0,     0,     0,
+   350,    68,   457,   303,    19,   342,   405,   351,   406,   343,
+    20,   340,     0,     0,     0,   350,    69,   457,   303,    19,
+   344,   405,   351,   406,   345,    20,     0,   350,    68,   457,
+   303,    19,    20,     0,   350,    69,   457,   303,    19,    20,
+     0,     0,     0,   350,    68,   303,    19,   346,   405,   351,
+   406,   347,    20,     0,     0,     0,   350,    69,   303,    19,
+   348,   405,   351,   406,   349,    20,     0,   350,    68,   303,
+    19,    20,     0,   350,    69,   303,    19,    20,     0,   350,
+    68,   457,   350,     0,   350,    69,   457,   350,     0,     0,
+   352,     0,   211,     0,   351,   352,     0,   336,   350,   353,
+   303,    18,     0,   336,   303,    18,     0,   354,   350,     0,
+   353,    21,   354,   350,     0,   360,     0,    22,   303,   294,
+     0,   360,    22,   303,   294,     0,   350,    70,    19,   357,
+    20,   303,     0,     0,   350,    70,   457,    19,   356,   357,
+    20,   303,     0,   350,    70,   457,   303,     0,   358,     0,
+   357,    21,   358,     0,   357,    21,     0,   457,     0,   457,
+    23,   303,   294,     0,   202,     0,   374,     0,   364,   192,
+     0,   364,   359,     0,   202,     0,   364,   202,     0,   367,
+     0,   350,   365,     0,   111,     0,   112,     0,   362,     0,
+   363,   362,     0,    34,     0,    34,   363,     0,    34,   364,
+     0,    34,   363,   364,     0,   366,     0,   366,    21,     5,
+     0,   457,     0,   366,    21,   457,     0,     5,     0,   368,
+     0,   368,    21,     5,     0,     0,   369,   371,     0,     0,
+   368,    21,   370,   371,     0,   303,   336,   359,   303,     0,
+   457,     0,   335,     0,   335,   373,     0,   364,     0,   375,
+     0,   364,   375,     0,     0,   375,     0,   303,    24,   350,
+   373,    25,     0,    26,    27,     0,    26,   294,    27,     0,
+   375,    26,    27,     0,   375,    26,   294,    27,     0,   303,
+    24,    25,     0,   303,    24,   367,    25,     0,   375,   303,
+    24,    25,     0,   375,   303,    24,   367,    25,     0,   393,
+     0,   395,     0,   398,     0,   401,     0,   416,     0,   419,
+     0,   451,     0,   424,     0,   453,     0,   379,     0,   377,
+     0,   386,     0,   379,   386,     0,   423,   379,     0,   450,
+   392,    11,    24,   292,    25,    18,     0,   450,   392,    11,
+    24,   292,    25,     0,   381,   386,     0,     0,     0,    13,
+    24,   293,    18,   293,    18,   382,   293,   383,    25,     0,
+     0,   190,   403,    24,   385,   427,    25,     0,   191,     0,
+   393,     0,   395,     0,   398,     0,   389,   412,     0,   389,
+     0,   390,     0,   416,     0,   387,     0,   380,     0,   384,
+     0,   453,     0,    24,   386,    25,     0,     1,     0,     0,
+   418,   388,   386,     0,   403,    19,     0,   407,    20,     0,
+   392,     0,   411,     0,   393,     0,   395,     0,   398,     0,
+   402,     0,   417,     0,   419,     0,   424,     0,   452,     0,
+    24,   392,    25,     0,   453,     0,     1,     0,   457,    22,
+     0,   110,   376,     0,     0,   101,   394,     0,     0,     6,
+   294,   396,    22,     0,     0,   101,   394,     6,   294,   397,
+    22,     0,     0,     7,   399,    22,     0,     0,   101,   394,
+     7,   400,    22,     0,    24,   401,    25,     0,   403,   409,
+     0,   403,   410,   404,     0,     0,     0,     0,     0,     0,
+    20,     0,   110,    20,     0,   415,    20,     0,   415,   110,
+    20,     0,   412,    20,     0,   412,   110,    20,     0,   412,
+   415,    20,     0,   412,   415,   110,    20,     0,    19,   408,
+     0,    19,    20,     0,    19,   411,    20,     0,    19,   412,
+    20,     0,    19,   412,   415,    20,     0,   392,     0,   411,
+   392,     0,   295,     0,   412,   295,     0,   414,     0,   413,
+    21,   414,     0,   291,     0,    19,   413,   455,    20,     0,
+   376,     0,   415,   376,     0,    18,     0,   292,    18,     0,
+    18,     0,   292,    18,     0,   292,     0,     8,    24,   292,
+    25,     0,   418,   376,     0,     0,   418,   376,     9,   420,
+   376,     0,     0,    10,    24,   292,   421,    25,   376,     0,
+    11,    24,   292,    25,     0,    11,    24,   292,    25,     0,
+     0,     0,   190,   425,   403,    24,   426,   427,    25,   401,
+   449,   404,     0,   429,     0,     0,   427,   428,    21,   429,
+     0,   448,     0,   456,     0,   187,     0,   186,     0,   189,
+     0,   430,   189,     0,   430,     0,    24,   292,    25,     0,
+   431,     0,   267,    26,   292,    27,     0,   267,    24,    25,
+     0,   267,    24,   268,    25,     0,    71,    24,   291,    21,
+   372,    25,     0,   267,   350,    28,   457,   303,     0,   267,
+   350,    45,   457,   303,     0,   267,    48,     0,   267,    49,
+     0,   432,     0,    48,   269,     0,    49,   269,     0,    29,
+   275,     0,    34,   275,     0,    33,   275,     0,    32,   275,
+     0,    31,   275,     0,    30,   275,     0,   272,     0,   433,
+     0,    24,   372,    25,   275,     0,   434,     0,   276,    34,
+   275,     0,   276,    35,   275,     0,   276,    36,   275,     0,
+   435,     0,   277,    33,   276,     0,   277,    32,   276,     0,
+   436,     0,   278,    50,   277,     0,   278,    51,   277,     0,
+   437,     0,   279,    37,   278,     0,   279,    38,   278,     0,
+   279,    52,   278,     0,   279,    53,   278,     0,   438,     0,
+   280,    54,   279,     0,   280,    55,   279,     0,   439,     0,
+   281,    29,   280,     0,   440,     0,   282,    39,   281,     0,
+   441,     0,   283,    40,   282,     0,   442,     0,   284,    56,
+   283,     0,   443,     0,   286,    57,   284,     0,   444,     0,
+     0,     0,   286,    41,   446,   292,    22,   447,   288,     0,
+   445,     0,   269,    23,   291,     0,   269,    58,   291,     0,
+   269,    59,   291,     0,   269,    60,   291,     0,   269,    61,
+   291,     0,   269,    62,   291,     0,   269,    63,   291,     0,
+   269,    64,   291,     0,   269,    65,   291,     0,   269,    66,
+   291,     0,   269,    67,   291,     0,   191,     0,     0,    12,
+     0,   422,   376,     0,   450,   376,    11,    24,   292,    25,
+    18,     0,   381,   376,     0,   422,   392,     0,   450,   392,
+    11,    24,   292,    25,    18,     0,   450,   392,    11,    24,
+   292,    25,     0,   381,   392,     0,    14,   457,    18,     0,
     15,    18,     0,   100,    15,    18,     0,    16,    18,     0,
     96,    16,    18,     0,    97,    16,    18,     0,    98,    16,
     18,     0,    99,    16,    18,     0,    17,    18,     0,    17,
-   293,    18,     0,     0,    18,     0,     0,    21,     0,   186,
-     0,   187,     0,   191,     0,   192,     0,   457,     0,   188,
-     0,   193,     0,   188,     0,    44,    24,   293,    25,     0,
-    44,    24,   373,    25,     0
+   292,    18,     0,     0,    18,     0,     0,    21,     0,   185,
+     0,   186,     0,   190,     0,   191,     0,   456,     0,   187,
+     0,   192,     0,   187,     0,    44,    24,   292,    25,     0,
+    44,    24,   372,    25,     0
 };
 
 #endif
@@ -721,75 +719,75 @@ static const short yyrhs[] = {    -1,
 #if YYDEBUG != 0
 static const short yyrline[] = { 0,
    325,   326,   329,   330,   333,   334,   335,   336,   337,   338,
-   339,   340,   343,   345,   349,   349,   356,   362,   366,   367,
-   371,   372,   374,   376,   391,   394,   404,   407,   415,   416,
-   418,   420,   436,   439,   447,   450,   458,   460,   460,   464,
-   465,   466,   467,   470,   473,   477,   477,   480,   480,   485,
-   486,   489,   494,   495,   498,   499,   502,   507,   508,   511,
-   512,   513,   516,   517,   518,   523,   524,   527,   529,   531,
-   533,   542,   544,   546,   548,   564,   568,   569,   576,   577,
-   585,   587,   591,   592,   593,   594,   595,   596,   599,   600,
-   601,   602,   603,   604,   607,   610,   611,   618,   621,   624,
-   630,   638,   640,   644,   647,   648,   651,   654,   660,   664,
-   665,   668,   671,   672,   675,   676,   677,   680,   681,   682,
-   683,   684,   687,   688,   689,   690,   691,   694,   695,   698,
-   705,   709,   711,   715,   716,   718,   725,   735,   736,   739,
-   740,   741,   742,   743,   744,   745,   746,   750,   751,   755,
-   756,   759,   761,   763,   764,   765,   766,   767,   769,   773,
-   774,   777,   781,   793,   794,   795,   796,   797,   798,   799,
-   800,   804,   805,   806,   807,   808,   809,   810,   811,   812,
-   813,   817,   818,   821,   822,   823,   824,   825,   826,   827,
-   828,   829,   830,   831,   834,   835,   837,   840,   844,   845,
-   848,   849,   850,   851,   854,   855,   859,   860,   861,   862,
-   865,   866,   867,   870,   871,   872,   875,   876,   877,   878,
-   879,   882,   883,   884,   887,   888,   891,   892,   896,   897,
-   900,   901,   906,   912,   913,   919,   925,   926,   926,   928,
-   931,   932,   933,   934,   935,   936,   937,   938,   939,   940,
-   941,   942,   945,   946,   949,   950,   953,   958,   959,   960,
-   963,   977,   982,   988,   990,   996,  1001,  1001,  1005,  1006,
-  1008,  1009,  1012,  1015,  1018,  1021,  1022,  1025,  1026,  1029,
-  1030,  1031,  1032,  1039,  1040,  1044,  1045,  1048,  1049,  1052,
-  1054,  1063,  1064,  1065,  1066,  1067,  1070,  1073,  1079,  1088,
-  1091,  1094,  1101,  1108,  1114,  1139,  1140,  1143,  1144,  1145,
-  1146,  1147,  1150,  1151,  1152,  1153,  1156,  1157,  1158,  1159,
-  1160,  1161,  1162,  1163,  1164,  1165,  1166,  1167,  1168,  1169,
-  1170,  1171,  1172,  1176,  1177,  1180,  1181,  1184,  1185,  1188,
-  1189,  1190,  1191,  1194,  1195,  1196,  1197,  1198,  1199,  1202,
-  1203,  1204,  1205,  1208,  1209,  1210,  1211,  1214,  1215,  1216,
-  1217,  1218,  1219,  1220,  1221,  1222,  1223,  1224,  1225,  1232,
-  1233,  1234,  1235,  1236,  1237,  1238,  1239,  1240,  1241,  1242,
-  1243,  1244,  1245,  1248,  1252,  1253,  1257,  1258,  1262,  1263,
-  1264,  1267,  1268,  1272,  1279,  1281,  1283,  1285,  1287,  1289,
-  1290,  1292,  1294,  1296,  1298,  1299,  1300,  1303,  1304,  1306,
-  1308,  1309,  1312,  1315,  1316,  1317,  1320,  1322,  1326,  1328,
-  1332,  1333,  1334,  1338,  1340,  1340,  1342,  1345,  1347,  1349,
-  1352,  1357,  1364,  1365,  1366,  1372,  1376,  1377,  1381,  1382,
-  1385,  1386,  1387,  1390,  1391,  1394,  1395,  1396,  1397,  1400,
-  1401,  1404,  1405,  1408,  1409,  1410,  1413,  1413,  1414,  1415,
-  1418,  1430,  1446,  1447,  1450,  1451,  1452,  1455,  1456,  1459,
-  1461,  1462,  1464,  1465,  1467,  1469,  1471,  1473,  1479,  1480,
-  1481,  1482,  1483,  1484,  1485,  1486,  1487,  1491,  1494,  1497,
-  1498,  1502,  1504,  1506,  1508,  1512,  1513,  1515,  1519,  1521,
-  1523,  1526,  1527,  1528,  1529,  1530,  1531,  1532,  1533,  1534,
-  1535,  1536,  1537,  1538,  1541,  1542,  1547,  1550,  1553,  1554,
-  1557,  1558,  1559,  1560,  1561,  1562,  1563,  1564,  1565,  1566,
-  1567,  1570,  1571,  1578,  1579,  1585,  1586,  1587,  1588,  1591,
-  1592,  1593,  1594,  1597,  1598,  1602,  1605,  1608,  1611,  1614,
-  1617,  1620,  1621,  1622,  1623,  1625,  1626,  1628,  1630,  1636,
-  1640,  1642,  1644,  1646,  1650,  1651,  1654,  1655,  1658,  1659,
-  1662,  1663,  1666,  1667,  1670,  1671,  1674,  1675,  1676,  1679,
-  1692,  1697,  1698,  1702,  1703,  1706,  1711,  1714,  1715,  1716,
-  1724,  1725,  1725,  1729,  1730,  1731,  1742,  1749,  1750,  1753,
-  1754,  1757,  1758,  1759,  1760,  1761,  1763,  1764,  1765,  1766,
-  1769,  1770,  1771,  1772,  1773,  1774,  1775,  1776,  1777,  1778,
-  1781,  1782,  1785,  1786,  1787,  1788,  1791,  1792,  1793,  1796,
-  1797,  1798,  1801,  1802,  1803,  1804,  1805,  1808,  1809,  1810,
-  1813,  1814,  1817,  1818,  1822,  1823,  1826,  1827,  1830,  1831,
-  1834,  1835,  1836,  1837,  1840,  1841,  1842,  1843,  1844,  1845,
-  1846,  1847,  1848,  1849,  1850,  1851,  1854,  1855,  1858,  1861,
-  1863,  1865,  1869,  1870,  1872,  1874,  1877,  1878,  1879,  1881,
-  1882,  1883,  1884,  1885,  1886,  1887,  1890,  1891,  1894,  1895,
-  1898,  1901,  1902,  1903,  1904,  1905,  1908,  1909,  1910,  1911
+   374,   375,   378,   380,   384,   384,   391,   397,   401,   402,
+   406,   407,   409,   411,   426,   429,   439,   442,   450,   451,
+   453,   455,   471,   474,   482,   485,   493,   495,   495,   499,
+   500,   501,   502,   505,   510,   514,   514,   517,   517,   522,
+   523,   526,   531,   532,   535,   536,   539,   544,   545,   548,
+   549,   550,   553,   554,   555,   560,   561,   564,   566,   568,
+   570,   579,   581,   583,   585,   601,   605,   606,   613,   614,
+   622,   624,   628,   629,   630,   631,   632,   633,   636,   637,
+   638,   639,   640,   641,   644,   647,   648,   655,   658,   661,
+   667,   675,   677,   681,   684,   685,   688,   691,   697,   701,
+   702,   705,   708,   709,   712,   713,   714,   717,   718,   719,
+   720,   721,   724,   725,   726,   727,   728,   731,   732,   735,
+   742,   746,   748,   752,   753,   755,   762,   772,   773,   776,
+   777,   778,   779,   780,   781,   782,   783,   787,   788,   792,
+   793,   796,   798,   800,   801,   802,   803,   804,   806,   810,
+   811,   814,   818,   830,   831,   832,   833,   834,   835,   836,
+   837,   841,   842,   843,   844,   845,   846,   847,   848,   849,
+   850,   854,   855,   858,   859,   860,   861,   862,   863,   864,
+   865,   866,   867,   868,   871,   872,   875,   879,   880,   883,
+   884,   885,   886,   889,   890,   894,   895,   896,   897,   900,
+   901,   902,   905,   906,   907,   910,   911,   912,   913,   914,
+   917,   918,   919,   922,   923,   926,   927,   931,   932,   935,
+   936,   941,   947,   948,   954,   960,   961,   961,   963,   966,
+   967,   968,   969,   970,   971,   972,   973,   974,   975,   976,
+   977,   980,   981,   984,   985,   988,   993,   994,   995,   998,
+  1016,  1021,  1034,  1036,  1049,  1054,  1054,  1058,  1059,  1070,
+  1071,  1074,  1077,  1080,  1083,  1084,  1087,  1088,  1091,  1092,
+  1093,  1094,  1101,  1102,  1106,  1107,  1110,  1111,  1114,  1116,
+  1125,  1126,  1127,  1128,  1129,  1132,  1135,  1141,  1150,  1153,
+  1156,  1163,  1170,  1176,  1201,  1202,  1205,  1206,  1207,  1208,
+  1209,  1212,  1213,  1214,  1215,  1218,  1219,  1220,  1221,  1222,
+  1223,  1224,  1225,  1226,  1227,  1228,  1229,  1230,  1231,  1232,
+  1233,  1234,  1238,  1239,  1242,  1243,  1246,  1247,  1250,  1251,
+  1252,  1253,  1256,  1257,  1258,  1259,  1260,  1261,  1264,  1265,
+  1266,  1267,  1270,  1271,  1272,  1273,  1276,  1277,  1278,  1279,
+  1280,  1281,  1282,  1283,  1284,  1285,  1286,  1293,  1294,  1295,
+  1296,  1297,  1298,  1299,  1300,  1301,  1302,  1303,  1304,  1305,
+  1306,  1309,  1313,  1314,  1318,  1319,  1323,  1324,  1325,  1328,
+  1329,  1333,  1340,  1342,  1344,  1346,  1348,  1350,  1351,  1353,
+  1355,  1357,  1359,  1360,  1361,  1364,  1365,  1367,  1369,  1370,
+  1373,  1376,  1377,  1378,  1381,  1383,  1387,  1389,  1393,  1394,
+  1395,  1399,  1401,  1401,  1403,  1406,  1408,  1410,  1413,  1418,
+  1425,  1426,  1427,  1434,  1438,  1439,  1443,  1444,  1447,  1448,
+  1451,  1452,  1455,  1456,  1457,  1458,  1461,  1462,  1465,  1466,
+  1469,  1470,  1471,  1474,  1474,  1475,  1476,  1479,  1491,  1507,
+  1508,  1511,  1512,  1513,  1516,  1517,  1520,  1522,  1523,  1525,
+  1526,  1528,  1530,  1532,  1534,  1540,  1541,  1542,  1543,  1544,
+  1545,  1546,  1547,  1548,  1552,  1555,  1558,  1559,  1563,  1565,
+  1567,  1569,  1573,  1574,  1576,  1580,  1582,  1584,  1587,  1588,
+  1589,  1590,  1591,  1592,  1593,  1594,  1595,  1596,  1597,  1598,
+  1599,  1602,  1603,  1608,  1611,  1614,  1615,  1618,  1619,  1620,
+  1621,  1622,  1623,  1624,  1625,  1626,  1627,  1628,  1631,  1632,
+  1639,  1640,  1646,  1647,  1648,  1649,  1652,  1653,  1654,  1655,
+  1658,  1659,  1663,  1666,  1669,  1672,  1675,  1678,  1681,  1682,
+  1683,  1684,  1686,  1687,  1689,  1691,  1697,  1701,  1703,  1705,
+  1707,  1711,  1712,  1715,  1716,  1719,  1720,  1723,  1724,  1727,
+  1728,  1731,  1732,  1735,  1736,  1737,  1740,  1753,  1758,  1759,
+  1763,  1764,  1767,  1772,  1775,  1776,  1777,  1785,  1786,  1786,
+  1790,  1791,  1792,  1803,  1810,  1811,  1814,  1815,  1818,  1819,
+  1820,  1821,  1822,  1824,  1825,  1826,  1827,  1830,  1831,  1832,
+  1833,  1834,  1835,  1836,  1837,  1838,  1839,  1842,  1843,  1846,
+  1847,  1848,  1849,  1852,  1853,  1854,  1857,  1858,  1859,  1862,
+  1863,  1864,  1865,  1866,  1869,  1870,  1871,  1874,  1875,  1878,
+  1879,  1883,  1884,  1887,  1888,  1891,  1892,  1895,  1896,  1897,
+  1898,  1901,  1902,  1903,  1904,  1905,  1906,  1907,  1908,  1909,
+  1910,  1911,  1912,  1915,  1916,  1919,  1922,  1924,  1926,  1930,
+  1931,  1933,  1935,  1938,  1939,  1940,  1942,  1943,  1944,  1945,
+  1946,  1947,  1948,  1951,  1952,  1955,  1956,  1959,  1963,  1964,
+  1965,  1966,  1967,  1970,  1971,  1972,  1973
 };
 #endif
 
@@ -811,20 +809,20 @@ static const char * const yytname[] = {   "$","error","$undefined.","BADTOK",
 "TENDMACRO","QSWITCHBREAK","QLOOPBREAK","QINNERBREAK","QSAFEBREAK","QINNERCONTINUE",
 "QFALLTHROUGH","QLINTNOTREACHED","QLINTFALLTHROUGH","QLINTFALLTHRU","QARGSUSED",
 "QPRINTFLIKE","QLINTPRINTFLIKE","QSCANFLIKE","QMESSAGELIKE","QNOTREACHED","QCONST",
-"QRESTRICT","QVOLATILE","QINLINE","QEXTENSION","QEXTERN","QSTATIC","QAUTO","QREGISTER",
-"QOUT","QIN","QYIELD","QONLY","QTEMP","QSHARED","QREF","QUNIQUE","QCHECKED",
-"QUNCHECKED","QCHECKEDSTRICT","QCHECKMOD","QKEEP","QKEPT","QPARTIAL","QSPECIAL",
-"QOWNED","QDEPENDENT","QRETURNED","QEXPOSED","QNULL","QOBSERVER","QISNULL","QEXITS",
-"QMAYEXIT","QNEVEREXIT","QTRUEEXIT","QFALSEEXIT","QLONG","QSIGNED","QUNSIGNED",
-"QSHORT","QUNUSED","QSEF","QNOTNULL","QRELNULL","QABSTRACT","QCONCRETE","QMUTABLE",
-"QIMMUTABLE","QTRUENULL","QFALSENULL","QEXTERNAL","QREFCOUNTED","QREFS","QNEWREF",
-"QTEMPREF","QKILLREF","QRELDEF","CGCHAR","CBOOL","CINT","CGFLOAT","CDOUBLE",
-"CVOID","QANYTYPE","QINTEGRALTYPE","QUNSIGNEDINTEGRALTYPE","QSIGNEDINTEGRALTYPE",
-"QNULLTERMINATED","QSETBUFFERSIZE","QSETSTRINGLENGTH","QMAXSET","QMAXREAD","QTESTINRANGE",
-"TCAND","IDENTIFIER","NEW_IDENTIFIER","TYPE_NAME_OR_ID","CANNOTATION","CCONSTANT",
-"ITER_NAME","ITER_ENDNAME","TYPE_NAME","METASTATE_NAME","file","externalDefs",
-"externalDef","constantDecl","fcnDecl","@1","plainFcn","plainNamedDecl","namedDeclBase",
-"@2","@3","plainNamedDeclBase","@4","@5","iterDecl","@6","@7","macroDef","fcnDefHdr",
+"QVOLATILE","QINLINE","QEXTENSION","QEXTERN","QSTATIC","QAUTO","QREGISTER","QOUT",
+"QIN","QYIELD","QONLY","QTEMP","QSHARED","QREF","QUNIQUE","QCHECKED","QUNCHECKED",
+"QCHECKEDSTRICT","QCHECKMOD","QKEEP","QKEPT","QPARTIAL","QSPECIAL","QOWNED",
+"QDEPENDENT","QRETURNED","QEXPOSED","QNULL","QOBSERVER","QISNULL","QEXITS","QMAYEXIT",
+"QNEVEREXIT","QTRUEEXIT","QFALSEEXIT","QLONG","QSIGNED","QUNSIGNED","QSHORT",
+"QUNUSED","QSEF","QNOTNULL","QRELNULL","QABSTRACT","QCONCRETE","QMUTABLE","QIMMUTABLE",
+"QTRUENULL","QFALSENULL","QEXTERNAL","QREFCOUNTED","QREFS","QNEWREF","QTEMPREF",
+"QKILLREF","QRELDEF","CGCHAR","CBOOL","CINT","CGFLOAT","CDOUBLE","CVOID","QANYTYPE",
+"QINTEGRALTYPE","QUNSIGNEDINTEGRALTYPE","QSIGNEDINTEGRALTYPE","QNULLTERMINATED",
+"QSETBUFFERSIZE","QSETSTRINGLENGTH","QMAXSET","QMAXREAD","QTESTINRANGE","TCAND",
+"IDENTIFIER","NEW_IDENTIFIER","TYPE_NAME_OR_ID","CANNOTATION","CCONSTANT","ITER_NAME",
+"ITER_ENDNAME","TYPE_NAME","METASTATE_NAME","file","externalDefs","externalDef",
+"constantDecl","fcnDecl","@1","plainFcn","plainNamedDecl","namedDeclBase","@2",
+"@3","plainNamedDeclBase","@4","@5","iterDecl","@6","@7","macroDef","fcnDefHdr",
 "metaStateConstraint","metaStateSpecifier","@8","@9","metaStateExpression","metaStateName",
 "constraintSeperator","BufConstraintList","BufConstraint","bufferModifier","relationalOp",
 "BufConstraintExpr","BufConstraintTerm","BufConstraintSrefExpr","BufUnaryOp",
@@ -870,76 +868,76 @@ static const char * const yytname[] = {   "$","error","$undefined.","BADTOK",
 #endif
 
 static const short yyr1[] = {     0,
-   195,   195,   196,   196,   197,   197,   197,   197,   197,   197,
-   197,   197,   198,   198,   200,   199,   201,   201,   202,   202,
-   203,   203,   203,   203,   204,   203,   205,   203,   206,   206,
-   206,   206,   207,   206,   208,   206,   210,   211,   209,   212,
-   212,   212,   212,   213,   214,   216,   215,   217,   215,   218,
-   218,   219,   220,   220,   221,   221,   222,   223,   223,   224,
-   224,   224,   225,   225,   225,   226,   226,   227,   227,   227,
-   227,   227,   227,   227,   227,   228,   229,   229,   230,   230,
-   231,   231,   232,   232,   232,   232,   232,   232,   233,   233,
-   233,   233,   233,   233,   234,   236,   235,   237,   238,   240,
-   239,   241,   241,   242,   243,   243,   244,   245,   245,   246,
-   246,   247,   248,   248,   249,   249,   249,   250,   250,   250,
-   250,   250,   251,   251,   251,   251,   251,   252,   252,   253,
-   253,   255,   254,   256,   257,   254,   258,   259,   259,   260,
-   260,   260,   260,   260,   260,   260,   260,   261,   261,   262,
-   262,   263,   263,   263,   263,   263,   263,   263,   263,   264,
-   264,   265,   265,   266,   266,   266,   266,   266,   266,   267,
-   266,   268,   268,   268,   268,   268,   268,   268,   268,   268,
-   268,   269,   269,   270,   270,   270,   270,   270,   270,   270,
-   270,   270,   270,   270,   271,   271,   271,   272,   274,   273,
-   275,   275,   275,   275,   276,   276,   277,   277,   277,   277,
-   278,   278,   278,   279,   279,   279,   280,   280,   280,   280,
-   280,   281,   281,   281,   282,   282,   283,   283,   284,   284,
-   285,   286,   285,   287,   288,   287,   289,   290,   291,   289,
-   292,   292,   292,   292,   292,   292,   292,   292,   292,   292,
-   292,   292,   293,   293,   294,   294,   295,   296,   296,   296,
-   297,   298,   297,   299,   297,   300,   301,   300,   303,   302,
-   302,   302,   304,   305,   306,   307,   307,   308,   308,   309,
-   309,   309,   309,   310,   310,   311,   311,   312,   312,   313,
-   313,   314,   314,   314,   314,   314,   315,   317,   316,   318,
-   319,   321,   320,   322,   320,   323,   323,   324,   324,   324,
-   324,   324,   325,   325,   325,   325,   326,   326,   326,   326,
-   326,   326,   326,   326,   326,   326,   326,   326,   326,   326,
-   326,   326,   326,   327,   327,   328,   328,   329,   329,   330,
-   330,   330,   330,   331,   331,   331,   331,   331,   331,   332,
-   332,   332,   332,   333,   333,   333,   333,   334,   334,   334,
-   334,   334,   334,   334,   334,   334,   334,   334,   334,   335,
-   335,   335,   335,   335,   335,   335,   335,   335,   335,   335,
-   335,   335,   335,   336,   337,   337,   338,   338,   339,   339,
-   339,   340,   340,   341,   343,   344,   342,   345,   346,   342,
-   342,   342,   347,   348,   342,   349,   350,   342,   342,   342,
-   342,   342,   351,   352,   352,   352,   353,   353,   354,   354,
-   355,   355,   355,   356,   357,   356,   356,   358,   358,   358,
-   359,   359,   360,   360,   360,   360,   361,   361,   362,   362,
-   363,   363,   363,   364,   364,   365,   365,   365,   365,   366,
-   366,   367,   367,   368,   368,   368,   370,   369,   371,   369,
-   372,   372,   373,   373,   374,   374,   374,   375,   375,   376,
-   376,   376,   376,   376,   376,   376,   376,   376,   377,   377,
-   377,   377,   377,   377,   377,   377,   377,   378,   379,   380,
-   380,   381,   381,   381,   381,   383,   384,   382,   386,   385,
-   385,   387,   387,   387,   387,   387,   387,   387,   387,   387,
-   387,   387,   387,   387,   389,   388,   390,   391,   392,   392,
-   393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
-   393,   394,   394,   395,   395,   397,   396,   398,   396,   400,
-   399,   401,   399,   402,   402,   403,   404,   405,   406,   407,
-   408,   409,   409,   409,   409,   409,   409,   409,   409,   410,
-   411,   411,   411,   411,   412,   412,   413,   413,   414,   414,
-   415,   415,   416,   416,   417,   417,   418,   418,   418,   419,
-   420,   421,   420,   422,   420,   423,   424,   426,   427,   425,
-   428,   429,   428,   430,   430,   430,   430,   431,   431,   432,
-   432,   433,   433,   433,   433,   433,   433,   433,   433,   433,
-   434,   434,   434,   434,   434,   434,   434,   434,   434,   434,
-   435,   435,   436,   436,   436,   436,   437,   437,   437,   438,
-   438,   438,   439,   439,   439,   439,   439,   440,   440,   440,
-   441,   441,   442,   442,   443,   443,   444,   444,   445,   445,
-   446,   447,   448,   446,   449,   449,   449,   449,   449,   449,
-   449,   449,   449,   449,   449,   449,   450,   450,   451,   452,
-   452,   452,   453,   453,   453,   453,   454,   454,   454,   454,
-   454,   454,   454,   454,   454,   454,   455,   455,   456,   456,
-   457,   458,   458,   458,   458,   458,   459,   459,   459,   459
+   194,   194,   195,   195,   196,   196,   196,   196,   196,   196,
+   196,   196,   197,   197,   199,   198,   200,   200,   201,   201,
+   202,   202,   202,   202,   203,   202,   204,   202,   205,   205,
+   205,   205,   206,   205,   207,   205,   209,   210,   208,   211,
+   211,   211,   211,   212,   213,   215,   214,   216,   214,   217,
+   217,   218,   219,   219,   220,   220,   221,   222,   222,   223,
+   223,   223,   224,   224,   224,   225,   225,   226,   226,   226,
+   226,   226,   226,   226,   226,   227,   228,   228,   229,   229,
+   230,   230,   231,   231,   231,   231,   231,   231,   232,   232,
+   232,   232,   232,   232,   233,   235,   234,   236,   237,   239,
+   238,   240,   240,   241,   242,   242,   243,   244,   244,   245,
+   245,   246,   247,   247,   248,   248,   248,   249,   249,   249,
+   249,   249,   250,   250,   250,   250,   250,   251,   251,   252,
+   252,   254,   253,   255,   256,   253,   257,   258,   258,   259,
+   259,   259,   259,   259,   259,   259,   259,   260,   260,   261,
+   261,   262,   262,   262,   262,   262,   262,   262,   262,   263,
+   263,   264,   264,   265,   265,   265,   265,   265,   265,   266,
+   265,   267,   267,   267,   267,   267,   267,   267,   267,   267,
+   267,   268,   268,   269,   269,   269,   269,   269,   269,   269,
+   269,   269,   269,   269,   270,   270,   271,   273,   272,   274,
+   274,   274,   274,   275,   275,   276,   276,   276,   276,   277,
+   277,   277,   278,   278,   278,   279,   279,   279,   279,   279,
+   280,   280,   280,   281,   281,   282,   282,   283,   283,   284,
+   285,   284,   286,   287,   286,   288,   289,   290,   288,   291,
+   291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
+   291,   292,   292,   293,   293,   294,   295,   295,   295,   296,
+   297,   296,   298,   296,   299,   300,   299,   302,   301,   301,
+   301,   303,   304,   305,   306,   306,   307,   307,   308,   308,
+   308,   308,   309,   309,   310,   310,   311,   311,   312,   312,
+   313,   313,   313,   313,   313,   314,   316,   315,   317,   318,
+   320,   319,   321,   319,   322,   322,   323,   323,   323,   323,
+   323,   324,   324,   324,   324,   325,   325,   325,   325,   325,
+   325,   325,   325,   325,   325,   325,   325,   325,   325,   325,
+   325,   325,   326,   326,   327,   327,   328,   328,   329,   329,
+   329,   329,   330,   330,   330,   330,   330,   330,   331,   331,
+   331,   331,   332,   332,   332,   332,   333,   333,   333,   333,
+   333,   333,   333,   333,   333,   333,   333,   334,   334,   334,
+   334,   334,   334,   334,   334,   334,   334,   334,   334,   334,
+   334,   335,   336,   336,   337,   337,   338,   338,   338,   339,
+   339,   340,   342,   343,   341,   344,   345,   341,   341,   341,
+   346,   347,   341,   348,   349,   341,   341,   341,   341,   341,
+   350,   351,   351,   351,   352,   352,   353,   353,   354,   354,
+   354,   355,   356,   355,   355,   357,   357,   357,   358,   358,
+   359,   359,   359,   359,   360,   360,   361,   361,   362,   362,
+   363,   363,   364,   364,   364,   364,   365,   365,   366,   366,
+   367,   367,   367,   369,   368,   370,   368,   371,   371,   372,
+   372,   373,   373,   373,   374,   374,   375,   375,   375,   375,
+   375,   375,   375,   375,   375,   376,   376,   376,   376,   376,
+   376,   376,   376,   376,   377,   378,   379,   379,   380,   380,
+   380,   380,   382,   383,   381,   385,   384,   384,   386,   386,
+   386,   386,   386,   386,   386,   386,   386,   386,   386,   386,
+   386,   388,   387,   389,   390,   391,   391,   392,   392,   392,
+   392,   392,   392,   392,   392,   392,   392,   392,   393,   393,
+   394,   394,   396,   395,   397,   395,   399,   398,   400,   398,
+   401,   401,   402,   403,   404,   405,   406,   407,   408,   408,
+   408,   408,   408,   408,   408,   408,   409,   410,   410,   410,
+   410,   411,   411,   412,   412,   413,   413,   414,   414,   415,
+   415,   416,   416,   417,   417,   417,   418,   419,   420,   419,
+   421,   419,   422,   423,   425,   426,   424,   427,   428,   427,
+   429,   429,   429,   429,   430,   430,   431,   431,   432,   432,
+   432,   432,   432,   432,   432,   432,   432,   433,   433,   433,
+   433,   433,   433,   433,   433,   433,   433,   434,   434,   435,
+   435,   435,   435,   436,   436,   436,   437,   437,   437,   438,
+   438,   438,   438,   438,   439,   439,   439,   440,   440,   441,
+   441,   442,   442,   443,   443,   444,   444,   445,   446,   447,
+   445,   448,   448,   448,   448,   448,   448,   448,   448,   448,
+   448,   448,   448,   449,   449,   450,   451,   451,   451,   452,
+   452,   452,   452,   453,   453,   453,   453,   453,   453,   453,
+   453,   453,   453,   454,   454,   455,   455,   456,   457,   457,
+   457,   457,   457,   458,   458,   458,   458
 };
 
 static const short yyr2[] = {     0,
@@ -962,1330 +960,1340 @@ static const short yyr2[] = {     0,
      1,     1,     3,     1,     1,     1,     3,     1,     1,     0,
      4,     1,     4,     3,     4,     6,     5,     5,     2,     2,
      7,     1,     3,     1,     2,     2,     2,     2,     2,     2,
-     2,     2,     1,     1,     3,     4,     1,     9,     0,     3,
-     4,     2,     4,     2,     1,     4,     1,     3,     3,     3,
-     1,     3,     3,     1,     3,     3,     1,     3,     3,     3,
-     3,     1,     3,     3,     1,     3,     1,     3,     1,     3,
-     1,     0,     4,     1,     0,     4,     1,     0,     0,     7,
-     1,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-     3,     3,     1,     3,     0,     1,     1,     1,     1,     1,
-     3,     0,     9,     0,    11,     2,     0,     6,     0,     8,
-     4,     4,     0,     0,     2,     1,     4,     0,     4,     1,
-     3,     4,     2,     2,     2,     1,     2,     3,     2,     1,
-     3,     1,     1,     1,     1,     1,     2,     0,     6,     2,
-     2,     0,     6,     0,     5,     1,     1,     1,     1,     1,
+     2,     2,     1,     1,     3,     1,     9,     0,     3,     4,
+     2,     4,     2,     1,     4,     1,     3,     3,     3,     1,
+     3,     3,     1,     3,     3,     1,     3,     3,     3,     3,
+     1,     3,     3,     1,     3,     1,     3,     1,     3,     1,
+     0,     4,     1,     0,     4,     1,     0,     0,     7,     1,
+     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+     3,     1,     3,     0,     1,     1,     1,     1,     1,     3,
+     0,     9,     0,    11,     2,     0,     6,     0,     8,     4,
+     4,     0,     0,     2,     1,     4,     0,     4,     1,     3,
+     4,     2,     2,     2,     1,     2,     3,     2,     1,     3,
+     1,     1,     1,     1,     1,     2,     0,     6,     2,     2,
+     0,     6,     0,     5,     1,     1,     1,     1,     1,     1,
      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
      1,     1,     1,     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,
+     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,     3,     1,     4,     1,     3,     2,     2,
-     2,     0,     1,     0,     0,     0,    12,     0,     0,    11,
-     6,     6,     0,     0,    10,     0,     0,    10,     5,     5,
-     4,     4,     0,     1,     1,     2,     5,     3,     2,     4,
-     1,     3,     4,     6,     0,     8,     4,     1,     3,     2,
-     1,     4,     1,     1,     2,     2,     1,     2,     1,     2,
-     1,     1,     1,     1,     2,     1,     2,     2,     3,     1,
-     3,     1,     3,     1,     1,     3,     0,     2,     0,     4,
-     4,     1,     1,     2,     1,     1,     2,     0,     1,     5,
-     2,     3,     3,     4,     3,     4,     4,     5,     1,     1,
-     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-     2,     2,     7,     6,     2,     0,     0,    10,     0,     6,
-     1,     1,     1,     1,     2,     1,     1,     1,     1,     1,
-     1,     1,     3,     1,     0,     3,     2,     2,     1,     1,
-     1,     1,     1,     1,     1,     1,     1,     1,     3,     1,
-     1,     2,     2,     0,     2,     0,     4,     0,     6,     0,
-     3,     0,     5,     3,     2,     3,     0,     0,     0,     0,
-     0,     1,     2,     2,     3,     2,     3,     3,     4,     2,
-     2,     3,     3,     4,     1,     2,     1,     2,     1,     3,
-     1,     4,     1,     2,     1,     2,     1,     2,     1,     4,
-     2,     0,     5,     0,     6,     4,     4,     0,     0,    10,
-     1,     0,     4,     1,     1,     1,     1,     1,     2,     1,
-     3,     1,     4,     3,     4,     6,     5,     5,     2,     2,
-     1,     2,     2,     2,     2,     2,     2,     2,     2,     1,
-     1,     4,     1,     3,     3,     3,     1,     3,     3,     1,
-     3,     3,     1,     3,     3,     3,     3,     1,     3,     3,
-     1,     3,     1,     3,     1,     3,     1,     3,     1,     3,
-     1,     0,     0,     7,     1,     3,     3,     3,     3,     3,
-     3,     3,     3,     3,     3,     3,     1,     0,     1,     2,
-     7,     2,     2,     7,     6,     2,     3,     2,     3,     2,
-     3,     3,     3,     3,     2,     3,     0,     1,     0,     1,
-     1,     1,     1,     1,     1,     1,     1,     1,     4,     4
+     2,     3,     1,     4,     1,     3,     2,     2,     2,     0,
+     1,     0,     0,     0,    12,     0,     0,    11,     6,     6,
+     0,     0,    10,     0,     0,    10,     5,     5,     4,     4,
+     0,     1,     1,     2,     5,     3,     2,     4,     1,     3,
+     4,     6,     0,     8,     4,     1,     3,     2,     1,     4,
+     1,     1,     2,     2,     1,     2,     1,     2,     1,     1,
+     1,     2,     1,     2,     2,     3,     1,     3,     1,     3,
+     1,     1,     3,     0,     2,     0,     4,     4,     1,     1,
+     2,     1,     1,     2,     0,     1,     5,     2,     3,     3,
+     4,     3,     4,     4,     5,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     1,     1,     2,     2,     7,
+     6,     2,     0,     0,    10,     0,     6,     1,     1,     1,
+     1,     2,     1,     1,     1,     1,     1,     1,     1,     3,
+     1,     0,     3,     2,     2,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     3,     1,     1,     2,     2,
+     0,     2,     0,     4,     0,     6,     0,     3,     0,     5,
+     3,     2,     3,     0,     0,     0,     0,     0,     1,     2,
+     2,     3,     2,     3,     3,     4,     2,     2,     3,     3,
+     4,     1,     2,     1,     2,     1,     3,     1,     4,     1,
+     2,     1,     2,     1,     2,     1,     4,     2,     0,     5,
+     0,     6,     4,     4,     0,     0,    10,     1,     0,     4,
+     1,     1,     1,     1,     1,     2,     1,     3,     1,     4,
+     3,     4,     6,     5,     5,     2,     2,     1,     2,     2,
+     2,     2,     2,     2,     2,     2,     1,     1,     4,     1,
+     3,     3,     3,     1,     3,     3,     1,     3,     3,     1,
+     3,     3,     3,     3,     1,     3,     3,     1,     3,     1,
+     3,     1,     3,     1,     3,     1,     3,     1,     0,     0,
+     7,     1,     3,     3,     3,     3,     3,     3,     3,     3,
+     3,     3,     3,     1,     0,     1,     2,     7,     2,     2,
+     7,     6,     2,     3,     2,     3,     2,     3,     3,     3,
+     3,     2,     3,     0,     1,     0,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     4,     4
 };
 
 static const short yydefact[] = {     0,
-    12,    11,   446,     0,   413,   259,   413,    15,     0,     0,
-     0,     0,   273,   273,   273,   293,   292,   294,   295,   296,
-   354,   355,   319,   321,   320,   324,   325,   313,   315,   316,
-   314,   322,   323,   356,   357,   317,   318,   334,   330,   326,
-   331,   327,   308,   309,   312,   310,   311,   351,   352,   353,
-   350,   336,   335,   329,   328,   340,   341,   342,   343,   338,
-   339,   337,   344,   345,   348,   349,   346,   347,   413,   413,
-   413,   413,   413,   413,   413,   413,   413,   413,   332,   691,
-   692,   696,   333,   693,   694,   697,     0,     3,     6,     7,
-   437,     8,     9,   134,    44,   687,    10,   258,   260,     0,
-   392,   273,   273,   273,   273,   273,   273,   273,   273,   413,
-   273,   392,   392,   413,   385,   413,     0,   413,   130,   273,
-   695,    21,   413,   441,   442,   443,   444,   447,   448,   273,
-   276,   273,   273,   269,   413,   698,   413,   413,   696,     0,
-   531,   273,   540,     0,     0,     0,   669,     0,     0,     0,
-     0,   273,   577,     0,   273,   273,   273,   273,   273,   273,
-   273,   273,   273,     0,    43,     0,     0,     0,     0,     0,
-   534,   273,   169,   165,   168,   598,   588,   172,   184,   205,
-   194,   193,   207,   211,   214,   217,   222,   225,   227,   229,
-   231,   234,   237,   241,   253,   579,   199,     0,     0,   565,
-   521,   522,   523,   524,     0,     0,   525,   273,   526,     0,
-   527,   166,     0,   528,   530,   164,     0,   514,     0,   575,
-     0,   547,   501,     0,     0,     0,   510,     0,   511,   490,
-   509,   506,   507,   502,   503,   504,     0,     0,   508,   515,
-     0,     0,   512,   489,     0,   358,   360,   359,   370,   372,
-   371,   373,   374,   375,   376,   377,   378,   379,     4,   273,
-     0,   132,   137,   413,   688,     5,   413,   393,   389,   363,
-   365,   362,   364,   367,   366,   368,   369,   383,   361,   390,
-   391,     0,   273,   273,   381,   273,   273,     0,   382,   438,
-   380,   445,   449,   273,   165,   168,     0,   413,   463,     0,
-   164,   413,     0,   275,   413,     0,   266,   273,   687,    17,
-    19,     0,   413,   273,    29,   457,   205,   257,   536,     0,
-   273,   273,   273,   273,     0,   678,   680,   685,     0,   547,
-     0,     0,     0,   187,   192,   191,   190,   189,   188,     0,
-   273,   185,   186,   273,     0,     0,     0,     0,     0,   534,
-     0,   273,   533,   273,   479,   480,   481,   482,     0,   483,
-   484,   273,   486,   273,   485,   487,   547,   273,   273,   179,
-   180,     0,   273,   273,   273,   273,   273,   273,   273,   273,
-   273,   273,   273,   273,   273,   273,   273,   273,   273,   273,
-   273,   273,   273,   273,   273,   273,   273,   273,   273,   232,
-   238,   235,   578,   273,     0,   676,    40,     0,   548,   566,
-   581,   673,   599,     0,   532,   273,     0,     0,     0,   576,
-    41,   491,   495,   567,   413,   505,   517,   518,     0,     0,
-     0,    42,    23,   273,   457,   413,   413,   273,   261,   131,
-   413,     0,   387,     0,   413,     0,   413,     0,   273,     0,
-   699,   273,   273,     0,   465,   464,   466,   700,   273,   272,
-   273,   271,   267,   413,     0,   273,     0,   413,   273,    20,
-   454,     0,     0,   439,   455,   273,     0,   541,     0,   584,
-     0,   256,     0,   677,   686,   547,     0,   167,   273,   529,
-   273,     0,     0,   681,   682,   683,   684,   679,   535,   273,
-   542,     0,   672,   413,   545,   670,     0,     0,   174,     0,
-   182,     0,     0,     0,   242,   243,   244,   245,   246,   247,
-   248,   249,   250,   251,   252,   208,   209,   210,   213,   212,
-   215,   216,   218,   219,   220,   221,   223,   224,   226,   228,
-   230,   273,   273,   273,   254,   273,   273,   200,   561,   698,
-   565,     0,   413,   546,   582,     0,     0,   513,   499,   273,
-   568,   516,     0,     0,    25,     0,   552,   273,   573,   133,
-   413,   273,   547,   273,   262,   386,   273,   403,     0,   411,
-   406,     0,   412,     0,   428,   431,   425,   427,   384,   471,
-     0,   457,   467,   273,     0,   277,   273,   273,   687,    16,
-    31,   273,   457,   273,    18,   440,   450,   452,    37,   459,
-   413,   458,   462,   537,   580,     0,   586,   273,   171,   273,
-   206,   413,     0,   273,   538,     0,   544,   560,     0,   589,
-   273,   175,   173,   273,   273,   233,     0,   236,   273,   202,
-   273,   204,   562,   563,   273,   273,   273,   587,   273,   413,
-   273,   413,    79,    27,   553,   556,   273,   273,   554,   273,
-   574,   136,     0,   264,   273,   388,   409,   549,   395,   410,
-   549,   398,   273,   430,   273,     0,   472,   475,   273,     0,
-   473,     0,   457,   106,   273,   273,   273,     0,    33,     0,
-   273,     0,    81,   456,   273,   468,   273,     0,   273,   571,
-   689,   569,     0,     0,     0,   543,   273,   273,   183,   177,
-   178,   239,     0,     0,   564,   583,     0,   273,   273,   273,
-   273,   273,   273,   273,   273,   273,     0,   165,   168,   184,
-   205,   193,   211,   214,   217,   222,   225,   227,   229,   231,
-   234,     0,   592,   591,   166,   602,   611,   621,   623,   627,
-   630,   633,   638,   641,   643,   645,   647,   649,   651,   655,
-   594,   164,     0,    24,     0,    96,   100,    98,   123,   124,
-   125,   126,   127,   128,   129,    26,    79,    83,     0,    85,
-    84,     0,    88,     0,   413,   413,    86,     0,    87,   304,
-     0,    79,   557,   558,   273,   555,    22,   273,   278,   413,
-   401,   549,   413,   402,   549,   424,   429,   273,     0,     0,
-   476,   474,   477,     0,     0,   105,   273,   273,     0,   280,
-   268,   273,     0,   286,     0,   273,     0,   413,    81,    35,
-     0,   451,   453,    38,    81,    89,    91,    90,    94,    92,
-    93,   460,   433,     0,   273,   468,   434,   469,   585,   496,
-   689,   273,     0,     0,   176,   539,     0,   592,   273,   201,
-   203,   675,     0,     0,   187,   192,   191,   190,   189,   188,
-   185,   186,   273,   273,   273,   179,   180,     0,   273,   273,
-   273,   273,   273,   273,   273,   273,   273,   273,   273,   273,
-   273,   273,   273,   273,   273,   273,   273,   273,   273,   273,
-   273,   273,   273,   273,   273,   232,   652,   235,   500,     0,
-   494,   104,   109,   102,   113,   687,    80,    95,    99,   107,
-   298,   301,   297,     0,   302,   300,    28,   559,   273,     0,
-   415,   413,   413,   414,   413,   413,   413,   432,   273,   470,
-   478,   270,   290,     0,     0,   289,   283,   284,   287,   285,
-   278,    13,    32,    34,    81,    30,   687,    82,   457,   461,
-   435,   436,   273,     0,   570,   181,     0,   197,     0,   547,
-   240,   674,   167,   273,     0,   174,     0,     0,     0,     0,
-   656,   657,   658,   659,   660,   661,   662,   663,   664,   665,
-   666,   208,   209,   210,   213,   212,   215,   216,   218,   219,
-   220,   221,   223,   224,   226,   228,   230,   648,   273,   650,
-   273,   493,   108,     0,   118,   119,   120,   121,   122,   687,
-   110,   413,   113,     0,     0,   141,   101,   150,   687,   139,
-   140,     0,    48,     0,     0,    58,    59,    69,    67,   307,
-     0,   306,    56,    76,     0,    63,    66,     0,   687,    68,
-   160,   278,   273,   413,     0,   273,   416,   404,   413,   407,
-   413,   426,   281,   273,   288,   687,    36,     0,   273,   497,
-   572,   273,   273,     0,   671,   668,   206,   273,   175,   173,
-   273,   273,     0,   593,   103,   113,    97,   116,   112,   117,
-   115,   114,     0,   144,     0,     0,     0,     0,   138,     0,
-     0,   153,   162,   687,   152,     0,     0,    66,     0,    72,
-     0,    54,    53,     0,    61,    60,    62,     0,     0,     0,
-     0,     0,     0,   273,   687,   161,     0,   263,   273,   418,
-   273,   273,   413,   421,     0,   396,     0,   399,   282,   291,
-     0,    39,   273,     0,   198,     0,   195,   667,   548,     0,
-   177,   178,   653,   111,   145,   142,   148,     0,   149,   146,
-   147,   151,     0,   156,     0,     0,     0,     0,   273,     0,
-    78,    77,     0,    73,     0,    50,    45,    46,    55,    66,
-    57,    70,     0,    74,    75,     0,     0,   305,   273,   273,
-   279,   273,   273,     0,   419,   273,   405,     0,   408,     0,
-    14,   498,   196,   590,   176,   273,   143,   157,   154,     0,
-   158,   159,   163,   299,    52,    49,     0,     0,    71,    47,
-    64,   303,   265,   422,   413,   417,   273,   394,   400,   654,
-   155,    65,    51,   420,   423,   397,     0,     0,     0
+    12,    11,   443,     0,   411,   258,   411,    15,     0,     0,
+     0,     0,   272,   272,   292,   291,   293,   294,   295,   353,
+   354,   318,   320,   319,   323,   324,   312,   314,   315,   313,
+   321,   322,   355,   356,   316,   317,   333,   329,   325,   330,
+   326,   307,   308,   311,   309,   310,   350,   351,   352,   349,
+   335,   334,   328,   327,   339,   340,   341,   342,   337,   338,
+   336,   343,   344,   347,   348,   345,   346,   411,   411,   411,
+   411,   411,   411,   411,   411,   411,   411,   331,   688,   689,
+   693,   332,   690,   691,   694,     0,     3,     6,     7,   435,
+     8,     9,   134,    44,   684,    10,   257,   259,     0,   390,
+   272,   272,   272,   272,   272,   272,   272,   272,   411,   272,
+   390,   390,   411,   383,   411,     0,   411,   130,   272,   692,
+    21,   411,   439,   440,   441,   444,   445,   272,   275,   272,
+   272,   268,   411,   695,   411,   411,   693,     0,   528,   272,
+   537,     0,     0,     0,   666,     0,     0,     0,     0,   272,
+   574,     0,   272,   272,   272,   272,   272,   272,   272,   272,
+   272,     0,    43,     0,     0,     0,     0,     0,   531,   272,
+   169,   165,   168,   595,   585,   172,   184,   204,   194,   193,
+   206,   210,   213,   216,   221,   224,   226,   228,   230,   233,
+   236,   240,   252,   576,   198,     0,     0,   562,   518,   519,
+   520,   521,     0,     0,   522,   272,   523,     0,   524,   166,
+     0,   525,   527,   164,     0,   511,     0,   572,     0,   544,
+   498,     0,     0,     0,   507,     0,   508,   487,   506,   503,
+   504,   499,   500,   501,     0,     0,   505,   512,     0,     0,
+   509,   486,     0,   357,   358,   368,   370,   369,   371,   372,
+   373,   374,   375,   376,   377,     4,   272,     0,   132,   137,
+   411,   685,     5,   411,   391,   387,   361,   363,   360,   362,
+   365,   364,   366,   367,   381,   359,   388,   389,     0,   272,
+   272,   379,   272,   272,     0,   380,   436,   378,   442,   446,
+   272,   165,   168,     0,   411,   460,     0,   164,   411,     0,
+   274,   411,     0,   265,   272,   684,    17,    19,     0,   411,
+   272,    29,   454,   204,   256,   533,     0,   272,   272,   272,
+   272,     0,   675,   677,   682,     0,   544,     0,     0,     0,
+   187,   192,   191,   190,   189,   188,     0,   272,   185,   186,
+   272,     0,     0,     0,     0,     0,   531,     0,   272,   530,
+   272,   476,   477,   478,   479,     0,   480,   481,   272,   483,
+   272,   482,   484,   544,   272,   272,   179,   180,     0,   272,
+   272,   272,   272,   272,   272,   272,   272,   272,   272,   272,
+   272,   272,   272,   272,   272,   272,   272,   272,   272,   272,
+   272,   272,   272,   272,   272,   272,   231,   237,   234,   575,
+   272,     0,   673,    40,     0,   545,   563,   578,   670,   596,
+     0,   529,   272,     0,     0,     0,   573,    41,   488,   492,
+   564,   411,   502,   514,   515,     0,     0,     0,    42,    23,
+   272,   454,   411,   411,   272,   260,   131,   411,     0,   385,
+     0,   411,     0,   411,     0,   272,     0,   696,   272,   272,
+     0,   462,   461,   463,   697,   272,   271,   272,   270,   266,
+   411,     0,   272,     0,   411,   272,    20,   451,     0,     0,
+   437,   452,   272,     0,   538,     0,   581,     0,   255,     0,
+   674,   683,   544,     0,   167,   272,   526,   272,     0,     0,
+   678,   679,   680,   681,   676,   532,   272,   539,     0,   669,
+   411,   542,   667,     0,     0,   174,     0,   182,     0,     0,
+     0,   241,   242,   243,   244,   245,   246,   247,   248,   249,
+   250,   251,   207,   208,   209,   212,   211,   214,   215,   217,
+   218,   219,   220,   222,   223,   225,   227,   229,   272,   272,
+   272,   253,   272,   272,   199,   558,   695,   562,     0,   411,
+   543,   579,     0,     0,   510,   496,   272,   565,   513,     0,
+     0,    25,     0,   549,   272,   570,   133,   411,   272,   544,
+   272,   261,   384,   272,   401,     0,   409,   404,     0,   410,
+     0,   426,   429,   423,   425,   382,   468,     0,   454,   464,
+   272,     0,   276,   272,   272,   684,    16,    31,   272,   454,
+   272,    18,   438,   447,   449,    37,   456,   411,   455,   459,
+   534,   577,     0,   583,   272,   171,   272,   205,   411,     0,
+   272,   535,     0,   541,   557,     0,   586,   272,   175,   173,
+   272,   272,   232,     0,   235,   272,   201,   272,   203,   559,
+   560,   272,   272,   272,   584,   272,   411,   272,   411,    79,
+    27,   550,   553,   272,   272,   551,   272,   571,   136,     0,
+   263,   272,   386,   407,   546,   393,   408,   546,   396,   272,
+   428,   272,     0,   469,   472,   272,     0,   470,     0,   454,
+   106,   272,   272,   272,     0,    33,     0,   272,     0,    81,
+   453,   272,   465,   272,     0,   272,   568,   686,   566,     0,
+     0,     0,   540,   272,   272,   183,   177,   178,   238,     0,
+     0,   561,   580,     0,   272,   272,   272,   272,   272,   272,
+   272,   272,   272,     0,   165,   168,   184,   204,   193,   210,
+   213,   216,   221,   224,   226,   228,   230,   233,     0,   589,
+   588,   166,   599,   608,   618,   620,   624,   627,   630,   635,
+   638,   640,   642,   644,   646,   648,   652,   591,   164,     0,
+    24,     0,    96,   100,    98,   123,   124,   125,   126,   127,
+   128,   129,    26,    79,    83,     0,    85,    84,     0,    88,
+     0,   411,   411,    86,     0,    87,   303,     0,    79,   554,
+   555,   272,   552,    22,   272,   277,   411,   399,   546,   411,
+   400,   546,   422,   427,   272,     0,     0,   473,   471,   474,
+     0,     0,   105,   272,   272,     0,   279,   267,   272,     0,
+   285,     0,   272,     0,   411,    81,    35,     0,   448,   450,
+    38,    81,    89,    91,    90,    94,    92,    93,   457,   431,
+     0,   272,   465,   432,   466,   582,   493,   686,   272,     0,
+     0,   176,   536,     0,   589,   272,   200,   202,   672,     0,
+     0,   187,   192,   191,   190,   189,   188,   185,   186,   272,
+   272,   272,   179,   180,     0,   272,   272,   272,   272,   272,
+   272,   272,   272,   272,   272,   272,   272,   272,   272,   272,
+   272,   272,   272,   272,   272,   272,   272,   272,   272,   272,
+   272,   272,   231,   649,   234,   497,     0,   491,   104,   109,
+   102,   113,   684,    80,    95,    99,   107,   297,   300,   296,
+     0,   301,   299,    28,   556,   272,     0,   413,   411,   411,
+   412,   411,   411,   411,   430,   272,   467,   475,   269,   289,
+     0,     0,   288,   282,   283,   286,   284,   277,    13,    32,
+    34,    81,    30,   684,    82,   454,   458,   433,   434,   272,
+     0,   567,   181,     0,   196,     0,   544,   239,   671,   167,
+   272,     0,   174,     0,     0,     0,     0,   653,   654,   655,
+   656,   657,   658,   659,   660,   661,   662,   663,   207,   208,
+   209,   212,   211,   214,   215,   217,   218,   219,   220,   222,
+   223,   225,   227,   229,   645,   272,   647,   272,   490,   108,
+     0,   118,   119,   120,   121,   122,   684,   110,   411,   113,
+     0,     0,   141,   101,   150,   684,   139,   140,     0,    48,
+     0,     0,    58,    59,    69,    67,   306,     0,   305,    56,
+    76,     0,    63,    66,     0,   684,    68,   160,   277,   272,
+   411,     0,   272,   414,   402,   411,   405,   411,   424,   280,
+   272,   287,   684,    36,     0,   272,   494,   569,   272,     0,
+   668,   665,   205,   272,   175,   173,   272,   272,     0,   590,
+   103,   113,    97,   116,   112,   117,   115,   114,     0,   144,
+     0,     0,     0,     0,   138,     0,     0,   153,   162,   684,
+   152,     0,     0,    66,     0,    72,     0,    54,    53,     0,
+    61,    60,    62,     0,     0,     0,     0,     0,     0,   272,
+   684,   161,     0,   262,   272,   416,   272,   272,   411,   419,
+     0,   394,     0,   397,   281,   290,     0,    39,   272,     0,
+   197,   195,   664,   545,     0,   177,   178,   650,   111,   145,
+   142,   148,     0,   149,   146,   147,   151,     0,   156,     0,
+     0,     0,     0,   272,     0,    78,    77,     0,    73,     0,
+    50,    45,    46,    55,    66,    57,    70,     0,    74,    75,
+     0,     0,   304,   272,   272,   278,   272,   272,     0,   417,
+   272,   403,     0,   406,     0,    14,   495,   587,   176,   272,
+   143,   157,   154,     0,   158,   159,   163,   298,    52,    49,
+     0,     0,    71,    47,    64,   302,   264,   420,   411,   415,
+   272,   392,   398,   651,   155,    65,    51,   418,   421,   395,
+     0,     0,     0
 };
 
-static const short yydefgoto[] = {  1237,
-    87,    88,    89,    90,   138,   309,   310,    91,   653,   792,
-   311,   829,   955,    92,   693,   957,   931,    94,  1040,  1176,
-  1122,  1106,  1177,  1216,  1114,  1042,  1043,  1044,  1118,  1045,
-  1046,  1180,  1048,  1173,   776,   834,   777,   835,   778,   836,
-   915,   837,   781,   838,   916,   913,   914,   815,   783,   784,
-  1020,  1021,  1022,  1089,  1023,   785,   786,    95,   263,   436,
-   264,   573,    96,  1027,  1157,  1158,  1029,  1103,  1125,  1104,
-   178,   330,   179,   510,   180,   967,   181,   182,   405,   548,
-   183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-   542,   193,   544,   194,   543,   859,   195,   224,   483,   319,
-   424,    98,   665,   798,   131,   598,    99,   305,   197,   261,
-   132,   133,   930,   821,   822,   823,   824,   944,   101,   787,
-   840,  1032,   789,   790,   841,  1051,   924,  1049,   102,   103,
-   104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
-   299,   425,   442,   115,   269,  1236,   116,   802,  1198,   805,
-  1200,   668,  1135,   671,  1137,   117,   933,   934,  1132,  1133,
-   118,   676,   584,   585,   845,   135,   473,   127,   128,   120,
-   606,   607,   474,   475,   476,   695,   612,   332,   810,   847,
-   457,   353,   225,   245,   226,   227,   354,   963,  1144,   229,
-   649,   230,   231,   429,   232,   233,   199,   410,   355,   351,
-   356,   477,   705,   357,   320,   626,   358,   204,   359,   554,
-   800,  1058,   238,   570,   505,   409,   206,   571,   701,   702,
-   572,   360,   207,   208,   361,   646,   616,   362,   241,   363,
-   367,   708,   743,   910,   744,   212,   746,   747,   748,   749,
-   750,   751,   752,   753,   754,   755,   756,   757,   758,   759,
-   760,  1009,  1206,   761,  1149,   364,   365,   214,   366,   266,
-   853,   301,   217,   123
+static const short yydefgoto[] = {  1231,
+    86,    87,    88,    89,   136,   306,   307,    90,   650,   789,
+   308,   826,   952,    91,   690,   954,   928,    93,  1037,  1171,
+  1118,  1102,  1172,  1210,  1110,  1039,  1040,  1041,  1114,  1042,
+  1043,  1175,  1045,  1168,   773,   831,   774,   832,   775,   833,
+   912,   834,   778,   835,   913,   910,   911,   812,   780,   781,
+  1017,  1018,  1019,  1085,  1020,   782,   783,    94,   260,   433,
+   261,   570,    95,  1024,  1152,  1153,  1026,  1099,  1121,  1100,
+   176,   327,   177,   507,   178,   964,   179,   180,   402,   545,
+   181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+   539,   191,   541,   192,   540,   856,   193,   222,   480,   316,
+   421,    97,   662,   795,   129,   595,    98,   302,   195,   258,
+   130,   131,   927,   818,   819,   820,   821,   941,   100,   784,
+   837,  1029,   786,   787,   838,  1048,   921,  1046,   101,   102,
+   103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
+   296,   422,   439,   114,   266,  1230,   115,   799,  1193,   802,
+  1195,   665,  1131,   668,  1133,   116,   930,   931,  1128,  1129,
+   117,   673,   581,   582,   842,   133,   470,   125,   126,   119,
+   603,   604,   471,   472,   473,   692,   609,   329,   807,   844,
+   454,   350,   223,   243,   224,   225,   351,   960,  1140,   227,
+   646,   228,   229,   426,   230,   231,   197,   407,   352,   348,
+   353,   474,   702,   354,   317,   623,   355,   202,   356,   551,
+   797,  1055,   236,   567,   502,   406,   204,   568,   698,   699,
+   569,   357,   205,   206,   358,   643,   613,   359,   239,   360,
+   364,   705,   740,   907,   741,   210,   743,   744,   745,   746,
+   747,   748,   749,   750,   751,   752,   753,   754,   755,   756,
+   757,  1006,  1200,   758,  1144,   361,   362,   212,   363,   263,
+   850,   298,   215,   122
 };
 
-static const short yypact[] = {  2065,
--32768,-32768,   384,    46,  5282,-32768,  6580,-32768,   798,  3278,
-  3580,  3580,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+static const short yypact[] = {  2126,
+-32768,-32768,    46,    55,  5187,-32768,  6479,-32768,   810,  3178,
+  3478,  3478,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,   637,-32768,-32768,-32768,-32768,  2295,-32768,-32768,-32768,
-   413,-32768,-32768,   103,-32768,    79,-32768,-32768,-32768,   109,
-  6172,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,  6172,  6172,   128,    70,-32768,   891,-32768,-32768,   798,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,   384,-32768,  5564,
--32768,   183,-32768,   128,-32768,-32768,-32768,  5282,-32768,   162,
--32768,  5564,-32768,   201,   231,   240,-32768,   280,   798,   293,
-   303,  1612,-32768,  2681,  5564,  5564,  5564,  5564,  5564,  5564,
--32768,  5585,  5585,   333,-32768,   357,   385,   395,   428,   448,
-   404,  4793,-32768,   527,   556,-32768,   571,-32768,   848,  1096,
--32768,-32768,-32768,  1019,   244,    59,   471,   279,   526,   557,
-   560,   565,   139,-32768,-32768,   126,-32768,  3625,   519,   567,
--32768,-32768,-32768,-32768,   645,  3323,-32768,  4793,-32768,  3625,
--32768,   460,  3625,-32768,-32768,   664,   710,-32768,   719,-32768,
-  2874,   571,   715,   368,   674,  3429,-32768,  3580,-32768,-32768,
--32768,  5900,-32768,-32768,-32768,-32768,   783,   769,-32768,-32768,
-  3580,  3625,-32768,-32768,   756,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   836,
-   917,-32768,-32768,  6444,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,   863,   765,-32768,-32768,   798,   798,   523,-32768,   413,
--32768,-32768,-32768,  3368,-32768,-32768,   351,  5764,   393,   843,
--32768,-32768,   912,-32768,-32768,   958,   886,   765,    79,-32768,
-   425,   954,-32768,   798,-32768,   302,-32768,-32768,-32768,   978,
-  5564,  5564,  5564,  1885,  1000,-32768,-32768,-32768,   462,   985,
-   242,   995,  1001,-32768,-32768,-32768,-32768,-32768,-32768,  1009,
-  3368,-32768,-32768,  5564,  1020,  1025,  1028,  1030,  1039,   404,
-   451,  3519,-32768,  4793,-32768,-32768,-32768,-32768,  1040,-32768,
--32768,  4793,-32768,  4793,-32768,-32768,-32768,  5452,  5564,-32768,
--32768,   134,  5564,  5564,  5564,  5564,  5564,  5564,  5564,  5564,
-  5564,  5564,  5564,  5564,  5564,  5564,  5564,  5564,  5564,  5564,
-  5564,  5564,  5564,  5564,  5564,  5564,  5564,  5564,  5564,-32768,
--32768,-32768,-32768,  5564,   389,-32768,-32768,  2488,-32768,-32768,
-  1054,-32768,-32768,  1057,-32768,  5564,   457,  1047,  1055,-32768,
--32768,-32768,-32768,-32768,   128,  5900,-32768,-32768,  3580,  3172,
-  1071,-32768,-32768,  5564,    87,  3731,  4876,   765,-32768,   681,
-  6580,   992,  1067,  1072,  1073,  1074,  1073,   798,  1080,   375,
--32768,-32768,  5463,  1066,   653,-32768,   770,-32768,   765,-32768,
-   765,-32768,-32768,-32768,  1021,  1086,  1092,-32768,   765,   425,
--32768,   798,  1097,-32768,  1103,   798,  1105,-32768,   495,  1104,
-   588,  1104,  1110,-32768,-32768,   985,  1106,-32768,  4698,-32768,
--32768,  1107,  1109,-32768,-32768,-32768,-32768,-32768,-32768,  5564,
--32768,  1113,-32768,  3731,-32768,-32768,  1123,  1111,-32768,   640,
--32768,   263,   798,   798,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1019,  1019,
-   244,   244,    59,    59,    59,    59,   471,   471,   279,   526,
-   557,  5564,  5564,  5564,-32768,  5596,  5628,-32768,-32768,  3067,
--32768,  3474,  3919,-32768,-32768,  1115,   673,-32768,-32768,   765,
--32768,-32768,  1116,  1114,-32768,  1117,-32768,  4295,-32768,-32768,
-  4107,  4340,   985,-32768,  1122,-32768,-32768,  1126,  1128,-32768,
-  1132,  1129,-32768,   506,-32768,  1130,-32768,-32768,-32768,-32768,
-  1137,   507,   770,  5495,  1145,-32768,   183,-32768,   273,-32768,
--32768,  5564,   234,   765,-32768,-32768,  1150,-32768,-32768,  1167,
-  6580,-32768,-32768,-32768,-32768,  1149,-32768,  1885,-32768,  5202,
--32768,-32768,  1170,-32768,-32768,  1168,-32768,-32768,  1172,-32768,
-  5564,-32768,-32768,-32768,-32768,   560,   470,   565,  3368,-32768,
-  3368,-32768,-32768,-32768,  4446,  4793,  5564,-32768,  5684,-32768,
-  5564,-32768,   922,-32768,-32768,-32768,  4491,  4597,-32768,  4642,
--32768,-32768,  1169,-32768,-32768,-32768,-32768,-32768,  1177,-32768,
--32768,  1179,-32768,   798,-32768,   798,-32768,-32768,   214,  1176,
--32768,  1180,   210,  1119,   916,-32768,-32768,  1182,-32768,  1178,
--32768,   315,   922,-32768,   798,   419,  4793,  1186,  5202,-32768,
-  1185,-32768,  1190,  1188,  1193,-32768,  5564,  5684,-32768,-32768,
--32768,-32768,  1192,  1195,-32768,-32768,   682,  3368,  5564,  5564,
-  5564,  5564,  5564,  5564,  5585,  5585,  1197,   713,   788,   943,
-  1121,   790,  1051,   742,   514,   745,   578,  1194,  1189,  1187,
-  1174,   170,  1200,-32768,    33,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,   791,   793,-32768,  1044,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,   922,-32768,  1141,-32768,
--32768,  1142,-32768,  1143,-32768,-32768,-32768,  1146,-32768,  2137,
-  1147,   922,-32768,-32768,  4748,-32768,-32768,-32768,-32768,  6308,
--32768,-32768,  6308,-32768,-32768,-32768,-32768,  5564,   800,  1211,
--32768,-32768,-32768,  1214,  1222,-32768,   916,  5564,   798,-32768,
--32768,   916,   777,-32768,  1219,   916,  1151,-32768,   922,-32768,
-  1218,-32768,-32768,-32768,   922,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   413,  1221,-32768,   646,-32768,   770,-32768,-32768,
-  1185,  1985,  1226,   798,-32768,-32768,   820,  1229,  5564,  1170,
-  1170,  1239,   828,  1234,   844,   845,   850,   857,   859,   867,
-   873,   874,  5564,  5484,  5564,   880,   887,   157,  5564,  5564,
-  5564,  5564,  5564,  5564,  5564,  5564,  5564,  5564,  5564,  5564,
-  5564,  5564,  5564,  5564,  5564,  5564,  5564,  5564,  5564,  5564,
-  5564,  5564,  5564,  5564,  5564,  5564,-32768,  5564,-32768,  1240,
-  1244,-32768,  1075,  1224,   235,   248,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,   558,-32768,-32768,-32768,-32768,   916,   623,
--32768,   128,  5036,-32768,  6308,  5036,  6308,-32768,-32768,-32768,
--32768,-32768,-32768,   815,  1241,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,   922,-32768,    79,-32768,   593,-32768,
--32768,-32768,  5516,  1246,-32768,-32768,  1016,-32768,  1251,   985,
--32768,-32768,   890,  4698,  1249,   898,   906,   291,   798,   798,
+   694,-32768,-32768,-32768,-32768,  2309,-32768,-32768,-32768,   272,
+-32768,-32768,   109,-32768,   126,-32768,-32768,-32768,   141,  6074,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,   918,   937,   945,   736,   947,   497,   555,   105,   533,
-   631,   714,   668,   725,    86,   638,   328,   560,  5564,   565,
-  5684,-32768,   460,  1044,-32768,-32768,-32768,-32768,-32768,   695,
--32768,  6036,   235,    45,    45,-32768,-32768,   575,   705,-32768,
--32768,   111,-32768,   894,   212,-32768,-32768,-32768,-32768,-32768,
-  1250,-32768,    -3,-32768,   976,-32768,   489,  1248,    79,-32768,
-   111,-32768,-32768,-32768,  1256,   656,-32768,-32768,  5036,-32768,
-  5036,-32768,-32768,  3127,-32768,   733,-32768,  1184,   600,-32768,
--32768,-32768,  5564,   798,-32768,  1098,   952,-32768,   989,   991,
--32768,-32768,   911,-32768,-32768,   235,-32768,-32768,-32768,-32768,
--32768,-32768,    78,   575,   160,   798,   798,    45,-32768,   111,
-   111,-32768,   602,   809,-32768,  1266,   961,   145,   212,   603,
-   154,-32768,-32768,   894,-32768,-32768,-32768,   894,    30,   798,
-   798,  1267,   894,-32768,    79,  1270,   885,-32768,   765,-32768,
--32768,  1271,-32768,  1272,  1276,-32768,  1277,-32768,-32768,-32768,
-  1208,-32768,   734,  1275,-32768,   295,-32768,-32768,-32768,  1278,
-   994,   996,-32768,-32768,-32768,-32768,   575,  1274,   460,-32768,
--32768,   575,   549,   602,   532,   798,   798,   111,-32768,  1108,
--32768,-32768,   894,-32768,   145,  1264,-32768,   603,-32768,   603,
--32768,-32768,  1279,-32768,-32768,  1108,  1280,-32768,-32768,-32768,
--32768,  5564,   656,  1290,-32768,-32768,-32768,  1289,-32768,  1291,
--32768,-32768,-32768,-32768,  1002,  5564,-32768,-32768,-32768,  1283,
--32768,-32768,   602,-32768,-32768,-32768,  1287,   154,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,  5564,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,  1314,  1315,-32768
+  6074,  6074,   161,   102,-32768,   187,-32768,-32768,   810,-32768,
+-32768,-32768,-32768,-32768,-32768,    46,-32768,  5488,-32768,   182,
+-32768,   161,-32768,-32768,-32768,  5187,-32768,   253,-32768,  5488,
+-32768,   265,   285,   301,-32768,   322,   810,   335,   347,   754,
+-32768,  2689,  5488,  5488,  5488,  5488,  5488,  5488,-32768,  5534,
+  5534,   351,-32768,   375,   385,   394,   402,   409,   329,  4680,
+-32768,   441,   449,-32768,   478,-32768,   555,  1166,-32768,-32768,
+-32768,   770,   183,   563,    69,   570,   476,   486,   472,   500,
+    72,-32768,-32768,   464,-32768,  3523,   497,   507,-32768,-32768,
+-32768,-32768,   557,  3223,-32768,  4680,-32768,  3523,-32768,   444,
+  3523,-32768,-32768,   587,   647,-32768,   650,-32768,  2881,   478,
+   685,   481,   592,  3328,-32768,  3478,-32768,-32768,-32768,  5804,
+-32768,-32768,-32768,-32768,   696,   701,-32768,-32768,  3478,  3523,
+-32768,-32768,   646,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,   752,   744,-32768,-32768,
+  6344,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   763,   454,
+-32768,-32768,   810,   810,   420,-32768,   272,-32768,-32768,-32768,
+  1167,-32768,-32768,   266,  5669,   294,   764,-32768,-32768,   777,
+-32768,-32768,   809,   806,   454,   126,-32768,   307,   814,-32768,
+   810,-32768,    78,-32768,-32768,-32768,   833,  5488,  5488,  5488,
+  3429,   855,-32768,-32768,-32768,   506,   840,   443,   858,   867,
+-32768,-32768,-32768,-32768,-32768,-32768,   870,  1167,-32768,-32768,
+  5488,   889,   891,   916,   924,   926,   329,   644,  4586,-32768,
+  4680,-32768,-32768,-32768,-32768,   947,-32768,-32768,  4680,-32768,
+  4680,-32768,-32768,-32768,  5356,  5488,-32768,-32768,    50,  5488,
+  5488,  5488,  5488,  5488,  5488,  5488,  5488,  5488,  5488,  5488,
+  5488,  5488,  5488,  5488,  5488,  5488,  5488,  5488,  5488,  5488,
+  5488,  5488,  5488,  5488,  5488,  5488,-32768,-32768,-32768,-32768,
+  5488,   658,-32768,-32768,  2497,-32768,-32768,  1029,-32768,-32768,
+   987,-32768,  5488,   733,  1005,   969,-32768,-32768,-32768,-32768,
+-32768,   161,  5804,-32768,-32768,  3478,  2037,  1036,-32768,-32768,
+  5488,   157,  3628,  4763,   454,-32768,   434,  6479,   945,  1028,
+  1035,  1043,  1050,  1043,   810,  1055,   342,-32768,-32768,  5367,
+  1051,   417,-32768,   688,-32768,   454,-32768,   454,-32768,-32768,
+-32768,   994,  1053,  1063,-32768,   454,   307,-32768,   810,  1064,
+-32768,  1067,   810,  1068,-32768,   355,  1074,   404,  1074,  1083,
+-32768,-32768,   840,  1077,-32768,  5087,-32768,-32768,  1078,  1085,
+-32768,-32768,-32768,-32768,-32768,-32768,  5488,-32768,  1079,-32768,
+  3628,-32768,-32768,  1097,  1099,-32768,   471,-32768,    89,   810,
+   810,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,   770,   770,   183,   183,   563,
+   563,   563,   563,    69,    69,   570,   476,   486,  5488,  5488,
+  5488,-32768,  5546,  5579,-32768,-32768,  3073,-32768,  3373,  3815,
+-32768,-32768,  1102,   473,-32768,-32768,   454,-32768,-32768,  1103,
+  1082,-32768,  1105,-32768,  4189,-32768,-32768,  4002,  4233,   840,
+-32768,  1089,-32768,-32768,  1108,  1117,-32768,  1118,  1121,-32768,
+   741,-32768,  1114,-32768,-32768,-32768,-32768,  1125,   363,   688,
+  5401,  1124,-32768,   182,-32768,    52,-32768,-32768,  5488,   559,
+   454,-32768,-32768,  1120,-32768,-32768,  1151,  6479,-32768,-32768,
+-32768,-32768,  1140,-32768,  3429,-32768,  5108,-32768,-32768,  1147,
+-32768,-32768,  1145,-32768,-32768,  1146,-32768,  5488,-32768,-32768,
+-32768,-32768,   472,   791,   500,  1167,-32768,  1167,-32768,-32768,
+-32768,  4338,  4680,  5488,-32768,  5590,-32768,  5488,-32768,  1350,
+-32768,-32768,-32768,  4382,  4487,-32768,  4531,-32768,-32768,  1144,
+-32768,-32768,-32768,-32768,-32768,  1152,-32768,-32768,  1154,-32768,
+   810,-32768,   810,-32768,-32768,   108,  1155,-32768,  1149,    62,
+  1104,  1789,-32768,-32768,  1157,-32768,  1168,-32768,   290,  1350,
+-32768,   810,   968,  4680,  1161,  5108,-32768,  1173,-32768,  1182,
+  1179,  1160,-32768,  5488,  5590,-32768,-32768,-32768,-32768,  1180,
+  1181,-32768,-32768,   545,  1167,  5488,  5488,  5488,  5488,  5488,
+  5488,  5534,  5534,  1183,   609,   635,   923,  1486,   665,   970,
+   984,   905,   756,   935,  1184,  1169,  1170,  1153,    74,  1186,
+-32768,    41,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   699,   714,
+-32768,  1032,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,  1350,-32768,  1128,-32768,-32768,  1129,-32768,
+  1130,-32768,-32768,-32768,  1131,-32768,  1975,  1143,  1350,-32768,
+-32768,  4636,-32768,-32768,-32768,-32768,  6209,-32768,-32768,  6209,
+-32768,-32768,-32768,-32768,  5488,  1021,  1210,-32768,-32768,-32768,
+  1211,  1219,-32768,  1789,  5488,   810,-32768,-32768,  1789,   653,
+-32768,  1217,  1789,  1150,-32768,  1350,-32768,  1218,-32768,-32768,
+-32768,  1350,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   272,
+  1221,-32768,   773,-32768,   688,-32768,-32768,  1173,  1710,  1222,
+   810,-32768,-32768,   727,  1223,  5488,  1147,  1147,  1231,   735,
+  1225,   799,   801,   820,   831,   841,   846,   851,   868,  5488,
+  5412,  5488,   878,   897,   221,  5488,  5488,  5488,  5488,  5488,
+  5488,  5488,  5488,  5488,  5488,  5488,  5488,  5488,  5488,  5488,
+  5488,  5488,  5488,  5488,  5488,  5488,  5488,  5488,  5488,  5488,
+  5488,  5488,  5488,-32768,  5488,-32768,  1230,  1234,-32768,  1065,
+  1213,   529,   359,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+   218,-32768,-32768,-32768,-32768,  1789,   537,-32768,   161,  4922,
+-32768,  6209,  4922,  6209,-32768,-32768,-32768,-32768,-32768,-32768,
+  1025,  1232,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,  1350,-32768,   126,-32768,   512,-32768,-32768,-32768,  5460,
+  1237,-32768,-32768,   505,-32768,  1242,   840,-32768,-32768,   903,
+  5087,  1241,   908,   910,   156,   810,   810,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   948,   966,
+   982,   861,   902,   929,   949,   428,   602,   659,   819,   738,
+   853,   105,   411,   315,   472,  5488,   500,  5590,-32768,   444,
+  1032,-32768,-32768,-32768,-32768,-32768,   556,-32768,  5939,   529,
+   321,   321,-32768,-32768,   515,   640,-32768,-32768,   362,-32768,
+   588,   450,-32768,-32768,-32768,-32768,-32768,  1240,-32768,   -17,
+-32768,  1004,-32768,    63,  1244,   126,-32768,   362,-32768,-32768,
+-32768,  1246,   400,-32768,-32768,  4922,-32768,  4922,-32768,-32768,
+  1315,-32768,   883,-32768,  1175,   886,-32768,-32768,-32768,   810,
+-32768,  1080,   990,-32768,   993,  1002,-32768,-32768,  1030,-32768,
+-32768,   529,-32768,-32768,-32768,-32768,-32768,-32768,   386,   515,
+   661,   810,   810,   321,-32768,   362,   362,-32768,   678,   898,
+-32768,  1247,  1027,   490,   450,   712,   193,-32768,-32768,   588,
+-32768,-32768,-32768,   588,    24,   810,   810,  1248,   588,-32768,
+   126,  1251,   957,-32768,   454,-32768,-32768,  1252,-32768,  1254,
+  1257,-32768,  1258,-32768,-32768,-32768,  1189,-32768,   546,  1249,
+-32768,-32768,-32768,-32768,  1262,  1003,  1012,-32768,-32768,-32768,
+-32768,   515,  1256,   444,-32768,-32768,   515,   638,   678,   794,
+   810,   810,   362,-32768,  1095,-32768,-32768,   588,-32768,   490,
+  1261,-32768,   712,-32768,   712,-32768,-32768,  1264,-32768,-32768,
+  1095,  1269,-32768,-32768,-32768,-32768,  5488,   400,  1271,-32768,
+-32768,-32768,  1278,-32768,  1282,-32768,-32768,-32768,  1014,  5488,
+-32768,-32768,-32768,  1277,-32768,-32768,   678,-32768,-32768,-32768,
+  1280,   193,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+  5488,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+  1306,  1308,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,  1230,-32768,-32768,-32768,-32768,  -361,   -94,-32768,-32768,
-  1004,-32768,-32768,-32768,-32768,-32768,    77,-32768,-32768,   392,
--32768,-32768,   102,   135,-32768,   208,-32768,-32768,-32768,  -970,
--32768,  -858,-32768,-32768,  -627,  -698,-32768,-32768,-32768,  -548,
--32768,  -448,-32768,  -325,-32768,   309,-32768,-32768,   641,  -646,
--32768,   238,   305,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,  -864,   161,-32768, -1005,-32768,   278,
--32768,-32768,  -609,   458,  1093,-32768,-32768,  -607,-32768,-32768,
-   -84,  -343,  -356,  -275,  -357,  -360,  -369,  -395,  -492,  -513,
--32768,  -587,-32768,  -117,-32768,-32768,   903,  1412,  -570,  -402,
-    28,-32768,-32768,-32768,  -456,-32768,-32768,-32768,   753,  -251,
-   870,-32768,  -886,  -732,-32768,-32768,   510,-32768,-32768,-32768,
-  -322,-32768,-32768,-32768,  -311,-32768,-32768,-32768,-32768,-32768,
-   544,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,     1,   758,-32768,   953,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,   -55,  -736,  -852,-32768,   143,
--32768,-32768,   662,   665,   494,     2,  -379,  1213,-32768,     4,
--32768,-32768,  -549,-32768,-32768,-32768,   647,  -103,  1045,-32768,
-  -431,   862,  1331,-32768,  1112,-32768,   117,-32768,-32768,-32768,
--32768,  -135,-32768,-32768,-32768,-32768,-32768,    20,   258,   997,
-  1165,-32768,-32768,  1458,-32768,-32768,  -317,-32768,  1139,   199,
-  -588,  -599,-32768,   851,-32768,-32768,   946,  -186,   657,   512,
-  -428,   140,-32768,   156,    39,-32768,-32768,   165,-32768,   181,
--32768,-32768,   650,-32768,   348,  -608,-32768,-32768,-32768,-32768,
+-32768,  1227,-32768,-32768,-32768,-32768,  -414,  -113,-32768,-32768,
+   998,-32768,-32768,-32768,-32768,-32768,    65,-32768,-32768,   395,
+-32768,-32768,   103,   136,-32768,   208,-32768,-32768,-32768,  -987,
+-32768,  -893,-32768,-32768,  -634,  -750,-32768,-32768,-32768,  -538,
+-32768,  -536,-32768,  -477,-32768,   309,-32768,-32768,   641,  -648,
+-32768,   239,   305,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,  -873,   166,-32768,  -943,-32768,   281,
+-32768,-32768,  -624,   460,   989,-32768,-32768,  -588,-32768,-32768,
+  -122,  -371,  -370,  -343,  -336,  -379,  -388,  -376,  -513,  -511,
+-32768,  -585,-32768,  -137,-32768,-32768,  1087,  1379,  -586,  -423,
+    25,-32768,-32768,-32768,  -455,-32768,-32768,-32768,   729,  -270,
+   874,-32768,  -885,  -746,-32768,-32768,   513,-32768,-32768,-32768,
+  -418,-32768,-32768,-32768,  -417,-32768,-32768,-32768,-32768,-32768,
+   549,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,   188,   766,-32768,   953,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,    28,  -763,  -524,-32768,   149,
+-32768,-32768,   669,   667,   508,     2,  -382,  1229,-32768,    20,
+-32768,-32768,  -571,-32768,-32768,-32768,   666,  -107,  1061,-32768,
+  -448,  -152,  1347,-32768,  1127,-32768,   706,-32768,-32768,-32768,
+-32768,  -155,-32768,-32768,-32768,-32768,-32768,    14,  1071,  1022,
+  1088,-32768,-32768,  1437,-32768,-32768,  -308,-32768,    82,   243,
+  -613,  -810,-32768,   887,-32768,-32768,   985,  -177,   697,   543,
+  -478,   113,-32768,   189,    33,-32768,-32768,    39,-32768,   162,
+-32768,-32768,   689,-32768,   387,  -587,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,  1518,-32768,-32768,  1639,  -273,
-   511,     0,   441,-32768
+-32768,-32768,-32768,-32768,-32768,  1443,-32768,-32768,  1527,  -246,
+   548,     0,   442,-32768
 };
 
 
-#define        YYLAST          6773
-
-
-static const short yytable[] = {   121,
-   114,   119,   596,   541,   121,   134,   129,   137,   121,   216,
-   216,   216,   487,   249,   250,   251,   252,   253,   254,   255,
-   256,   257,   258,   593,   318,   290,   300,    97,   540,   200,
-   638,   564,   531,   532,   502,   465,   539,   537,   538,   730,
-   745,   732,   680,   529,   530,   426,   839,   698,   209,   636,
-   591,  1028,  1112,  -600,   278,   566,  1182,  -600,   283,   467,
-   285,   742,   289,  1107,  1066,  1047,   936,   291,  1024,   130,
-   334,   335,   336,   337,   338,   339,    93,   437,  1025,   307,
-  1057,   308,   803,  1057,   943,   418,   121,   114,   119,   947,
-   422,   471,   423,   951,  1163,  1164,   265,   625,   730,   745,
-   732,   268,  1155,  1095,   779,  1096,  -642,   605,   389,   390,
-  -642,   565,   268,   268,    97,   533,   534,   535,   536,   121,
-   742,   262,  1097,   372,   645,  -634,   198,   228,   228,  -634,
-   954,   293,   267,   814,  1100,   741,   958,   121,   313,   395,
-   396,   314,   658,   403,  1101,  -273,   404,  1181,   121,   917,
-   239,   239,  1187,   216,   389,   390,   740,   284,  1033,  1093,
-  1094,   513,  1213,    93,   927,  1127,   240,   240,   502,  1174,
-  1119,   216,  1120,   333,   210,  1108,  1110,  1109,   514,   401,
-   443,  1113,   839,  1024,   979,   316,  1156,  1035,   839,  1121,
-   211,   682,   209,  1025,   741,   402,  1052,   216,  1059,   688,
-  1061,   980,  1217,   302,   780,   216,  1057,   216,  1057,   216,
-   907,   438,   216,   935,   471,   740,   937,   406,   467,  1183,
-   216,   553,   413,   690,   321,   216,   908,   216,   779,   412,
-    80,  1026,   414,  1162,   813,  1109,   209,   492,   471,   453,
-   216,   216,   691,   779,   209,  1035,   459,     3,   209,   461,
-  1175,   209,  1178,   739,   322,   662,  1067,   469,   689,   403,
-   472,   431,   404,   323,   848,   265,   488,   201,   234,   234,
-   198,  1024,  -413,  -413,  -413,   387,   388,  -413,  -413,   738,
-   209,  1025,   121,   404,   440,   121,   121,   121,   737,   633,
-   265,   736,   734,   562,   422,   686,    80,  1102,   452,   526,
-   527,   528,   455,   324,  1013,   733,   471,   121,   839,   464,
-   326,   404,   739,   121,   198,   404,   318,  1080,   210,   832,
-   327,  1203,   198,  1015,  1016,   687,   198,   782,   780,   198,
-   788,  1140,   395,   396,   211,   318,  1060,   228,   738,    80,
-  1038,   791,   228,   780,   228,    80,  1026,   737,  -646,   176,
-   736,   734,  -646,   216,  1017,  1018,   344,   228,   198,  1178,
-   239,   216,   210,   216,   733,   239,   398,   239,  1019,   560,
-   210,   404,   345,   735,   210,   451,   240,   210,   211,   472,
-   239,   240,   318,   240,   575,   420,   211,   622,   404,   580,
-   211,   583,  1070,   211,  1010,   404,   240,    80,  1038,   488,
-   346,   730,   745,   732,   621,   938,   210,   216,   599,   680,
-   347,   201,   604,  1008,   848,   945,  -273,     3,   453,  -413,
-  -413,  -413,   211,   742,  -413,  -413,     3,   551,   216,   216,
-   546,   547,   735,    80,  1026,   216,  -274,   121,   260,   574,
-   122,   452,  -273,   348,   453,   122,   209,   121,  -274,   140,
-   466,   782,     3,   561,   788,   201,   500,   501,   121,  1136,
-   121,  1138,   349,   201,   561,   791,   782,   201,   121,   788,
-   201,   121,   314,   443,   420,   121,   318,   404,   234,   485,
-   791,   488,   404,   234,   318,   234,  1159,  -413,  -413,  -413,
-   404,   712,  -413,  -413,   124,   125,   126,   741,   234,   201,
-    80,    81,   139,   216,   350,    84,    85,   391,   392,  1007,
-   -46,   471,   121,   121,  1119,   404,  1120,  -631,   740,   615,
-   704,  -631,   393,   394,   198,   673,   674,   122,   387,   388,
-  -413,   678,  -413,  1121,  1006,   713,   679,   714,   997,   998,
-  -413,   448,  1005,  1003,  1004,   228,   228,   472,  -692,   995,
-   996,   216,   216,  -635,   397,  1024,  1159,  -635,  1209,   121,
-   122,   650,  1033,   895,   896,  1025,   703,   216,   239,   239,
-   216,   216,   210,  1208,  1165,  -632,  1166,  -696,   315,  -632,
-   561,  1034,   389,   390,   240,   240,   387,   388,   211,   325,
-   209,  1035,  -693,  1167,   575,   398,   764,   471,   561,   399,
-  1095,   843,  1096,   121,    80,    81,   139,   314,   404,    84,
-    85,   696,   617,   407,   864,   739,  -413,   678,  -413,  1097,
-   400,   999,  1000,  1001,  1002,   453,  -413,  1165,  1119,  1166,
-  1120,   901,   902,     3,   865,   866,   867,   868,   869,   870,
-  1053,   738,  1030,  1054,   216,   216,  1167,  1121,   762,   413,
-   737,  -636,  1076,   736,   734,  -636,   216,   216,  -644,   216,
-   631,  -519,  -644,   408,   632,   201,   397,   733,   198,  -273,
-  -698,   453,  1191,   121,   878,   121,  -273,  1131,   453,     3,
-   389,   390,   455,  1068,   216,  -695,   234,   234,  -639,     3,
-   318,   121,  -639,   404,   121,   121,   216,   648,  -413,   846,
-   318,  -413,   404,  -413,   391,   392,   862,   762,    80,    81,
-   139,   593,   265,    84,    85,  1086,   210,    80,  1026,   393,
-   394,   176,   265,   122,  -698,  1098,   445,   447,   449,   921,
-   922,   415,   211,  -597,  -637,   735,  -694,  -597,  -637,  1036,
-  1037,   971,   416,    80,  1038,  -640,  1087,  1039,   122,  -640,
-   265,   843,   100,  1054,   315,  1099,  -629,   100,  -465,   453,
-  -629,   391,   392,   389,   390,   246,   247,   248,   421,   384,
-   385,   386,   953,   893,   894,  1124,   393,   394,  -413,  -413,
-  -413,   897,   898,  -413,  -413,    80,    81,   139,   428,  1224,
-    84,    85,  1141,  -273,   216,   594,   899,   900,     3,   948,
-   932,   427,   818,   932,   819,   992,   993,   994,  -596,   201,
-  -620,  -595,  -596,   404,  -620,  -595,   216,   911,   121,   939,
-   674,   216,  -698,  -698,  1235,   216,   265,  -698,  -698,  1168,
-  1169,    80,    81,   139,  1063,  1064,    84,    85,   961,   100,
-   404,    80,    81,   139,   969,   121,    84,    85,   404,   846,
-   432,  1189,   973,   121,   270,   271,   272,   273,   274,   275,
-   276,   277,   433,   279,  -614,  -619,   282,   458,  -614,  -619,
-  -618,   368,   100,   369,  -618,  -413,  1056,  -617,   122,  -616,
-   439,  -617,   298,  -616,   303,   304,   306,  -615,   586,  1077,
-   312,  -615,  -413,  -612,  -613,   370,   371,  -612,  -613,   122,
-  -609,   122,  1190,  1069,  -609,  1054,   298,  -610,   463,   315,
-  -601,  -610,   608,   340,  -601,  1031,   613,  1034,  -604,    80,
-    81,   139,  -604,  1050,    84,    85,   631,  1035,   216,   460,
-  1079,   404,  1153,   932,   817,   932,   932,   932,  -624,   294,
-   435,   818,  -624,   819,   155,   156,   157,   158,   159,   160,
-    80,    81,   139,   634,   635,    84,    85,  -625,   286,   287,
-   288,  -625,   161,   162,   163,  -626,   874,  -628,   875,  -626,
-  -413,  -628,  -622,   298,  1150,   462,  -622,   468,   121,   121,
-   384,   385,   386,    80,    81,   139,   164,  -413,    84,    85,
-   876,   877,  1171,  1172,   765,   766,   767,   768,  1129,   478,
-   122,   769,   770,   771,   772,   773,   774,   775,   486,  -605,
-   762,  -603,   434,  -605,  -607,  -603,  -608,   484,  -607,   489,
-  -608,  1091,  -606,  1031,  1031,   490,  -606,  1115,  1116,  1117,
-   173,  1105,   491,  1050,  1050,   100,   441,   494,   444,   446,
-  1072,  1073,   495,  1074,   315,   496,   298,   497,   290,  1090,
-  1105,   454,   384,   385,   386,   121,   498,  1134,   504,   932,
-   100,   932,   555,   216,   280,   281,   312,   556,   121,   411,
-   574,   558,  1143,   121,   318,  1036,  1037,  1195,   559,    80,
-  1038,   563,   576,  1039,   890,   891,   892,   577,  1230,   592,
-   578,  -273,   581,   298,  1031,   121,   121,  1031,   587,  1105,
-  1105,    80,   174,   175,   298,   176,    84,    85,  1050,   318,
-  1050,   600,   601,  1050,   586,   603,   586,  1050,   373,   121,
-   121,   609,  1050,   610,   404,   825,   614,   618,   121,   624,
-   619,   623,   833,   629,   630,   613,   122,   627,   647,   651,
-   652,   654,   121,   879,   664,   667,   669,   672,   205,   237,
-   237,   670,   675,   374,   375,   376,   377,   378,   379,   380,
-   381,   382,   383,   677,  1031,   121,   121,  1105,   683,  1234,
-   692,   694,  1050,   697,   202,   235,   235,   282,   880,   881,
-   882,   883,   884,   885,   886,   887,   888,   889,   620,   706,
-   100,   765,   121,   797,  1134,   707,   801,   579,   804,   582,
-   811,   588,   830,   850,   589,   852,   812,   454,   828,   595,
-   854,   100,   855,   100,   856,   503,   860,  1050,   602,   861,
-   873,   312,   903,   506,   909,   507,   905,   904,   611,   906,
-   912,   918,   919,   920,   317,   940,   923,   926,   941,   942,
-   950,   952,   956,   441,   959,   966,   493,   317,   317,   317,
-   317,   317,   317,   970,   342,   343,   972,   825,   974,   946,
-  1011,  1012,   825,  1014,   176,  1071,   825,  1065,  1075,  1078,
-   511,  1123,  1111,  1130,  1142,   515,   516,   517,   518,   519,
-   520,   521,   522,   523,   524,   525,   122,  1170,  1186,  1148,
-  1168,  1193,   205,  1196,   968,  1197,  1199,   569,  1201,  1202,
-  1207,  1215,  1205,  1218,  1221,  1219,   545,  1226,  1228,  1231,
-  1229,  1232,   100,  1238,  1239,  1041,   259,   470,   202,  1233,
-  1220,  1179,  1085,  1154,   816,  1210,   663,  1092,  1126,   441,
-   597,   977,   949,   925,   666,  1225,   205,   809,   807,   962,
-   292,   842,   244,   456,   205,   595,   499,  1204,   205,   684,
-   685,   205,   430,   552,   628,   851,   312,   858,  1084,   237,
-   419,   964,   202,   965,   237,   569,   237,     0,     0,   825,
-   202,     0,     0,     0,   202,     0,   441,   202,     0,   237,
-   205,     0,     0,     0,     0,   235,   710,   711,     0,     0,
-   235,   298,   235,   298,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   235,   202,     0,     0,     0,
-     0,     0,     0,     0,   569,     0,     0,   799,     0,  1081,
-  1082,   196,     0,     0,     0,   806,     0,   808,     0,     0,
-     0,   454,   569,   661,     0,     0,     0,     0,   826,   827,
-     0,     0,     0,   831,     0,     0,     0,   611,   844,     0,
+#define        YYLAST          6671
+
+
+static const short yytable[] = {   120,
+   593,   118,   315,   590,   120,   287,   537,   561,   120,   214,
+   214,   214,   526,   527,   536,   528,   529,   677,   484,   538,
+   297,   727,   127,   198,    96,   633,   588,  1044,   695,   635,
+   331,   332,   333,   334,   335,   336,   933,   464,  1108,  1025,
+   499,   836,   207,  1103,   530,   531,   532,   533,   208,   563,
+  1177,   602,   423,   408,   800,   534,   535,   729,   742,   462,
+   739,  -597,  1063,   415,    92,  -597,   468,   940,   419,   262,
+   420,   642,   944,   622,   683,   951,   948,   510,   128,     3,
+   727,   955,   468,   434,   -46,   120,   810,   118,  1115,   655,
+  1116,   203,   235,   235,   511,   246,   247,   248,   249,   250,
+   251,   252,   253,   254,   255,   388,   389,  1117,   811,   401,
+    96,   776,   398,   777,   904,   630,   729,   742,   120,   739,
+   390,   391,  1057,   237,   237,  -639,  1176,   259,   399,  -639,
+   905,  1182,   737,   450,   738,   120,   275,  1104,  1106,   914,
+   280,     3,   282,   262,   286,   290,   120,  1089,  1090,   288,
+    92,   214,  1158,  1159,   924,   311,   123,   124,   392,   393,
+   304,   468,   305,  1123,   264,   330,  1109,   679,  1056,   214,
+  1058,   209,   779,   440,   499,   685,   401,   836,  -272,  1049,
+  1211,   562,  1076,   836,   207,   932,   688,   113,   934,   281,
+   208,   737,   132,   738,   135,   214,   464,  1030,   500,   238,
+   238,  1064,   299,   214,   369,   214,   503,   214,   504,   403,
+   214,  1170,  1178,  1173,   384,   385,  1105,   687,   214,  1207,
+  1157,   409,  1030,   214,   411,   214,  1032,   550,   207,   410,
+   489,   785,   788,   203,   208,   776,   207,   777,   214,   214,
+   207,  1031,   208,   207,   845,  1132,   208,  1134,   976,   208,
+   776,  1032,   777,   428,   283,   284,   285,   735,   523,   524,
+   525,   659,  -411,  -411,  -411,   977,   734,  -411,  -411,   736,
+   559,   419,   207,   113,   730,   731,   313,   203,   208,   120,
+   566,   437,   120,   120,   120,   203,   401,   265,   318,   203,
+   448,   435,   203,   315,   829,  -273,   779,   257,   265,   265,
+   235,   416,   732,   836,   120,   235,   461,   235,   319,   733,
+   120,   779,   315,   209,  1136,   452,   735,  -272,  1173,   450,
+   235,   203,  1010,   310,   320,   734,   456,     3,   736,   458,
+  -273,   237,   463,   730,   731,  -643,   237,   466,   237,  -643,
+   469,  -411,  -411,  -411,  1021,   321,  -411,  -411,   566,   684,
+   214,   237,   323,   395,  1022,   785,   788,   209,   214,   315,
+   214,   732,   401,   618,   324,   209,   485,   468,   733,   209,
+   785,   788,   209,  1067,   341,   401,   262,    79,  1035,   612,
+   619,   935,  1021,   727,   677,  1096,  -411,   675,  -411,  1005,
+   342,   942,  1022,  1007,   845,  1097,  -411,   566,  1033,  1034,
+   343,   209,    79,  1035,   214,  1054,  1036,   238,  1054,   344,
+  1150,  1091,   238,  1092,   238,   566,   658,   345,   548,   729,
+   742,  1127,   739,   346,   401,   214,   214,   238,   614,   347,
+  1093,  -641,   214,     3,   120,  -641,   571,   207,   445,   394,
+  -272,   121,   450,   208,   120,   505,   121,   558,  -631,   557,
+   138,  -411,  -631,   315,  -411,   120,  -411,   120,   558,   469,
+   400,   315,  -689,   401,   572,   120,   440,   485,   120,   577,
+  -693,   580,   120,  1105,    79,    80,   137,   386,   387,    83,
+    84,   400,   449,  1032,   401,   311,   203,     3,   596,   658,
+   713,   628,   601,   401,   737,   629,   738,   645,   417,  -690,
+   214,   401,   658,  1154,   394,    79,  1023,   235,   235,   120,
+   120,   396,  1003,   701,  1169,  1115,   468,  1116,   992,   993,
+  1002,   994,   995,   482,   395,  1004,   401,   121,   710,  1069,
+   711,  1054,  1070,  1054,  1117,  -411,   675,  -411,   237,   237,
+  1091,   846,  1092,    79,  1023,  -411,    79,  1098,   214,   214,
+   996,   997,   998,   999,  1050,   397,   120,  1051,   647,  1093,
+   121,  1000,  1001,   468,   214,   401,   209,   214,   214,   859,
+  -462,   450,  1154,   262,   558,   405,  1082,   312,   365,   840,
+   366,   207,  -411,   686,    79,    80,   137,   208,   322,    83,
+    84,   404,   558,   862,   863,   864,   865,   866,   867,  -411,
+   120,  -516,   367,   368,    79,    80,   137,   861,  -692,    83,
+    84,  1031,   386,   387,   238,   238,   676,  1012,  1013,   735,
+   311,  1032,  -632,   392,   393,   449,  -632,   469,   734,  -594,
+   203,   736,   410,  -594,    79,  1035,   730,   731,    79,    80,
+   137,   214,   214,    83,    84,   759,   700,  1014,  1015,   497,
+   498,   386,   387,   214,   214,  -593,   214,   262,  1072,  -593,
+  1094,  1016,  1202,  1160,   732,  1161,  1027,   315,   412,  1186,
+   120,   733,   120,   413,   572,   945,   761,   315,   815,  -633,
+   816,   214,  1162,  -633,  1021,  -617,   418,  1151,   120,  -617,
+   590,   120,   120,   214,  1022,   452,  -411,  -411,  -411,   543,
+   544,  -411,  -411,  1160,   759,  1161,  -691,  1065,   386,   387,
+   209,  -272,   843,   591,   424,   196,   226,   226,   968,  -592,
+   425,   121,  1162,  -592,   442,   444,   446,  -695,    99,   840,
+    79,    80,   137,    99,   401,    83,    84,  1115,   908,  1116,
+   429,   244,   245,  -411,  -411,  -411,   121,   401,  -411,  -411,
+   417,   966,   312,   401,   875,   401,  1117,   485,  -636,   970,
+   670,   671,  -636,  1218,   989,   990,   991,   432,  1033,  1034,
+  1083,   325,    79,  1035,   388,   389,  1036,   291,   430,  1095,
+   436,  -695,   153,   154,   155,   156,   157,   158,   455,   390,
+   391,   214,   894,   895,   457,   693,  -272,  1229,   450,  1120,
+   159,   160,   161,   381,   382,   383,     3,   896,   897,   918,
+   919,   401,   709,   214,    99,   120,  1137,  1021,   214,  -611,
+  1203,  -616,   214,  -611,   162,  -616,   459,  1022,   460,   267,
+   268,   269,   270,   271,   272,   273,   274,   465,   276,  -634,
+  -615,   279,   120,  -634,  -615,    79,  1023,    99,  1073,   174,
+   120,  -614,   950,  1164,   475,  -614,   295,   196,   300,   301,
+   303,  -613,   843,   483,   309,  -613,  -612,   171,   386,   387,
+  -612,  -609,   481,  -637,  1184,  -609,   121,  -637,  -695,  -695,
+   295,  -626,   486,  -695,  -695,  -626,   583,   337,  -610,   388,
+   389,   487,  -610,   488,   381,   382,   383,   121,  -606,   121,
+   262,   196,  -606,  1051,   390,   391,   491,   312,   492,   196,
+   605,   450,  1028,   196,   610,   262,   196,  -607,  1163,     3,
+  1047,  -607,  -625,  -598,   226,   214,  -625,  -598,  -601,   226,
+   628,   226,  -601,   493,  1075,   381,   382,   383,    79,   292,
+   293,   494,   174,   495,   226,   196,   871,   295,   872,  -628,
+  -411,   631,   632,  -628,   892,   893,  1053,    79,    80,   137,
+   384,   385,    83,    84,   958,   501,  1145,  -411,  -621,  -629,
+   873,   874,  -621,  -629,  1185,   120,   120,  1051,    79,  1023,
+   384,   385,   174,  1066,   929,   431,  -622,   929,   898,   899,
+  -622,  -272,   556,   450,    79,    80,   137,   553,   121,    83,
+    84,     3,  -623,   887,   888,   889,  -623,   759,    99,   438,
+  -619,   441,   443,  -602,  -619,   890,   891,  -602,  1087,   295,
+  1028,  1028,  -600,  -604,   451,   287,  -600,  -604,  1101,   555,
+  1047,  1047,  -605,    99,  -603,   573,  -605,   552,  -603,   309,
+   936,   671,   312,  1086,  1060,  1061,   560,  1101,   574,   315,
+   401,  1148,   120,   575,  1130,  1111,  1112,  1113,  1166,  1167,
+   214,  -272,  1224,   277,   278,   120,   295,   571,   578,   120,
+    79,    80,   137,   584,   589,    83,    84,   295,  1125,   598,
+   199,   232,   232,   315,   597,  1139,   600,   607,   606,   611,
+  1028,   120,   120,  1028,   401,  1101,  1101,   200,   233,   233,
+   615,   616,   620,   624,  1047,   621,  1047,   626,   649,  1047,
+   196,   661,   583,  1047,   583,   120,   120,   929,  1047,   929,
+   929,   929,   627,   822,   120,   644,   648,   664,   314,   651,
+   830,   226,   226,   610,   121,   666,   672,   667,   120,   669,
+   689,   314,   314,   314,   314,   314,   314,   680,   339,   340,
+   279,   674,    79,    80,   137,   691,  1190,    83,    84,  1028,
+   120,   120,  1101,    99,   694,   617,   703,  1047,   794,   704,
+   576,   798,   579,   801,   585,   809,   762,   586,   847,   808,
+   451,   853,   592,   825,    99,  -170,    99,   120,   370,  1130,
+   291,   599,   827,   849,   309,   153,   154,   155,   156,   157,
+   158,   608,   851,   852,   857,   858,   870,   901,   903,   902,
+   906,  1047,   900,   159,   160,   161,   438,   909,   915,   916,
+   917,   920,   199,   371,   372,   373,   374,   375,   376,   377,
+   378,   379,   380,   923,   937,   938,   939,   162,   947,   200,
+   949,   963,   953,   929,   956,   929,  1228,   967,   969,   971,
+  1008,  1009,  1011,   174,   196,   822,  1068,   943,  1062,  1071,
+   822,  1074,  1107,  1126,   822,  1138,   199,  1119,  1165,  1181,
+  1143,  1163,  1188,  1197,   199,  1191,  1192,  1194,   199,  1196,
+   171,   199,  1201,   200,   121,    99,  1199,  1209,  1220,   232,
+  1213,   200,   965,  1215,   232,   200,   232,  1222,   200,   660,
+  1212,  1223,   438,  1225,  1226,  1232,   233,  1233,   467,   232,
+   199,   233,   256,   233,  1227,  1038,  1214,  1174,   592,  1081,
+  1149,   813,   681,   682,  1088,  1204,   233,   200,  1122,   309,
+   974,   594,   946,   814,  1135,   922,  1219,   804,   291,   663,
+   815,   806,   816,   153,   154,   155,   156,   157,   158,   438,
+   959,    79,   292,   293,   289,   174,   453,   839,   242,   707,
+   708,   159,   160,   161,   295,   427,   295,   822,   496,   314,
+   314,   314,   314,   314,   314,   314,   314,   314,   314,   314,
+   314,   314,   314,   314,   314,   162,  1198,   625,   194,   549,
+   796,   962,   848,   855,  1080,   961,     0,     0,   803,     0,
+   805,     0,     0,     0,   451,     0,     0,     0,     0,     0,
+     0,   823,   824,     0,     0,     0,   828,  1077,  1078,   314,
+   608,   841,   762,   763,   764,   765,     0,   490,   171,   766,
+   767,   768,   769,   770,   771,   772,     0,     0,   314,     0,
+     0,     0,     0,   295,     0,     0,   201,   234,   234,     0,
+     0,   508,   211,   240,   240,     0,   512,   513,   514,   515,
+   516,   517,   518,   519,   520,   521,   522,     0,     0,     0,
+     0,     0,     0,     0,   314,   199,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   314,     0,   542,     0,     0,
+     0,     0,   200,     0,   121,     0,   232,   232,     0,    79,
+   172,   173,   822,   174,    83,    84,   294,   121,   876,     0,
+     0,  1142,     0,   233,   233,     0,     0,     0,     0,     0,
+     0,     0,     0,   926,     0,     0,     0,   314,   326,   314,
+   328,   637,   639,  1155,  1156,     0,   213,   241,   241,     0,
+     0,     0,     0,   877,   878,   879,   880,   881,   882,   883,
+   884,   885,   886,     0,     0,     0,     0,  1179,  1180,     0,
+     0,     0,     0,     0,     0,     0,   121,     0,     0,     0,
+   957,   841,     0,   592,   194,     0,     0,     0,     0,   314,
+   121,     0,   194,     0,     0,     0,   194,   314,   201,   194,
+     0,     0,     0,     0,   211,     0,     0,   414,     0,     0,
+     0,     0,  1205,  1206,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   194,   199,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   121,
+     0,     0,   201,     0,   728,     0,   200,     0,   211,     0,
+   201,     0,     0,     0,   201,     0,   211,   201,     0,     0,
+   211,     0,     0,   211,     0,   234,     0,  1052,     0,     0,
+   234,   240,   234,     0,  1059,     0,   240,     0,   240,   447,
+     0,     0,     0,     0,     0,   234,   201,     0,   213,     0,
+     0,   240,   211,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   728,     0,     0,   476,   477,   478,   479,
+     0,     0,     0,   697,   314,   314,   314,   314,   314,   314,
+   868,   869,     0,     0,   706,     0,   447,     0,     0,     0,
+     0,     0,   213,     0,     0,     0,     0,   447,   696,  -687,
+   213,     0,     0,   291,   213,     0,     0,   213,   153,   154,
+   155,   156,   157,   158,   509,   241,     0,     0,     0,     0,
+   241,     0,   241,     0,     0,     0,   159,   160,   161,     0,
+     0,     0,     0,     0,     0,   241,   213,     0,   817,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,  1124,     0,
+   162,    99,   697,   194,     0,     0,     0,     0,     0,     0,
+     0,   554,     0,   314,   841,     0,     0,  1141,     0,     0,
+     0,     0,   438,   314,     0,  1146,  1147,   814,     0,     0,
+     0,     0,   291,     0,   815,     0,   816,   153,   154,   155,
+   156,   157,   158,   171,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   159,   160,   161,     0,     0,
+     0,   201,     0,     0,   314,     0,     0,   211,  1183,     0,
+     0,     0,     0,    99,     0,  1187,  1189,     0,     0,   162,
+     0,     0,   234,   234,     0,     0,     0,   841,   240,   240,
+     0,     0,     0,     0,     0,   314,   314,   314,   314,   314,
+   314,   314,   314,   314,   314,   314,   314,   314,   314,   314,
+   314,   314,  1208,   314,    79,   292,   293,     0,   174,     0,
+   817,     0,   171,     0,     0,   817,     0,     0,     0,   817,
+     0,     0,  1216,  1217,     0,     0,    99,     0,   634,  1221,
+     0,     0,     0,     0,     0,     0,     0,   194,     0,     0,
+     0,   213,     0,     0,     0,   697,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   203,   236,   236,
-   298,     0,     0,     0,     0,     0,   317,   317,   317,   317,
-   317,   317,   317,   317,   317,   317,   317,   317,   317,   317,
-   317,   317,     0,     0,     0,     0,   122,     0,     0,     0,
-     0,     0,     0,     0,   825,   508,   661,   716,     0,   122,
-     0,     0,     0,     0,  1147,     0,     0,     0,     0,   661,
-     0,     0,   700,     0,     0,     0,   317,   213,   242,   242,
-     0,     0,     0,   709,     0,     0,  1160,  1161,     0,     0,
-     0,   297,     0,     0,     0,   317,   205,     0,     0,     0,
-   929,     0,     0,     0,     0,     0,     0,     0,   849,     0,
-  1184,  1185,     0,   329,     0,   331,     0,   237,   237,   122,
-     0,     0,   202,     0,     0,     0,     0,     0,     0,     0,
-     0,   317,     0,   122,     0,     0,     0,   820,     0,     0,
-     0,     0,   317,   235,   235,     0,     0,   960,   844,     0,
-   595,   700,     0,     0,     0,     0,  1211,  1212,     0,   196,
-     0,   203,     0,     0,     0,     0,     0,   196,     0,     0,
-     0,   196,     0,     0,   196,     0,     0,     0,     0,   328,
-     0,     0,   417,   122,   317,   294,   317,     0,   640,   642,
-   155,   156,   157,   158,   159,   160,     0,     0,   215,   243,
-   243,     0,     0,   196,     0,   203,     0,     0,   161,   162,
-   163,     0,     0,   203,     0,     0,     0,   203,     0,     0,
-   203,   213,     0,     0,     0,     0,     0,     0,   236,     0,
-     0,     0,   164,   236,  1055,   236,   317,     0,     0,     0,
-   205,  1062,     0,     0,   317,     0,     0,     0,   236,   203,
-     0,     0,     0,     0,     0,   450,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   213,   202,     0,     0,   820,
-     0,     0,     0,   213,   820,     0,   173,   213,   820,     0,
-   213,     0,   479,   480,   481,   482,     0,     0,   242,     0,
-     0,   731,     0,   242,     0,   242,     0,     0,     0,     0,
-     0,     0,   450,     0,   700,     0,     0,     0,   242,   213,
-     0,     0,     0,   450,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   975,   511,     0,     0,     0,
-   512,   981,   982,   983,   984,   985,   986,   987,   988,   989,
-   990,   991,   215,     0,     0,     0,     0,    80,   295,   296,
-   731,   176,     0,     0,     0,  1128,     0,     0,   100,     0,
-     0,   317,   317,   317,   317,   317,   317,   871,   872,   196,
-     0,   844,     0,     0,  1145,     0,     0,   557,     0,     0,
-   441,   820,     0,  1151,  1152,     0,   215,     0,     0,     0,
-     0,     0,     0,     0,   215,     0,     0,     0,   215,     0,
-     0,   215,     0,     0,     0,     0,     0,     0,     0,   243,
-     0,     0,     0,     0,   243,   203,   243,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,  1188,     0,     0,   243,
-   215,   100,     0,  1192,  1194,     0,   236,   236,     0,     0,
-     0,     0,     0,     0,     0,   844,     0,     0,     0,     0,
-   317,     0,  -255,     0,     0,     0,     0,     0,   294,     0,
-   317,     0,     0,   155,   156,   157,   158,   159,   160,     0,
-     0,  1214,     0,     0,     0,   213,     0,     0,     0,     0,
-     0,   161,   162,   163,     0,     0,     0,     0,     0,     0,
-     0,  1222,  1223,     0,     0,   100,   242,   242,  1227,     0,
-     0,   317,     0,     0,   637,   164,     0,     0,     0,     0,
-     0,     0,     0,   196,     0,     0,   820,     0,     0,     0,
+     0,     0,   241,   241,     0,     0,   972,   508,     0,   314,
+     0,     0,   978,   979,   980,   981,   982,   983,   984,   985,
+   986,   987,   988,    79,   172,   173,     0,   174,    83,    84,
+     0,     0,     0,     0,     0,   201,     0,     0,     0,     0,
+     0,   211,     0,   479,     0,     0,   728,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   317,   317,   317,   317,   317,   317,   317,   317,
-   317,   317,   317,   317,   317,   317,   317,   317,   317,   173,
-   317,     0,     0,   699,  -690,     0,     0,     0,   294,   203,
-     0,     0,     0,   155,   156,   157,   158,   159,   160,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   482,
-     0,   161,   162,   163,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   215,     0,     0,     0,
-   450,     0,   450,     0,     0,   164,     0,     0,   717,     0,
-     0,     0,   763,     0,    -1,     1,   317,   243,   243,   213,
-    80,   295,   296,     0,   176,     0,     0,     0,     0,     0,
-     0,     0,     2,     0,     0,     0,     0,     0,  -273,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     3,   173,
-     0,     0,     0,   731,     0,     0,     0,     0,     4,     0,
-     5,     0,     0,     0,     0,     0,     0,     0,   857,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   863,
-     0,     0,  -413,  -413,  -413,     0,     6,     0,     0,     0,
-     0,     7,     8,     9,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    10,    11,    12,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    80,   295,   296,     0,   176,    13,    14,    15,    16,     0,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-   215,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-    36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-    46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-    56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-    76,    77,    78,    79,     0,     0,     0,     0,     0,     0,
-    80,    81,    82,    83,     0,    84,    85,    86,    23,    24,
-    25,    26,     0,    27,     0,     0,     0,     0,    32,    33,
-     0,     0,    36,    37,     0,    39,    40,    41,    42,     0,
-     0,     0,     0,     0,   317,     0,   978,     0,     0,     0,
-    54,    55,     0,     0,    -2,     1,     0,     0,   317,     0,
+     0,     0,   817,     0,   447,     0,   447,     0,     0,     0,
+     0,     0,   714,     0,     0,     0,   760,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   216,     0,     0,
+     0,     0,   140,   141,   142,     0,     0,   217,   145,   146,
+   147,   148,   149,   150,   218,  -489,  -489,     0,     0,     0,
+   219,  -489,     0,     0,     0,   153,   154,   155,   156,   157,
+   158,     0,     0,     0,     0,   213,     0,     0,  -272,  -272,
+     0,     0,   854,   159,   160,   161,     0,     0,     0,     0,
+     0,     0,     0,   860,     0,    22,    23,    24,    25,     0,
+    26,     0,     0,     0,     0,    31,    32,   162,     0,    35,
+    36,     0,    38,    39,    40,    41,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    -1,     1,    53,    54,     0,
+     0,  -489,   164,   165,   166,   167,   168,   169,     0,     0,
+     0,     0,     0,     2,     0,     0,   170,   817,     0,  -272,
+   171,     0,    78,     0,     0,     0,     0,     0,     0,     3,
+     0,     0,    82,     0,     0,     0,     0,     0,     0,     4,
+     0,     5,     0,     0,     0,   314,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   314,     0,
+     0,     0,     0,  -411,  -411,  -411,     0,     6,     0,     0,
+     0,     0,     7,     8,     9,     0,     0,     0,     0,   314,
+     0,     0,     0,     0,     0,     0,     0,    10,    11,    12,
+     0,    79,   172,   173,     0,   174,   220,   221,     0,     0,
+     0,     0,     0,     0,     0,     0,    13,    14,    15,     0,
+    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+   975,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+    35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+    45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+    55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+    65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+    75,    76,    77,    78,     0,     0,     0,     0,    -2,     1,
+    79,    80,    81,    82,     0,    83,    84,    85,     0,     0,
+     0,     0,     0,     0,     0,     0,     2,     0,     0,     0,
+     0,     0,  -272,     0,     0,     0,     0,     0,   479,     0,
+     0,     0,     3,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     4,     0,     5,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     2,     0,     0,    79,     0,     0,  -273,   317,
-     0,     0,     0,     0,     0,    83,     0,     0,     3,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     4,     0,
-     5,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,  -411,  -411,  -411,     0,
+     6,     0,     0,     0,  1079,     7,     8,     9,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,  -413,  -413,  -413,     0,     6,     0,     0,     0,
-     0,     7,     8,     9,   482,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    10,    11,    12,     0,
+    10,    11,    12,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,    13,
+    14,    15,     0,    16,    17,    18,    19,    20,    21,    22,
+    23,    24,    25,     0,    26,    27,    28,    29,    30,    31,
+    32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+    42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+    52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
+    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+    72,    73,    74,    75,    76,    77,    78,     0,     0,     0,
+     0,     0,     0,    79,    80,    81,    82,   139,    83,    84,
+    85,     0,   140,   141,   142,     0,   143,   144,   145,   146,
+   147,   148,   149,   150,   151,  -544,   546,     0,     0,     0,
+   152,     0,     0,     0,     0,   153,   154,   155,   156,   157,
+   158,     0,     0,     0,     0,     0,     0,     0,  -272,  -272,
+     4,     0,     5,   159,   160,   161,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,    13,    14,    15,    16,     0,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-  1083,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-    36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-    46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-    56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-    76,    77,    78,    79,     0,     0,     0,     0,     0,     0,
-    80,    81,    82,    83,  1146,    84,    85,    86,   141,     0,
-     0,     0,     0,   142,   143,   144,     0,   145,   146,   147,
-   148,   149,   150,   151,   152,   153,  -547,   549,     0,     0,
-     0,   154,     0,     0,     0,     0,   155,   156,   157,   158,
-   159,   160,     0,     0,     0,     0,     0,     0,     0,  -273,
-  -273,     4,     0,     5,   161,   162,   163,     0,     0,     0,
+     0,     0,     0,     0,  -411,  -411,  -411,   162,     6,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,  -413,  -413,  -413,   164,     6,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   164,   165,   166,   167,   168,   169,     0,     0,
+     0,     0,     0,     0,     0,     0,   170,    13,    14,    15,
+   171,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+    25,     0,    26,    27,    28,    29,    30,    31,    32,    33,
+    34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
+    44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+    54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
+    64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+    74,    75,    76,    77,    78,     0,     0,     0,     0,     0,
+     0,    79,   172,   547,    82,   174,   175,    84,    85,   139,
+     0,     0,     0,     0,   140,   141,   142,     0,   143,   144,
+   145,   146,   147,   148,   149,   150,   151,  -170,     0,     0,
+     0,     0,   152,     0,     0,     0,     0,   153,   154,   155,
+   156,   157,   158,     0,     0,     0,     0,     0,     0,     0,
+  -272,  -272,  -272,     0,     0,   159,   160,   161,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   166,   167,   168,   169,   170,   171,     0,
-     0,     0,     0,     0,     0,     0,     0,   172,    13,    14,
-    15,    16,   173,    17,    18,    19,    20,    21,    22,    23,
-    24,    25,    26,     0,    27,    28,    29,    30,    31,    32,
-    33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-    43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-    53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-    73,    74,    75,    76,    77,    78,    79,     0,     0,     0,
-     0,     0,     0,    80,   174,   550,    83,   176,   177,    85,
-    86,   141,     0,     0,     0,     0,   142,   143,   144,     0,
-   145,   146,   147,   148,   149,   150,   151,   152,   153,  -170,
-     0,     0,     0,     0,   154,     0,     0,     0,     0,   155,
-   156,   157,   158,   159,   160,     0,     0,     0,     0,     0,
-     0,     0,  -273,  -273,  -273,     0,     0,   161,   162,   163,
+     0,     0,     0,     0,     0,     0,  -272,  -272,  -272,   162,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,  -273,  -273,
-  -273,   164,     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,   167,   168,   169,
-   170,   171,     0,     0,     0,     0,     0,     0,     0,     0,
-   172,  -273,  -273,  -273,  -273,   173,  -273,  -273,  -273,  -273,
-  -273,  -273,  -273,  -273,  -273,  -273,     0,  -273,  -273,  -273,
-  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,
-  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,
-  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,
-  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,
-  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,
-     0,     0,     0,     0,     0,     0,    80,   174,   175,  -273,
-   176,   177,    85,  -273,   218,     0,     0,     0,     0,   142,
-   143,   144,     0,     0,   219,   147,   148,   149,   150,   151,
-   152,   220,  -170,  -551,     0,     0,     0,   221,     0,     0,
-     0,     0,   155,   156,   157,   158,   159,   160,     0,     0,
-     0,     0,     0,     0,     0,  -273,  -273,  -273,     0,     0,
-   161,   162,   163,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   164,   165,   166,   167,   168,   169,
+     0,     0,     0,     0,     0,     0,     0,     0,   170,  -272,
+  -272,  -272,   171,  -272,  -272,  -272,  -272,  -272,  -272,  -272,
+  -272,  -272,  -272,     0,  -272,  -272,  -272,  -272,  -272,  -272,
+  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,
+  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,
+  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,
+  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,
+  -272,  -272,  -272,  -272,  -272,  -272,  -272,     0,     0,     0,
+     0,     0,     0,    79,   172,   173,  -272,   174,   175,    84,
+  -272,   216,     0,     0,     0,     0,   140,   141,   142,     0,
+     0,   217,   145,   146,   147,   148,   149,   150,   218,  -170,
+  -548,     0,     0,     0,   219,     0,     0,     0,     0,   153,
+   154,   155,   156,   157,   158,     0,     0,     0,     0,     0,
+     0,     0,  -272,  -272,  -272,     0,     0,   159,   160,   161,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,  -273,  -273,  -273,   164,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,  -272,  -272,
+  -272,   162,     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,
-   167,   168,   169,   170,   171,     0,     0,     0,     0,     0,
-     0,     0,     0,   172,  -273,  -273,  -273,  -273,   173,  -273,
-  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,     0,
-  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,
-  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,
-  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,
-  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,
-  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,
-  -273,  -273,  -273,     0,     0,     0,     0,     0,     0,    80,
-   174,   175,  -273,   176,   222,   223,  -273,  -168,     0,     0,
-     0,     0,  -168,  -168,  -168,     0,  -168,  -168,  -168,  -168,
-  -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,  -696,  -168,
-  -168,     0,  -168,     0,  -168,  -168,  -168,  -168,  -168,  -168,
+     0,     0,     0,     0,     0,     0,   164,   165,   166,   167,
+   168,   169,     0,     0,     0,     0,     0,     0,     0,     0,
+   170,  -272,  -272,  -272,   171,  -272,  -272,  -272,  -272,  -272,
+  -272,  -272,  -272,  -272,  -272,     0,  -272,  -272,  -272,  -272,
+  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,
+  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,
+  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,
+  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,
+  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,     0,
+     0,     0,     0,     0,     0,    79,   172,   173,  -272,   174,
+   220,   221,  -272,  -168,     0,     0,     0,     0,  -168,  -168,
+  -168,     0,  -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,
+  -168,  -168,  -168,  -168,  -693,  -168,  -168,     0,  -168,     0,
   -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,
-     0,  -168,     0,  -168,  -168,  -168,  -168,  -168,  -168,  -168,
+  -168,  -168,  -168,  -168,  -168,  -168,     0,  -168,     0,  -168,
   -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,
-  -168,  -168,  -168,  -168,     0,     0,     0,  -168,     0,     0,
-     0,     0,     0,     0,     0,   817,  1139,     0,     0,     0,
-   294,     0,   818,     0,   819,   155,   156,   157,   158,   159,
-   160,     0,  -168,  -168,  -168,  -168,  -168,  -168,     0,     0,
-     0,     0,   218,   161,   162,   163,  -168,   142,   143,   144,
-     0,  -168,   219,   147,   148,   149,   150,   151,   152,   220,
-  -492,  -492,     0,     0,     0,   221,  -492,   164,     0,     0,
-   155,   156,   157,   158,   159,   160,     0,     0,     0,     0,
-     0,     0,     0,  -273,  -273,     0,     0,     0,   161,   162,
-   163,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   173,   164,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,  -168,  -168,  -168,     0,  -168,  -168,  -168,     0,
-     0,     0,     0,     0,     0,     0,  -492,   166,   167,   168,
-   169,   170,   171,     0,     0,     0,     0,     0,   141,     0,
-     0,   172,     0,   142,   143,   144,   173,   145,   146,   147,
-   148,   149,   150,   151,   152,   153,  -547,     0,     0,     0,
-     0,   154,     0,     0,     0,     0,   155,   156,   157,   158,
-   159,   160,    80,   174,   175,     0,   176,    84,    85,  -273,
-  -273,     0,     0,   141,   161,   162,   163,     0,   142,   143,
-   144,     0,   145,   146,   147,   148,   149,   150,   151,   152,
-   153,  -547,     0,     0,     0,     0,   154,     0,   164,     0,
-     0,   155,   156,   157,   158,   159,   160,    80,   174,   175,
-     0,   176,   222,   223,  -273,  -273,     0,     0,     0,   161,
-   162,   163,   165,   166,   167,   168,   169,   170,   171,     0,
-     0,     0,     0,     0,     0,     0,  -170,   172,     0,     0,
-     0,   294,   173,   164,     0,     0,   155,   156,   157,   158,
-   159,   160,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   161,   162,   163,  -520,   166,   167,
-   168,   169,   170,   171,     0,     0,     0,     0,     0,   218,
-     0,     0,   172,     0,   142,   143,   144,   173,   164,   219,
-   147,   148,   149,   150,   151,   152,   220,  -547,  -551,     0,
-     0,     0,   221,     0,     0,     0,     0,   155,   156,   157,
-   158,   159,   160,    80,   174,   175,     0,   176,   177,    85,
-  -273,  -273,     0,     0,   141,   161,   162,   163,     0,   142,
-   143,   144,   173,   145,   146,   147,   148,   149,   150,   151,
-   152,   153,  -547,   643,     0,     0,     0,   154,     0,   164,
-     0,     0,   155,   156,   157,   158,   159,   160,    80,   174,
-   175,     0,   176,   177,    85,  -273,  -273,     0,     0,     0,
-   161,   162,   163,  -488,   166,   167,   168,   169,   170,   171,
-     0,     0,     0,     0,     0,     0,     0,  -170,   172,     0,
-     0,     0,   352,   173,   164,     0,     0,   155,   156,   157,
-   158,   159,   160,    80,   295,   296,     0,   176,     0,     0,
-     0,     0,     0,     0,     0,   161,   162,   163,     0,   166,
-   167,   168,   169,   170,   171,     0,     0,     0,     0,     0,
-   218,     0,     0,   172,     0,   142,   143,   144,   173,   164,
-   219,   147,   148,   149,   150,   151,   152,   220,  -547,  -551,
-     0,     0,     0,   221,     0,     0,     0,     0,   155,   156,
-   157,   158,   159,   160,    80,   174,   175,     0,   176,   222,
-   223,  -273,  -273,     0,     0,   141,   161,   162,   163,     0,
-   142,   143,   144,   173,   145,   146,   147,   148,   149,   150,
-   151,   152,   153,  -547,     0,     0,     0,     0,   154,     0,
-   164,     0,     0,   155,   156,   157,   158,   159,   160,    80,
-   174,   175,     0,   176,   177,    85,  -273,  -273,     0,     0,
-     0,   161,   162,   163,     0,   166,   167,   168,   169,   170,
-   171,     0,     0,     0,     0,     0,     0,     0,     0,   172,
-     0,     0,     0,     0,   173,   164,     0,     0,     0,     0,
-     0,     0,     0,     0,    80,   295,   296,     0,   176,     0,
+  -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,  -168,
+     0,     0,     0,  -168,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   166,   167,   168,   169,   170,   171,     0,     0,     0,     0,
-     0,     0,     0,     0,   172,     0,   142,   143,   144,   173,
-   145,   146,   147,   148,   149,   150,   151,   152,   220,  -547,
-   567,     0,     0,     0,   352,     0,     0,     0,     0,   155,
-   156,   157,   158,   159,   160,    80,   174,   175,     0,   176,
-   222,   223,  -273,  -273,     4,     0,     5,   161,   162,   163,
+     0,     0,     0,     0,     0,     0,     0,     0,  -168,  -168,
+  -168,  -168,  -168,  -168,     0,     0,     0,     0,   139,     0,
+     0,     0,  -168,   140,   141,   142,  -168,   143,   144,   145,
+   146,   147,   148,   149,   150,   151,  -544,     0,     0,     0,
+     0,   152,     0,     0,     0,     0,   153,   154,   155,   156,
+   157,   158,     0,     0,     0,     0,     0,     0,     0,  -272,
+  -272,     0,     0,   139,   159,   160,   161,     0,   140,   141,
+   142,     0,   143,   144,   145,   146,   147,   148,   149,   150,
+   151,  -544,     0,     0,     0,     0,   152,     0,   162,     0,
+     0,   153,   154,   155,   156,   157,   158,  -168,  -168,  -168,
+     0,  -168,  -168,  -168,  -272,  -272,     0,     0,     0,   159,
+   160,   161,   163,   164,   165,   166,   167,   168,   169,     0,
+     0,     0,     0,     0,     0,     0,     0,   170,     0,     0,
+     0,   171,     0,   162,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,  -517,   164,   165,
+   166,   167,   168,   169,     0,     0,     0,     0,   216,     0,
+     0,     0,   170,   140,   141,   142,   171,     0,   217,   145,
+   146,   147,   148,   149,   150,   218,  -544,  -548,     0,     0,
+     0,   219,     0,     0,     0,     0,   153,   154,   155,   156,
+   157,   158,    79,   172,   173,     0,   174,   175,    84,  -272,
+  -272,     0,     0,   139,   159,   160,   161,     0,   140,   141,
+   142,     0,   143,   144,   145,   146,   147,   148,   149,   150,
+   151,  -544,   640,     0,     0,     0,   152,     0,   162,     0,
+     0,   153,   154,   155,   156,   157,   158,    79,   172,   173,
+     0,   174,   175,    84,  -272,  -272,     0,     0,     0,   159,
+   160,   161,  -485,   164,   165,   166,   167,   168,   169,     0,
+     0,     0,     0,     0,     0,     0,     0,   170,     0,     0,
+     0,   171,     0,   162,     0,     0,  -254,     0,     0,     0,
+     0,     0,   291,     0,     0,     0,     0,   153,   154,   155,
+   156,   157,   158,     0,     0,     0,     0,     0,   164,   165,
+   166,   167,   168,   169,     0,   159,   160,   161,   216,     0,
+     0,     0,   170,   140,   141,   142,   171,     0,   217,   145,
+   146,   147,   148,   149,   150,   218,  -544,  -548,     0,   162,
+     0,   219,     0,     0,     0,     0,   153,   154,   155,   156,
+   157,   158,    79,   172,   173,     0,   174,   220,   221,  -272,
+  -272,     0,     0,   139,   159,   160,   161,     0,   140,   141,
+   142,     0,   143,   144,   145,   146,   147,   148,   149,   150,
+   151,  -544,   171,     0,     0,     0,   152,     0,   162,     0,
+     0,   153,   154,   155,   156,   157,   158,    79,   172,   173,
+     0,   174,   175,    84,  -272,  -272,     0,     0,     0,   159,
+   160,   161,     0,   164,   165,   166,   167,   168,   169,     0,
+     0,     0,     0,     0,     0,     0,     0,   170,     0,     0,
+     0,   171,     0,   162,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   164,     6,     0,     0,     0,     0,     0,     0,     0,
-    80,   174,   175,     0,   176,   177,    85,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   166,   167,   168,   169,
-   170,   171,     0,     0,     0,     0,     0,     0,     0,     0,
-   568,    13,    14,    15,    16,   173,    17,    18,    19,    20,
-    21,    22,    23,    24,    25,    26,     0,    27,    28,    29,
-    30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-    40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-    50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-    60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-    70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-     0,     0,     0,     0,     0,     0,    80,   174,   550,    83,
-   176,   177,    85,    86,   142,   143,   144,     0,   145,   146,
-   147,   148,   149,   150,   151,   152,   220,  -547,   644,     0,
-     0,     0,   352,     0,     0,     0,     0,   155,   156,   157,
-   158,   159,   160,     0,     0,     0,     0,     0,     0,     0,
-  -273,  -273,     4,     0,     5,   161,   162,   163,     0,     0,
+     0,     0,     0,    79,   292,   293,     0,   174,   164,   165,
+   166,   167,   168,   169,     0,     0,     0,     0,     0,     0,
+     0,     0,   170,   140,   141,   142,   171,   143,   144,   145,
+   146,   147,   148,   149,   150,   218,  -544,   564,     0,     0,
+     0,   349,     0,     0,     0,     0,   153,   154,   155,   156,
+   157,   158,    79,   172,   173,     0,   174,   220,   221,  -272,
+  -272,     4,     0,     5,   159,   160,   161,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   164,
-     6,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   162,     6,
+     0,     0,     0,     0,     0,     0,     0,    79,   172,   173,
+     0,   174,   175,    84,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   164,   165,   166,   167,   168,   169,     0,
+     0,     0,     0,     0,     0,     0,     0,   565,    13,    14,
+    15,   171,    16,    17,    18,    19,    20,    21,    22,    23,
+    24,    25,     0,    26,    27,    28,    29,    30,    31,    32,
+    33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+    43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+    53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
+    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+    73,    74,    75,    76,    77,    78,     0,     0,     0,     0,
+     0,     0,    79,   172,   547,    82,   174,   175,    84,    85,
+   140,   141,   142,     0,   143,   144,   145,   146,   147,   148,
+   149,   150,   218,  -544,   641,     0,     0,     0,   349,     0,
+     0,     0,     0,   153,   154,   155,   156,   157,   158,     0,
+     0,     0,     0,     0,     0,     0,  -272,  -272,     4,     0,
+     5,   159,   160,   161,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   166,   167,   168,   169,   170,   171,
-     0,     0,     0,     0,     0,     0,     0,     0,   172,    13,
-    14,    15,    16,   173,    17,    18,    19,    20,    21,    22,
-    23,    24,    25,    26,     0,    27,    28,    29,    30,    31,
-    32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-    42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-    52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-    72,    73,    74,    75,    76,    77,    78,    79,     0,     0,
-     0,     0,     0,     0,    80,   174,   550,    83,   176,   177,
-    85,    86,   142,   143,   144,     0,   145,   146,   147,   148,
-   149,   150,   151,   152,   220,  -547,   656,     0,     0,     0,
-   352,     0,     0,     0,     0,   155,   156,   157,   158,   159,
-   160,     0,     0,     0,     0,     0,     0,     0,  -273,  -273,
-     4,     0,     5,   161,   162,   163,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   162,     6,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   164,     6,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+   164,   165,   166,   167,   168,   169,     0,     0,     0,     0,
+     0,     0,     0,     0,   170,    13,    14,    15,   171,    16,
+    17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
+    26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+    36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+    46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+    56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+    76,    77,    78,     0,     0,     0,     0,     0,     0,    79,
+   172,   547,    82,   174,   175,    84,    85,   140,   141,   142,
+     0,   143,   144,   145,   146,   147,   148,   149,   150,   218,
+  -544,   653,     0,     0,     0,   349,     0,     0,     0,     0,
+   153,   154,   155,   156,   157,   158,     0,     0,     0,     0,
+     0,     0,     0,  -272,  -272,     4,     0,     5,   159,   160,
+   161,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   166,   167,   168,   169,   170,   171,     0,     0,
-     0,     0,     0,     0,     0,     0,   657,    13,    14,    15,
-    16,   173,    17,    18,    19,    20,    21,    22,    23,    24,
-    25,    26,     0,    27,    28,    29,    30,    31,    32,    33,
-    34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-    44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-    54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-    64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-    74,    75,    76,    77,    78,    79,     0,     0,     0,     0,
-     0,     0,    80,   174,   550,    83,   176,   177,    85,    86,
-   142,   143,   144,     0,   145,   146,   147,   148,   149,   150,
-   151,   152,   220,  -547,   655,     0,     0,     0,   352,     0,
-     0,     0,     0,   155,   156,   157,   158,   159,   160,     0,
+     0,     0,   162,     6,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   161,   162,   163,     0,   142,   143,   144,     0,   145,
-   146,   147,   148,   149,   150,   151,   152,   220,  -547,   659,
-     0,     0,     0,   352,     0,   164,     0,     0,   155,   156,
-   157,   158,   159,   160,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   161,   162,   163,     0,
-   166,   167,   168,   169,   170,   171,     0,     0,     0,     0,
-     0,     0,     0,     0,   172,     0,     0,     0,     0,   173,
-   164,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   164,   165,   166,
+   167,   168,   169,     0,     0,     0,     0,     0,     0,     0,
+     0,   654,    13,    14,    15,   171,    16,    17,    18,    19,
+    20,    21,    22,    23,    24,    25,     0,    26,    27,    28,
+    29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+    39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+    49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+    59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+    69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
+     0,     0,     0,     0,     0,     0,    79,   172,   547,    82,
+   174,   175,    84,    85,   140,   141,   142,     0,   143,   144,
+   145,   146,   147,   148,   149,   150,   218,  -544,   652,     0,
+     0,     0,   349,     0,     0,     0,     0,   153,   154,   155,
+   156,   157,   158,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   159,   160,   161,   140,   141,
+   142,     0,   143,   144,   145,   146,   147,   148,   149,   150,
+   218,  -544,   656,     0,     0,     0,   349,     0,     0,   162,
+     0,   153,   154,   155,   156,   157,   158,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   159,
+   160,   161,     0,     0,   164,   165,   166,   167,   168,   169,
+     0,     0,     0,     0,     0,     0,     0,     0,   170,     0,
+     0,     0,   171,   162,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   166,   167,   168,   169,   170,
-   171,     0,     0,     0,     0,     0,     0,     0,     0,   660,
-     0,   142,   143,   144,   173,   145,   146,   147,   148,   149,
-   150,   151,   152,   220,  -547,   715,     0,     0,     0,   352,
-     0,     0,     0,     0,   155,   156,   157,   158,   159,   160,
-    80,   174,   175,     0,   176,   177,    85,     0,     0,     0,
-     0,     0,   161,   162,   163,     0,   142,   143,   144,     0,
-   145,   146,   147,   148,   149,   150,   151,   152,   220,  -547,
-   793,     0,     0,     0,   352,     0,   164,     0,     0,   155,
-   156,   157,   158,   159,   160,    80,   174,   175,     0,   176,
-   177,    85,     0,     0,     0,     0,     0,   161,   162,   163,
-     0,   166,   167,   168,   169,   170,   171,     0,     0,     0,
-     0,     0,     0,     0,     0,   172,     0,     0,     0,     0,
-   173,   164,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   164,   165,
+   166,   167,   168,   169,     0,     0,     0,     0,     0,     0,
+     0,     0,   657,   140,   141,   142,   171,   143,   144,   145,
+   146,   147,   148,   149,   150,   218,  -544,   712,     0,     0,
+     0,   349,     0,     0,     0,     0,   153,   154,   155,   156,
+   157,   158,     0,    79,   172,   173,     0,   174,   175,    84,
+     0,     0,     0,     0,   159,   160,   161,   140,   141,   142,
+     0,   143,   144,   145,   146,   147,   148,   149,   150,   218,
+  -544,   790,     0,     0,     0,   349,     0,     0,   162,     0,
+   153,   154,   155,   156,   157,   158,     0,    79,   172,   173,
+     0,   174,   175,    84,     0,     0,     0,     0,   159,   160,
+   161,     0,     0,   164,   165,   166,   167,   168,   169,     0,
+     0,     0,     0,     0,     0,     0,     0,   170,     0,     0,
+     0,   171,   162,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   166,   167,   168,   169,
-   170,   171,     0,     0,     0,     0,     0,     0,     0,     0,
-   172,     0,   142,   143,   144,   173,   145,   146,   147,   148,
-   149,   150,   151,   152,   220,  -547,   794,     0,     0,     0,
-   352,     0,     0,     0,     0,   155,   156,   157,   158,   159,
-   160,    80,   174,   175,     0,   176,   177,    85,     0,     0,
-     0,     0,     0,   161,   162,   163,     0,   142,   143,   144,
-     0,   145,   146,   147,   148,   149,   150,   151,   152,   220,
-  -547,   796,     0,     0,     0,   352,     0,   164,     0,     0,
-   155,   156,   157,   158,   159,   160,    80,   174,   175,     0,
-   176,   177,    85,     0,     0,     0,     0,     0,   161,   162,
-   163,     0,   166,   167,   168,   169,   170,   171,     0,     0,
-     0,     0,     0,     0,     0,     0,   795,     0,     0,     0,
-     0,   173,   164,     0,     0,     0,   620,     0,     0,     0,
-     0,   294,     0,     0,     0,     0,   155,   156,   157,   158,
-   159,   160,     0,     0,     0,     0,     0,   166,   167,   168,
-   169,   170,   171,     0,   161,   162,   163,     0,     0,     0,
-     0,   172,     0,   142,   143,   144,   173,   145,   146,   147,
-   148,   149,   150,   151,   152,   220,  -547,   928,   164,     0,
-     0,   352,     0,     0,     0,     0,   155,   156,   157,   158,
-   159,   160,    80,   174,   175,     0,   176,   177,    85,     0,
-     0,     0,     0,     0,   161,   162,   163,     0,   142,   143,
-   144,     0,   145,   146,   147,   148,   149,   150,   151,   152,
-   220,  -547,   173,     0,     0,     0,   352,     0,   164,     0,
-     0,   155,   156,   157,   158,   159,   160,    80,   174,   175,
-     0,   176,   177,    85,     0,     0,     0,     0,     0,   161,
-   162,   163,     0,   166,   167,   168,   169,   170,   171,     0,
-     0,     0,     0,     0,     0,     0,     0,   172,     0,     0,
-     0,     0,   173,   164,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   164,   165,   166,
+   167,   168,   169,     0,     0,     0,     0,     0,     0,     0,
+     0,   170,   140,   141,   142,   171,   143,   144,   145,   146,
+   147,   148,   149,   150,   218,  -544,   791,     0,     0,     0,
+   349,     0,     0,     0,     0,   153,   154,   155,   156,   157,
+   158,     0,    79,   172,   173,     0,   174,   175,    84,     0,
+     0,     0,     0,   159,   160,   161,   140,   141,   142,     0,
+   143,   144,   145,   146,   147,   148,   149,   150,   218,  -544,
+   793,     0,     0,     0,   349,     0,     0,   162,     0,   153,
+   154,   155,   156,   157,   158,     0,    79,   172,   173,     0,
+   174,   175,    84,     0,     0,     0,     0,   159,   160,   161,
+     0,     0,   164,   165,   166,   167,   168,   169,     0,     0,
+     0,     0,     0,     0,     0,     0,   792,     0,     0,     0,
+   171,   162,     0,     0,  -170,     0,     0,     0,     0,   349,
+     0,     0,     0,     0,   153,   154,   155,   156,   157,   158,
+     0,     0,     0,     0,     0,     0,   164,   165,   166,   167,
+   168,   169,   159,   160,   161,     0,     0,     0,     0,     0,
+   170,   140,   141,   142,   171,   143,   144,   145,   146,   147,
+   148,   149,   150,   218,  -544,   925,   162,     0,     0,   349,
+     0,     0,     0,     0,   153,   154,   155,   156,   157,   158,
+     0,    79,   172,   173,     0,   174,   175,    84,     0,     0,
+     0,     0,   159,   160,   161,   140,   141,   142,     0,   143,
+   144,   145,   146,   147,   148,   149,   150,   218,  -544,   171,
+     0,     0,     0,   349,     0,     0,   162,     0,   153,   154,
+   155,   156,   157,   158,     0,    79,   172,   173,     0,   174,
+   175,    84,     0,     0,     0,     0,   159,   160,   161,     0,
+     0,   164,   165,   166,   167,   168,   169,     0,     0,     0,
+     0,     0,     0,     0,     0,   170,     0,     0,     0,   171,
+   162,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,    80,   295,   296,     0,   176,   166,   167,
-   168,   169,   170,   171,  -135,     0,     0,     0,     0,  -135,
-     0,     0,   172,     0,     0,     0,     0,   173,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     4,
-     0,     5,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,    80,   174,   175,     0,   176,   177,    85,
-     0,     0,     0,     0,     0,     0,     0,     6,     0,     0,
+    79,   292,   293,     0,   174,   164,   165,   166,   167,   168,
+   169,  -135,     0,     0,     0,     0,  -135,     0,     0,   170,
+     0,     0,     0,   171,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     4,     0,     5,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    79,   172,   173,     0,   174,   175,    84,     0,     0,     0,
+     0,     0,     0,     0,     6,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    80,   174,
-   175,     0,   176,   177,    85,     0,    13,    14,    15,    16,
-     0,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-    26,     0,    27,    28,    29,    30,    31,    32,    33,    34,
-    35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-    45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-    55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-    65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-    75,    76,    77,    78,    79,  -550,     0,     0,     0,     0,
-     0,     0,     0,   136,    83,     0,     0,     0,    86,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     4,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,    79,   172,   173,     0,   174,   175,
+    84,     0,     0,    13,    14,    15,     0,    16,    17,    18,
+    19,    20,    21,    22,    23,    24,    25,     0,    26,    27,
+    28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+    38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+    48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+    58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+    68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
+    78,  -547,     0,     0,     0,     0,     0,     0,     0,   134,
+    82,     0,     0,     0,    85,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     4,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    13,    14,    15,    16,
-     0,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-    26,     0,    27,    28,    29,    30,    31,    32,    33,    34,
-    35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-    45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-    55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-    65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-    75,    76,    77,    78,    79,     0,     0,     0,     0,     0,
-   699,     0,     0,   136,    83,   294,     0,     0,    86,     0,
-   155,   156,   157,   158,   159,   160,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   161,   162,
-   163,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   164,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,    13,    14,    15,     0,    16,    17,    18,    19,
+    20,    21,    22,    23,    24,    25,     0,    26,    27,    28,
+    29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+    39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+    49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+    59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+    69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
+     0,     0,     0,     0,     0,   617,     0,     0,   134,    82,
+   291,     0,     0,    85,     0,   153,   154,   155,   156,   157,
+   158,     0,     0,     0,     0,     0,   696,     0,     0,     0,
+     0,   291,     0,   159,   160,   161,   153,   154,   155,   156,
+   157,   158,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   159,   160,   161,   162,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   162,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,  -273,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     3,   173,     0,     0,     0,
-     0,     0,     0,     0,     0,     4,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+   171,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+  -272,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     3,   171,     0,     0,     0,     0,     0,     0,     0,     0,
+     4,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,    79,   292,   293,     0,   174,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,    80,   295,   296,
-     0,   176,    13,    14,    15,    16,     0,    17,    18,    19,
-    20,    21,    22,    23,    24,    25,    26,     0,    27,    28,
-    29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-    39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-    49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-    59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-    69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-    79,     0,     0,     0,     0,     0,     0,    80,    81,    82,
-    83,     0,    84,    85,    86,   294,   509,     0,     0,     0,
-   155,   156,   157,   158,   159,   160,   294,     0,     0,   590,
-     0,   155,   156,   157,   158,   159,   160,     0,   161,   162,
-   163,     0,     0,     0,     0,     0,     0,   294,   976,   161,
-   162,   163,   155,   156,   157,   158,   159,   160,   294,     0,
-     0,   681,   164,   155,   156,   157,   158,   159,   160,     0,
-   161,   162,   163,   164,     0,     0,     0,     0,     0,   294,
-  -255,   161,   162,   163,   155,   156,   157,   158,   159,   160,
-     0,     0,     0,     0,   164,     0,     0,     0,     0,     0,
-     0,     0,   161,   162,   163,   164,   173,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   173,     0,     0,
-     0,     0,     0,     0,     0,     0,   164,   294,     0,     0,
-     0,     0,   155,   156,   157,   158,   159,   160,   173,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   341,   173,
-   161,   162,   163,   155,   156,   157,   158,   159,   160,   639,
-     0,     0,     0,     0,   155,   156,   157,   158,   159,   160,
-   173,   161,   162,   163,   164,     0,     0,    80,   295,   296,
-     0,   176,   161,   162,   163,     0,     0,     0,    80,   295,
-   296,   641,   176,     0,     0,   164,   155,   156,   157,   158,
-   159,   160,     0,     0,     0,     0,   164,     0,     0,    80,
-   295,   296,     0,   176,   161,   162,   163,     0,   173,     0,
-    80,   295,   296,     0,   176,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   164,   173,
-     0,    80,   295,   296,     0,   176,     0,   718,     0,     0,
-   173,     0,   719,   720,   721,   722,   723,   724,     0,     0,
+     0,     0,    79,   292,   293,     0,   174,    13,    14,    15,
+     0,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+    25,     0,    26,    27,    28,    29,    30,    31,    32,    33,
+    34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
+    44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+    54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
+    64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+    74,    75,    76,    77,    78,     0,     0,     0,     0,     0,
+     0,    79,    80,    81,    82,     0,    83,    84,    85,   291,
+   506,     0,     0,     0,   153,   154,   155,   156,   157,   158,
+   291,     0,     0,   587,     0,   153,   154,   155,   156,   157,
+   158,     0,   159,   160,   161,     0,     0,     0,     0,     0,
+     0,     0,     0,   159,   160,   161,     0,     0,     0,     0,
+     0,     0,     0,     0,   291,     0,   162,   678,     0,   153,
+   154,   155,   156,   157,   158,   291,   973,   162,     0,     0,
+   153,   154,   155,   156,   157,   158,     0,   159,   160,   161,
+     0,     0,     0,     0,     0,     0,     0,     0,   159,   160,
+   161,     0,     0,     0,     0,     0,     0,     0,     0,   171,
+     0,   162,     0,     0,     0,     0,     0,     0,     0,     0,
+   171,     0,   162,   291,  -254,     0,     0,     0,   153,   154,
+   155,   156,   157,   158,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   159,   160,   161,     0,
+     0,   291,     0,     0,   171,     0,   153,   154,   155,   156,
+   157,   158,     0,     0,     0,   171,     0,     0,     0,     0,
+   162,     0,     0,     0,   159,   160,   161,     0,     0,     0,
+    79,   292,   293,     0,   174,     0,     0,     0,     0,     0,
+     0,    79,   292,   293,     0,   174,     0,   338,   162,     0,
+     0,     0,   153,   154,   155,   156,   157,   158,     0,   636,
+     0,     0,     0,   171,   153,   154,   155,   156,   157,   158,
+   159,   160,   161,     0,     0,    79,   292,   293,     0,   174,
+     0,     0,   159,   160,   161,     0,    79,   292,   293,     0,
+   174,   171,   638,     0,   162,     0,     0,   153,   154,   155,
+   156,   157,   158,   715,     0,     0,   162,     0,   716,   717,
+   718,   719,   720,   721,     0,   159,   160,   161,     0,     0,
+     0,     0,     0,     0,     0,     0,   159,   722,   723,     0,
+     0,     0,     0,     0,    79,   292,   293,   171,   174,   162,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   171,
+   724,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,    79,   292,   293,     0,   174,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   161,   725,   726,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   173,     0,     0,     0,     0,     0,     0,    80,
-   295,   296,     0,   176,   727,     0,     0,     0,     0,     0,
+     0,     0,   171,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   171,     0,     0,     0,     0,     0,     0,
+  -198,  -198,     4,     0,     0,     0,     0,     0,    79,   292,
+   293,     0,   174,     0,     0,     0,     0,     0,     0,     0,
+    79,   292,   293,     0,   174,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    80,   295,   296,     0,   176,     0,     0,     0,     0,     0,
-     0,    80,   295,   296,     0,   176,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   173,     0,
-     0,     0,     0,     0,     0,  -199,  -199,     4,     0,     0,
-     0,     0,     0,    80,   295,   296,     0,   176,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,    79,   292,   293,     0,   174,     0,     0,
+     0,     0,     0,     0,    79,   725,   726,     0,   174,    13,
+    14,    15,     0,    16,    17,    18,    19,    20,    21,    22,
+    23,    24,    25,     0,    26,    27,    28,    29,    30,    31,
+    32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+    42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+    52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
+    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+    72,    73,    74,    75,    76,    77,    78,     4,     0,     5,
+     0,     0,     0,     0,     0,   134,    82,     0,     0,     0,
+    85,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,  -411,  -411,  -411,     0,     6,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,    80,
-   728,   729,     0,   176,    13,    14,    15,    16,     0,    17,
-    18,    19,    20,    21,    22,    23,    24,    25,    26,     0,
+     0,     0,     0,     0,    13,    14,    15,     0,    16,    17,
+    18,    19,    20,    21,    22,    23,    24,    25,     0,    26,
     27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
     37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
     47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
     57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
     67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-    77,    78,    79,     4,     0,     5,     0,     0,     0,     0,
-     0,   136,    83,     0,     0,     0,    86,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,  -413,  -413,  -413,
-     0,     6,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    77,    78,     4,     0,     5,     0,     0,     0,     0,     0,
+   134,    82,     0,     0,     0,    85,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    13,    14,    15,    16,     0,    17,    18,    19,    20,    21,
-    22,    23,    24,    25,    26,     0,    27,    28,    29,    30,
-    31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-    41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-    51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-    61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-    71,    72,    73,    74,    75,    76,    77,    78,    79,     4,
-     0,     5,     0,     0,     0,     0,     0,   136,    83,     0,
-     0,     0,    86,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     6,     0,     0,
+     6,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,    13,
+    14,    15,     0,    16,    17,    18,    19,    20,    21,    22,
+    23,    24,    25,     0,    26,    27,    28,    29,    30,    31,
+    32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+    42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+    52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
+    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+    72,    73,    74,    75,    76,    77,    78,     4,     0,     0,
+     0,     0,     0,    79,  1084,   134,    82,     0,     0,     0,
+    85,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,  -411,  -411,  -411,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    13,    14,    15,    16,
-     0,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-    26,     0,    27,    28,    29,    30,    31,    32,    33,    34,
-    35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-    45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-    55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-    65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-    75,    76,    77,    78,    79,     4,     0,     0,     0,     0,
-     0,    80,  1088,   136,    83,     0,     0,     0,    86,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,  -413,
-  -413,  -413,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,    13,    14,    15,     0,    16,    17,
+    18,    19,    20,    21,    22,    23,    24,    25,     0,    26,
+    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+    47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+    57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+    77,    78,     4,     0,     0,     0,     0,     0,     0,     0,
+   134,    82,     0,     0,     0,    85,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,    13,    14,    15,    16,     0,    17,    18,    19,
-    20,    21,    22,    23,    24,    25,    26,     0,    27,    28,
-    29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-    39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-    49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-    59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-    69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-    79,     4,     0,     0,     0,     0,     0,     0,     0,   136,
-    83,     0,     0,     0,    86,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
-    11,    12,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    13,    14,
-    15,    16,     0,    17,    18,    19,    20,    21,    22,    23,
-    24,    25,    26,     0,    27,    28,    29,    30,    31,    32,
-    33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-    43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-    53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-    73,    74,    75,    76,    77,    78,    79,     4,     0,     5,
-     0,     0,     0,     0,     0,   136,    83,     0,     0,     0,
-    86,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    10,    11,    12,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,    13,
+    14,    15,     0,    16,    17,    18,    19,    20,    21,    22,
+    23,    24,    25,     0,    26,    27,    28,    29,    30,    31,
+    32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+    42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+    52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
+    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+    72,    73,    74,    75,    76,    77,    78,     4,     0,     5,
+     0,     0,     0,     0,     0,   134,    82,     0,     0,     0,
+    85,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     6,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    13,    14,    15,    16,     0,    17,
-    18,    19,    20,    21,    22,    23,    24,    25,    26,     0,
+     0,     0,     0,     0,    13,    14,    15,     0,    16,    17,
+    18,    19,    20,    21,    22,    23,    24,    25,     0,    26,
     27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
     37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
     47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
     57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
     67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-    77,    78,    79,     4,     0,     0,     0,     0,     0,     0,
-     0,   136,    83,     0,     0,     0,    86,     0,     0,     0,
+    77,    78,     4,     0,     0,     0,     0,     0,     0,     0,
+   134,    82,     0,     0,     0,    85,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    13,    14,    15,    16,     0,    17,    18,    19,    20,    21,
-    22,    23,    24,    25,    26,     0,    27,    28,    29,    30,
-    31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-    41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-    51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-    61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-    71,    72,    73,    74,    75,    76,    77,    78,    79,     0,
-     0,     0,     0,     0,     0,     0,     0,   136,    83,     0,
-     0,     0,    86
+     0,     0,     0,     0,     0,     0,     0,     0,     0,    13,
+    14,    15,     0,    16,    17,    18,    19,    20,    21,    22,
+    23,    24,    25,     0,    26,    27,    28,    29,    30,    31,
+    32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+    42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+    52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
+    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+    72,    73,    74,    75,    76,    77,    78,     0,     0,     0,
+     0,     0,     0,     0,     0,   134,    82,     0,     0,     0,
+    85
 };
 
 static const short yycheck[] = {     0,
-     0,     0,   459,   399,     5,     5,     3,     7,     9,    10,
-    11,    12,   330,    69,    70,    71,    72,    73,    74,    75,
-    76,    77,    78,   455,   142,   120,   130,     0,   398,    10,
-   544,   434,   389,   390,   352,   309,   397,   395,   396,   649,
-   649,   649,   592,   387,   388,   232,   693,   618,    10,   542,
-   453,   916,    56,    21,   110,   435,    27,    25,   114,   311,
-   116,   649,   118,  1034,   951,   924,   803,   123,    24,    24,
-   155,   156,   157,   158,   159,   160,     0,   264,    34,   135,
-   933,   137,   671,   936,   817,   221,    87,    87,    87,   822,
-   226,     5,   228,   826,  1100,  1101,    18,   500,   708,   708,
-   708,   101,    25,    26,   653,    28,    21,   469,    50,    51,
-    25,    25,   112,   113,    87,   391,   392,   393,   394,   120,
-   708,    19,    45,   179,   553,    21,    10,    11,    12,    25,
-   829,   128,    24,   683,    24,   649,   835,   138,   138,    54,
-    55,   138,   571,    18,    34,    18,    21,  1118,   149,   777,
-    11,    12,  1123,   154,    50,    51,   649,    88,     5,  1024,
-  1025,    28,  1168,    87,   792,  1052,    11,    12,   486,    25,
-    26,   172,    28,   154,    10,  1034,  1035,    24,    45,    41,
-   284,   185,   829,    24,    28,    24,    27,    34,   835,    45,
-    10,   594,   154,    34,   708,    57,   929,   198,   935,   602,
-   937,    45,  1173,    21,   653,   206,  1059,   208,  1061,   210,
-    41,   267,   213,   802,     5,   708,   805,   198,   470,   190,
-   221,   408,   190,   603,    24,   226,    57,   228,   777,   210,
-   186,   187,   213,  1098,    25,    24,   198,   341,     5,    26,
-   241,   242,   604,   792,   206,    34,   302,    34,   210,   305,
-  1109,   213,  1111,   649,    24,   573,   955,   313,    25,    18,
-   316,   242,    21,    24,   696,    18,    25,    10,    11,    12,
-   154,    24,   186,   187,   188,    32,    33,   191,   192,   649,
-   242,    34,   283,    21,   283,   286,   287,   288,   649,    27,
-    18,   649,   649,   429,   430,    23,   186,   187,   298,   384,
-   385,   386,   299,    24,   913,   649,     5,   308,   955,   308,
-    18,    21,   708,   314,   198,    21,   434,    27,   154,     5,
-    18,    27,   206,    89,    90,   599,   210,   653,   777,   213,
-   653,  1064,    54,    55,   154,   453,   936,   221,   708,   186,
-   187,   653,   226,   792,   228,   186,   187,   708,    21,   190,
-   708,   708,    25,   354,   120,   121,    24,   241,   242,  1218,
-   221,   362,   198,   364,   708,   226,    39,   228,   134,   425,
-   206,    21,    16,   649,   210,    25,   221,   213,   198,   435,
-   241,   226,   500,   228,   440,    18,   206,   491,    21,   445,
-   210,   447,   963,   213,   908,    21,   241,   186,   187,    25,
-    16,  1011,  1011,  1011,   489,   808,   242,   408,   464,   959,
-    16,   154,   468,   906,   846,   818,    24,    34,    26,   186,
-   187,   188,   242,  1011,   191,   192,    34,   408,   429,   430,
-    42,    43,   708,   186,   187,   436,    24,   438,    26,   438,
-     0,   441,    24,    16,    26,     5,   408,   448,    24,     9,
-    26,   777,    34,   426,   777,   198,     6,     7,   459,  1059,
-   461,  1061,    15,   206,   437,   777,   792,   210,   469,   792,
-   213,   472,   469,   577,    18,   476,   594,    21,   221,    18,
-   792,    25,    21,   226,   602,   228,  1095,   186,   187,   188,
-    21,    22,   191,   192,   111,   112,   113,  1011,   241,   242,
-   186,   187,   188,   504,   101,   191,   192,    37,    38,   905,
-    22,     5,   513,   514,    26,    21,    28,    21,  1011,    25,
-   624,    25,    52,    53,   408,    20,    21,    87,    32,    33,
-    24,    25,    26,    45,   904,   639,   592,   641,   895,   896,
-    34,    19,   903,   901,   902,   429,   430,   603,    22,   893,
-   894,   552,   553,    21,    29,    24,  1165,    25,    27,   560,
-   120,   560,     5,    50,    51,    34,   622,   568,   429,   430,
-   571,   572,   408,    25,    26,    21,    28,    22,   138,    25,
-   553,    24,    50,    51,   429,   430,    32,    33,   408,   149,
-   552,    34,    22,    45,   650,    39,   652,     5,   571,    40,
-    26,   696,    28,   604,   186,   187,   188,   604,    21,   191,
-   192,   611,    25,    95,   718,  1011,    24,    25,    26,    45,
-    56,   897,   898,   899,   900,    26,    34,    26,    26,    28,
-    28,    54,    55,    34,   719,   720,   721,   722,   723,   724,
-    18,  1011,   916,    21,   645,   646,    45,    45,   649,   190,
-  1011,    21,   970,  1011,  1011,    25,   657,   658,    21,   660,
-    21,    95,    25,    19,    25,   408,    29,  1011,   552,    24,
-    34,    26,  1129,   674,   730,   676,    24,    22,    26,    34,
-    50,    51,   679,   957,   685,    22,   429,   430,    21,    34,
-   808,   692,    25,    21,   695,   696,   697,    25,    18,   696,
-   818,    21,    21,    23,    37,    38,    25,   708,   186,   187,
-   188,  1143,    18,   191,   192,    21,   552,   186,   187,    52,
-    53,   190,    18,   283,    88,    21,   286,   287,   288,   785,
-   786,    22,   552,    21,    21,  1011,    22,    25,    25,   182,
-   183,   859,    24,   186,   187,    21,  1020,   190,   308,    25,
-    18,   846,     0,    21,   314,  1029,    21,     5,    25,    26,
-    25,    37,    38,    50,    51,    13,    14,    15,    95,    34,
-    35,    36,   828,    32,    33,  1049,    52,    53,   186,   187,
-   188,    37,    38,   191,   192,   186,   187,   188,    20,  1192,
-   191,   192,  1066,    24,   795,    26,    52,    53,    34,    23,
-   800,    19,    26,   803,    28,   890,   891,   892,    21,   552,
-    21,    21,    25,    21,    25,    25,   817,    25,   819,    20,
-    21,   822,   186,   187,  1227,   826,    18,   191,   192,    21,
-  1104,   186,   187,   188,    20,    21,   191,   192,   193,    87,
-    21,   186,   187,   188,    25,   846,   191,   192,    21,   846,
-    95,  1125,    25,   854,   102,   103,   104,   105,   106,   107,
-   108,   109,    27,   111,    21,    21,   114,    25,    25,    25,
-    21,    24,   120,    26,    25,    28,   932,    21,   438,    21,
-    18,    25,   130,    25,   132,   133,   134,    21,   448,   974,
-   138,    25,    45,    21,    21,    48,    49,    25,    25,   459,
-    21,   461,    18,   959,    25,    21,   154,    21,    23,   469,
-    21,    25,   472,   161,    25,   916,   476,    24,    21,   186,
-   187,   188,    25,   924,   191,   192,    21,    34,   929,    18,
-    25,    21,    22,   933,    19,   935,   936,   937,    21,    24,
-    24,    26,    25,    28,    29,    30,    31,    32,    33,    34,
-   186,   187,   188,   513,   514,   191,   192,    21,    68,    69,
-    70,    25,    47,    48,    49,    21,    24,    21,    26,    25,
-    28,    25,    21,   221,  1078,    18,    25,    24,   979,   980,
-    34,    35,    36,   186,   187,   188,    71,    45,   191,   192,
-    48,    49,    32,    33,    73,    74,    75,    76,  1054,    22,
-   560,    80,    81,    82,    83,    84,    85,    86,    24,    21,
-  1011,    21,   260,    25,    21,    25,    21,    18,    25,    25,
-    25,  1022,    21,  1024,  1025,    25,    25,    52,    53,    54,
-   115,  1032,    24,  1034,  1035,   283,   284,    18,   286,   287,
-    25,    26,    18,    28,   604,    18,   294,    18,  1143,  1022,
-  1051,   299,    34,    35,    36,  1056,    18,  1056,    19,  1059,
-   308,  1061,     9,  1064,   112,   113,   314,    11,  1069,   208,
-  1069,    25,  1069,  1074,  1192,   182,   183,  1133,    24,   186,
-   187,    11,    91,   190,    34,    35,    36,    21,  1206,    24,
-    19,    19,    19,   341,  1095,  1096,  1097,  1098,    19,  1100,
-  1101,   186,   187,   188,   352,   190,   191,   192,  1109,  1227,
-  1111,    91,    27,  1114,   674,    24,   676,  1118,    23,  1120,
-  1121,    25,  1123,    21,    21,   685,    22,    18,  1129,    21,
-    25,    25,   692,    11,    24,   695,   696,    25,    24,    24,
-    27,    25,  1143,    23,    23,    20,    19,    19,    10,    11,
-    12,    20,    23,    58,    59,    60,    61,    62,    63,    64,
-    65,    66,    67,    27,  1165,  1166,  1167,  1168,    24,  1225,
-    21,     5,  1173,    25,    10,    11,    12,   425,    58,    59,
-    60,    61,    62,    63,    64,    65,    66,    67,    19,    22,
-   438,    73,  1193,    25,  1193,    24,    20,   445,    20,   447,
-    25,   449,    25,    18,   452,    21,    27,   455,    27,   457,
-    21,   459,    25,   461,    22,   354,    25,  1218,   466,    25,
-    24,   469,    29,   362,    25,   364,    40,    39,   476,    56,
-   187,    91,    91,    91,   142,    25,    91,    91,    25,    18,
-    22,    91,    25,   491,    24,    20,   344,   155,   156,   157,
-   158,   159,   160,    25,   162,   163,    18,   817,    25,   819,
-    21,    18,   822,    40,   190,    20,   826,    27,    18,    21,
-   368,    24,    23,    18,    91,   373,   374,   375,   376,   377,
-   378,   379,   380,   381,   382,   383,   846,    22,    22,   192,
-    21,    21,   154,    22,   854,    20,    20,   436,    91,    25,
-    27,   194,    25,    40,    25,    27,   404,    18,    20,    27,
-    20,    25,   560,     0,     0,   924,    87,   314,   154,  1218,
-  1186,  1114,  1014,  1086,   684,  1165,   574,  1023,  1051,   577,
-   461,   874,   823,   790,   577,  1193,   198,   676,   674,   846,
-   128,   695,    12,   299,   206,   593,   350,  1149,   210,   597,
-   598,   213,   241,   408,   504,   699,   604,   708,  1011,   221,
-   222,   851,   198,   852,   226,   504,   228,    -1,    -1,   929,
-   206,    -1,    -1,    -1,   210,    -1,   624,   213,    -1,   241,
-   242,    -1,    -1,    -1,    -1,   221,   634,   635,    -1,    -1,
-   226,   639,   228,   641,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   241,   242,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   553,    -1,    -1,   665,    -1,   979,
-   980,    10,    -1,    -1,    -1,   673,    -1,   675,    -1,    -1,
-    -1,   679,   571,   572,    -1,    -1,    -1,    -1,   686,   687,
-    -1,    -1,    -1,   691,    -1,    -1,    -1,   695,   696,    -1,
+   456,     0,   140,   452,     5,   119,   395,   431,     9,    10,
+    11,    12,   384,   385,   394,   386,   387,   589,   327,   396,
+   128,   646,     3,    10,     0,   539,   450,   921,   615,   541,
+   153,   154,   155,   156,   157,   158,   800,   308,    56,   913,
+   349,   690,    10,  1031,   388,   389,   390,   391,    10,   432,
+    27,   466,   230,   206,   668,   392,   393,   646,   646,   306,
+   646,    21,   948,   219,     0,    25,     5,   814,   224,    18,
+   226,   550,   819,   497,    23,   826,   823,    28,    24,    34,
+   705,   832,     5,   261,    22,    86,    25,    86,    26,   568,
+    28,    10,    11,    12,    45,    68,    69,    70,    71,    72,
+    73,    74,    75,    76,    77,    37,    38,    45,   680,    21,
+    86,   650,    41,   650,    41,    27,   705,   705,   119,   705,
+    52,    53,   933,    11,    12,    21,  1114,    19,    57,    25,
+    57,  1119,   646,    26,   646,   136,   109,  1031,  1032,   774,
+   113,    34,   115,    18,   117,   126,   147,  1021,  1022,   122,
+    86,   152,  1096,  1097,   789,   136,   111,   112,    54,    55,
+   133,     5,   135,  1049,    24,   152,   184,   591,   932,   170,
+   934,    10,   650,   281,   483,   599,    21,   826,    18,   926,
+  1168,    25,    27,   832,   152,   799,   601,     0,   802,    88,
+   152,   705,     5,   705,     7,   196,   467,     5,   351,    11,
+    12,   952,    21,   204,   177,   206,   359,   208,   361,   196,
+   211,  1105,   189,  1107,    32,    33,    24,   600,   219,  1163,
+  1094,   208,     5,   224,   211,   226,    34,   405,   196,   189,
+   338,   650,   650,   152,   196,   774,   204,   774,   239,   240,
+   208,    24,   204,   211,   693,  1056,   208,  1058,    28,   211,
+   789,    34,   789,   240,    68,    69,    70,   646,   381,   382,
+   383,   570,   185,   186,   187,    45,   646,   190,   191,   646,
+   426,   427,   240,    86,   646,   646,    24,   196,   240,   280,
+   433,   280,   283,   284,   285,   204,    21,   100,    24,   208,
+    25,   264,   211,   431,     5,    24,   774,    26,   111,   112,
+   219,   220,   646,   952,   305,   224,   305,   226,    24,   646,
+   311,   789,   450,   152,  1061,   296,   705,    24,  1212,    26,
+   239,   240,   910,   136,    24,   705,   299,    34,   705,   302,
+    24,   219,    26,   705,   705,    21,   224,   310,   226,    25,
+   313,   185,   186,   187,    24,    24,   190,   191,   501,   596,
+   351,   239,    18,    39,    34,   774,   774,   196,   359,   497,
+   361,   705,    21,   486,    18,   204,    25,     5,   705,   208,
+   789,   789,   211,   960,    24,    21,    18,   185,   186,    25,
+   488,   805,    24,  1008,   956,    24,    24,    25,    26,   903,
+    16,   815,    34,   905,   843,    34,    34,   550,   181,   182,
+    16,   240,   185,   186,   405,   930,   189,   219,   933,    16,
+    25,    26,   224,    28,   226,   568,   569,    16,   405,  1008,
+  1008,    22,  1008,    15,    21,   426,   427,   239,    25,   101,
+    45,    21,   433,    34,   435,    25,   435,   405,    19,    29,
+    24,     0,    26,   405,   445,   364,     5,   423,    21,   422,
+     9,    18,    25,   591,    21,   456,    23,   458,   434,   432,
+    18,   599,    22,    21,   437,   466,   574,    25,   469,   442,
+    22,   444,   473,    24,   185,   186,   187,    50,    51,   190,
+   191,    18,   295,    34,    21,   466,   405,    34,   461,   642,
+   643,    21,   465,    21,  1008,    25,  1008,    25,    18,    22,
+   501,    21,   655,  1091,    29,   185,   186,   426,   427,   510,
+   511,    40,   901,   621,    25,    26,     5,    28,   890,   891,
+   900,   892,   893,    18,    39,   902,    21,    86,   636,    25,
+   638,  1056,    28,  1058,    45,    24,    25,    26,   426,   427,
+    26,   694,    28,   185,   186,    34,   185,   186,   549,   550,
+   894,   895,   896,   897,    18,    56,   557,    21,   557,    45,
+   119,   898,   899,     5,   565,    21,   405,   568,   569,    25,
+    25,    26,  1160,    18,   550,    19,    21,   136,    24,   693,
+    26,   549,    28,    25,   185,   186,   187,   549,   147,   190,
+   191,    95,   568,   716,   717,   718,   719,   720,   721,    45,
+   601,    95,    48,    49,   185,   186,   187,   715,    22,   190,
+   191,    24,    50,    51,   426,   427,   589,    89,    90,  1008,
+   601,    34,    21,    54,    55,   438,    25,   600,  1008,    21,
+   549,  1008,   189,    25,   185,   186,  1008,  1008,   185,   186,
+   187,   642,   643,   190,   191,   646,   619,   119,   120,     6,
+     7,    50,    51,   654,   655,    21,   657,    18,   967,    25,
+    21,   133,    25,    26,  1008,    28,   913,   805,    22,  1125,
+   671,  1008,   673,    24,   647,    23,   649,   815,    26,    21,
+    28,   682,    45,    25,    24,    21,    95,    27,   689,    25,
+  1139,   692,   693,   694,    34,   676,   185,   186,   187,    42,
+    43,   190,   191,    26,   705,    28,    22,   954,    50,    51,
+   549,    24,   693,    26,    19,    10,    11,    12,   856,    21,
+    20,   280,    45,    25,   283,   284,   285,    34,     0,   843,
+   185,   186,   187,     5,    21,   190,   191,    26,    25,    28,
+    95,    13,    14,   185,   186,   187,   305,    21,   190,   191,
+    18,    25,   311,    21,   727,    21,    45,    25,    21,    25,
+    20,    21,    25,  1187,   887,   888,   889,    24,   181,   182,
+  1017,    18,   185,   186,    37,    38,   189,    24,    27,  1026,
+    18,    88,    29,    30,    31,    32,    33,    34,    25,    52,
+    53,   792,    37,    38,    18,   608,    24,  1221,    26,  1046,
+    47,    48,    49,    34,    35,    36,    34,    52,    53,   782,
+   783,    21,    22,   814,    86,   816,  1063,    24,   819,    21,
+    27,    21,   823,    25,    71,    25,    18,    34,    23,   101,
+   102,   103,   104,   105,   106,   107,   108,    24,   110,    21,
+    21,   113,   843,    25,    25,   185,   186,   119,   971,   189,
+   851,    21,   825,  1100,    22,    25,   128,   152,   130,   131,
+   132,    21,   843,    24,   136,    25,    21,   114,    50,    51,
+    25,    21,    18,    21,  1121,    25,   435,    25,   185,   186,
+   152,    21,    25,   190,   191,    25,   445,   159,    21,    37,
+    38,    25,    25,    24,    34,    35,    36,   456,    21,   458,
+    18,   196,    25,    21,    52,    53,    18,   466,    18,   204,
+   469,    26,   913,   208,   473,    18,   211,    21,    21,    34,
+   921,    25,    21,    21,   219,   926,    25,    25,    21,   224,
+    21,   226,    25,    18,    25,    34,    35,    36,   185,   186,
+   187,    18,   189,    18,   239,   240,    24,   219,    26,    21,
+    28,   510,   511,    25,    50,    51,   929,   185,   186,   187,
+    32,    33,   190,   191,   192,    19,  1074,    45,    21,    21,
+    48,    49,    25,    25,    18,   976,   977,    21,   185,   186,
+    32,    33,   189,   956,   797,   257,    21,   800,    54,    55,
+    25,    24,    24,    26,   185,   186,   187,    11,   557,   190,
+   191,    34,    21,    34,    35,    36,    25,  1008,   280,   281,
+    21,   283,   284,    21,    25,    32,    33,    25,  1019,   291,
+  1021,  1022,    21,    21,   296,  1139,    25,    25,  1029,    25,
+  1031,  1032,    21,   305,    21,    91,    25,     9,    25,   311,
+    20,    21,   601,  1019,    20,    21,    11,  1048,    21,  1187,
+    21,    22,  1053,    19,  1053,    52,    53,    54,    32,    33,
+  1061,    19,  1200,   111,   112,  1066,   338,  1066,    19,  1070,
+   185,   186,   187,    19,    24,   190,   191,   349,  1051,    27,
+    10,    11,    12,  1221,    91,  1066,    24,    21,    25,    22,
+  1091,  1092,  1093,  1094,    21,  1096,  1097,    10,    11,    12,
+    18,    25,    25,    25,  1105,    21,  1107,    11,    27,  1110,
+   405,    23,   671,  1114,   673,  1116,  1117,   930,  1119,   932,
+   933,   934,    24,   682,  1125,    24,    24,    20,   140,    25,
+   689,   426,   427,   692,   693,    19,    23,    20,  1139,    19,
+    21,   153,   154,   155,   156,   157,   158,    24,   160,   161,
+   422,    27,   185,   186,   187,     5,  1129,   190,   191,  1160,
+  1161,  1162,  1163,   435,    25,    19,    22,  1168,    25,    24,
+   442,    20,   444,    20,   446,    27,    73,   449,    18,    25,
+   452,    22,   454,    27,   456,    19,   458,  1188,    23,  1188,
+    24,   463,    25,    21,   466,    29,    30,    31,    32,    33,
+    34,   473,    21,    25,    25,    25,    24,    39,    56,    40,
+    25,  1212,    29,    47,    48,    49,   488,   186,    91,    91,
+    91,    91,   152,    58,    59,    60,    61,    62,    63,    64,
+    65,    66,    67,    91,    25,    25,    18,    71,    22,   152,
+    91,    20,    25,  1056,    24,  1058,  1219,    25,    18,    25,
+    21,    18,    40,   189,   549,   814,    20,   816,    27,    18,
+   819,    21,    23,    18,   823,    91,   196,    24,    22,    22,
+   191,    21,    21,    25,   204,    22,    20,    20,   208,    91,
+   114,   211,    27,   196,   843,   557,    25,   193,    18,   219,
+    27,   204,   851,    25,   224,   208,   226,    20,   211,   571,
+    40,    20,   574,    27,    25,     0,   219,     0,   311,   239,
+   240,   224,    86,   226,  1212,   921,  1181,  1110,   590,  1011,
+  1082,   681,   594,   595,  1020,  1160,   239,   240,  1048,   601,
+   871,   458,   820,    19,    20,   787,  1188,   671,    24,   574,
+    26,   673,    28,    29,    30,    31,    32,    33,    34,   621,
+   843,   185,   186,   187,   126,   189,   296,   692,    12,   631,
+   632,    47,    48,    49,   636,   239,   638,   926,   347,   381,
+   382,   383,   384,   385,   386,   387,   388,   389,   390,   391,
+   392,   393,   394,   395,   396,    71,  1144,   501,    10,   405,
+   662,   849,   696,   705,  1008,   848,    -1,    -1,   670,    -1,
+   672,    -1,    -1,    -1,   676,    -1,    -1,    -1,    -1,    -1,
+    -1,   683,   684,    -1,    -1,    -1,   688,   976,   977,   431,
+   692,   693,    73,    74,    75,    76,    -1,   341,   114,    80,
+    81,    82,    83,    84,    85,    86,    -1,    -1,   450,    -1,
+    -1,    -1,    -1,   715,    -1,    -1,    10,    11,    12,    -1,
+    -1,   365,    10,    11,    12,    -1,   370,   371,   372,   373,
+   374,   375,   376,   377,   378,   379,   380,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   486,   405,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   497,    -1,   401,    -1,    -1,
+    -1,    -1,   405,    -1,  1053,    -1,   426,   427,    -1,   185,
+   186,   187,  1061,   189,   190,   191,   128,  1066,    23,    -1,
+    -1,  1070,    -1,   426,   427,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   795,    -1,    -1,    -1,   539,   150,   541,
+   152,   543,   544,  1092,  1093,    -1,    10,    11,    12,    -1,
+    -1,    -1,    -1,    58,    59,    60,    61,    62,    63,    64,
+    65,    66,    67,    -1,    -1,    -1,    -1,  1116,  1117,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,  1125,    -1,    -1,    -1,
+   842,   843,    -1,   845,   196,    -1,    -1,    -1,    -1,   591,
+  1139,    -1,   204,    -1,    -1,    -1,   208,   599,   152,   211,
+    -1,    -1,    -1,    -1,   152,    -1,    -1,   219,    -1,    -1,
+    -1,    -1,  1161,  1162,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   240,   549,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1188,
+    -1,    -1,   196,    -1,   646,    -1,   549,    -1,   196,    -1,
+   204,    -1,    -1,    -1,   208,    -1,   204,   211,    -1,    -1,
+   208,    -1,    -1,   211,    -1,   219,    -1,   929,    -1,    -1,
+   224,   219,   226,    -1,   936,    -1,   224,    -1,   226,   291,
+    -1,    -1,    -1,    -1,    -1,   239,   240,    -1,   152,    -1,
+    -1,   239,   240,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   705,    -1,    -1,   318,   319,   320,   321,
+    -1,    -1,    -1,   617,   716,   717,   718,   719,   720,   721,
+   722,   723,    -1,    -1,   628,    -1,   338,    -1,    -1,    -1,
+    -1,    -1,   196,    -1,    -1,    -1,    -1,   349,    19,    20,
+   204,    -1,    -1,    24,   208,    -1,    -1,   211,    29,    30,
+    31,    32,    33,    34,   366,   219,    -1,    -1,    -1,    -1,
+   224,    -1,   226,    -1,    -1,    -1,    47,    48,    49,    -1,
+    -1,    -1,    -1,    -1,    -1,   239,   240,    -1,   682,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1050,    -1,
+    71,  1053,   696,   405,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   413,    -1,   805,  1066,    -1,    -1,  1069,    -1,    -1,
+    -1,    -1,  1074,   815,    -1,  1077,  1078,    19,    -1,    -1,
+    -1,    -1,    24,    -1,    26,    -1,    28,    29,    30,    31,
+    32,    33,    34,   114,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    47,    48,    49,    -1,    -1,
+    -1,   405,    -1,    -1,   856,    -1,    -1,   405,  1120,    -1,
+    -1,    -1,    -1,  1125,    -1,  1127,  1128,    -1,    -1,    71,
+    -1,    -1,   426,   427,    -1,    -1,    -1,  1139,   426,   427,
+    -1,    -1,    -1,    -1,    -1,   887,   888,   889,   890,   891,
+   892,   893,   894,   895,   896,   897,   898,   899,   900,   901,
+   902,   903,  1164,   905,   185,   186,   187,    -1,   189,    -1,
+   814,    -1,   114,    -1,    -1,   819,    -1,    -1,    -1,   823,
+    -1,    -1,  1184,  1185,    -1,    -1,  1188,    -1,   540,  1191,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   549,    -1,    -1,
+    -1,   405,    -1,    -1,    -1,   849,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,
-   718,    -1,    -1,    -1,    -1,    -1,   384,   385,   386,   387,
-   388,   389,   390,   391,   392,   393,   394,   395,   396,   397,
-   398,   399,    -1,    -1,    -1,    -1,  1056,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,  1064,   367,   645,   646,    -1,  1069,
-    -1,    -1,    -1,    -1,  1074,    -1,    -1,    -1,    -1,   658,
-    -1,    -1,   620,    -1,    -1,    -1,   434,    10,    11,    12,
-    -1,    -1,    -1,   631,    -1,    -1,  1096,  1097,    -1,    -1,
-    -1,   130,    -1,    -1,    -1,   453,   408,    -1,    -1,    -1,
-   798,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   697,    -1,
-  1120,  1121,    -1,   152,    -1,   154,    -1,   429,   430,  1129,
-    -1,    -1,   408,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   489,    -1,  1143,    -1,    -1,    -1,   685,    -1,    -1,
-    -1,    -1,   500,   429,   430,    -1,    -1,   845,   846,    -1,
-   848,   699,    -1,    -1,    -1,    -1,  1166,  1167,    -1,   198,
-    -1,   154,    -1,    -1,    -1,    -1,    -1,   206,    -1,    -1,
-    -1,   210,    -1,    -1,   213,    -1,    -1,    -1,    -1,    18,
-    -1,    -1,   221,  1193,   542,    24,   544,    -1,   546,   547,
-    29,    30,    31,    32,    33,    34,    -1,    -1,    10,    11,
-    12,    -1,    -1,   242,    -1,   198,    -1,    -1,    47,    48,
-    49,    -1,    -1,   206,    -1,    -1,    -1,   210,    -1,    -1,
-   213,   154,    -1,    -1,    -1,    -1,    -1,    -1,   221,    -1,
-    -1,    -1,    71,   226,   932,   228,   594,    -1,    -1,    -1,
-   552,   939,    -1,    -1,   602,    -1,    -1,    -1,   241,   242,
-    -1,    -1,    -1,    -1,    -1,   294,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   198,   552,    -1,    -1,   817,
-    -1,    -1,    -1,   206,   822,    -1,   115,   210,   826,    -1,
-   213,    -1,   321,   322,   323,   324,    -1,    -1,   221,    -1,
-    -1,   649,    -1,   226,    -1,   228,    -1,    -1,    -1,    -1,
-    -1,    -1,   341,    -1,   852,    -1,    -1,    -1,   241,   242,
-    -1,    -1,    -1,   352,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   873,   874,    -1,    -1,    -1,
-   369,   879,   880,   881,   882,   883,   884,   885,   886,   887,
-   888,   889,   154,    -1,    -1,    -1,    -1,   186,   187,   188,
-   708,   190,    -1,    -1,    -1,  1053,    -1,    -1,  1056,    -1,
-    -1,   719,   720,   721,   722,   723,   724,   725,   726,   408,
-    -1,  1069,    -1,    -1,  1072,    -1,    -1,   416,    -1,    -1,
-  1078,   929,    -1,  1081,  1082,    -1,   198,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   206,    -1,    -1,    -1,   210,    -1,
-    -1,   213,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   221,
-    -1,    -1,    -1,    -1,   226,   408,   228,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,  1124,    -1,    -1,   241,
-   242,  1129,    -1,  1131,  1132,    -1,   429,   430,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,  1143,    -1,    -1,    -1,    -1,
-   808,    -1,    18,    -1,    -1,    -1,    -1,    -1,    24,    -1,
-   818,    -1,    -1,    29,    30,    31,    32,    33,    34,    -1,
-    -1,  1169,    -1,    -1,    -1,   408,    -1,    -1,    -1,    -1,
-    -1,    47,    48,    49,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,  1189,  1190,    -1,    -1,  1193,   429,   430,  1196,    -1,
-    -1,   859,    -1,    -1,   543,    71,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   552,    -1,    -1,  1064,    -1,    -1,    -1,
+    -1,    -1,   426,   427,    -1,    -1,   870,   871,    -1,   971,
+    -1,    -1,   876,   877,   878,   879,   880,   881,   882,   883,
+   884,   885,   886,   185,   186,   187,    -1,   189,   190,   191,
+    -1,    -1,    -1,    -1,    -1,   549,    -1,    -1,    -1,    -1,
+    -1,   549,    -1,   615,    -1,    -1,  1008,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   890,   891,   892,   893,   894,   895,   896,   897,
-   898,   899,   900,   901,   902,   903,   904,   905,   906,   115,
-   908,    -1,    -1,    19,    20,    -1,    -1,    -1,    24,   552,
-    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   618,
-    -1,    47,    48,    49,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   408,    -1,    -1,    -1,
-   639,    -1,   641,    -1,    -1,    71,    -1,    -1,   647,    -1,
-    -1,    -1,   651,    -1,     0,     1,   974,   429,   430,   552,
-   186,   187,   188,    -1,   190,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    18,    -1,    -1,    -1,    -1,    -1,    24,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    34,   115,
-    -1,    -1,    -1,  1011,    -1,    -1,    -1,    -1,    44,    -1,
-    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   707,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   718,
-    -1,    -1,    68,    69,    70,    -1,    72,    -1,    -1,    -1,
-    -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,    -1,
+    -1,    -1,   926,    -1,   636,    -1,   638,    -1,    -1,    -1,
+    -1,    -1,   644,    -1,    -1,    -1,   648,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,    -1,
+    -1,    -1,     6,     7,     8,    -1,    -1,    11,    12,    13,
+    14,    15,    16,    17,    18,    19,    20,    -1,    -1,    -1,
+    24,    25,    -1,    -1,    -1,    29,    30,    31,    32,    33,
+    34,    -1,    -1,    -1,    -1,   549,    -1,    -1,    42,    43,
+    -1,    -1,   704,    47,    48,    49,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   715,    -1,   121,   122,   123,   124,    -1,
+   126,    -1,    -1,    -1,    -1,   131,   132,    71,    -1,   135,
+   136,    -1,   138,   139,   140,   141,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,     0,     1,   153,   154,    -1,
+    -1,    95,    96,    97,    98,    99,   100,   101,    -1,    -1,
+    -1,    -1,    -1,    18,    -1,    -1,   110,  1061,    -1,    24,
+   114,    -1,   178,    -1,    -1,    -1,    -1,    -1,    -1,    34,
+    -1,    -1,   188,    -1,    -1,    -1,    -1,    -1,    -1,    44,
+    -1,    46,    -1,    -1,    -1,  1187,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1200,    -1,
+    -1,    -1,    -1,    68,    69,    70,    -1,    72,    -1,    -1,
+    -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,  1221,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,
+    -1,   185,   186,   187,    -1,   189,   190,   191,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   111,   112,   113,    -1,
+   115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+   872,   126,   127,   128,   129,   130,   131,   132,   133,   134,
+   135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+   145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
+   155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
+   165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
+   175,   176,   177,   178,    -1,    -1,    -1,    -1,     0,     1,
+   185,   186,   187,   188,    -1,   190,   191,   192,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    18,    -1,    -1,    -1,
+    -1,    -1,    24,    -1,    -1,    -1,    -1,    -1,   960,    -1,
+    -1,    -1,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    44,    -1,    46,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   186,   187,   188,    -1,   190,   111,   112,   113,   114,    -1,
-   116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-   552,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-   136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-   146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-   176,   177,   178,   179,    -1,    -1,    -1,    -1,    -1,    -1,
-   186,   187,   188,   189,    -1,   191,   192,   193,   122,   123,
-   124,   125,    -1,   127,    -1,    -1,    -1,    -1,   132,   133,
-    -1,    -1,   136,   137,    -1,   139,   140,   141,   142,    -1,
-    -1,    -1,    -1,    -1,  1192,    -1,   875,    -1,    -1,    -1,
-   154,   155,    -1,    -1,     0,     1,    -1,    -1,  1206,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,    70,    -1,
+    72,    -1,    -1,    -1,  1006,    77,    78,    79,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    92,    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
+   112,   113,    -1,   115,   116,   117,   118,   119,   120,   121,
+   122,   123,   124,    -1,   126,   127,   128,   129,   130,   131,
+   132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
+   142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
+   162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+   172,   173,   174,   175,   176,   177,   178,    -1,    -1,    -1,
+    -1,    -1,    -1,   185,   186,   187,   188,     1,   190,   191,
+   192,    -1,     6,     7,     8,    -1,    10,    11,    12,    13,
+    14,    15,    16,    17,    18,    19,    20,    -1,    -1,    -1,
+    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,    33,
+    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,
+    44,    -1,    46,    47,    48,    49,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    18,    -1,    -1,   179,    -1,    -1,    24,  1227,
-    -1,    -1,    -1,    -1,    -1,   189,    -1,    -1,    34,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,
-    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    68,    69,    70,    71,    72,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    68,    69,    70,    -1,    72,    -1,    -1,    -1,
-    -1,    77,    78,    79,   963,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   111,   112,   113,   114,    -1,
-   116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-  1009,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-   136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-   146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-   176,   177,   178,   179,    -1,    -1,    -1,    -1,    -1,    -1,
-   186,   187,   188,   189,  1073,   191,   192,   193,     1,    -1,
-    -1,    -1,    -1,     6,     7,     8,    -1,    10,    11,    12,
-    13,    14,    15,    16,    17,    18,    19,    20,    -1,    -1,
-    -1,    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,
-    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
-    43,    44,    -1,    46,    47,    48,    49,    -1,    -1,    -1,
+    -1,    -1,    96,    97,    98,    99,   100,   101,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,
+   114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+   124,    -1,   126,   127,   128,   129,   130,   131,   132,   133,
+   134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
+   144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
+   164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
+   174,   175,   176,   177,   178,    -1,    -1,    -1,    -1,    -1,
+    -1,   185,   186,   187,   188,   189,   190,   191,   192,     1,
+    -1,    -1,    -1,    -1,     6,     7,     8,    -1,    10,    11,
+    12,    13,    14,    15,    16,    17,    18,    19,    -1,    -1,
+    -1,    -1,    24,    -1,    -1,    -1,    -1,    29,    30,    31,
+    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    42,    43,    44,    -1,    -1,    47,    48,    49,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    68,    69,    70,    71,    72,
+    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,    70,    71,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    96,    97,    98,    99,   100,   101,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
-   113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
-   123,   124,   125,    -1,   127,   128,   129,   130,   131,   132,
-   133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
-   143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-   163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,   176,   177,   178,   179,    -1,    -1,    -1,
-    -1,    -1,    -1,   186,   187,   188,   189,   190,   191,   192,
-   193,     1,    -1,    -1,    -1,    -1,     6,     7,     8,    -1,
-    10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-    -1,    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,    29,
+    -1,    -1,    -1,    -1,    96,    97,    98,    99,   100,   101,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,
+   112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
+   122,   123,   124,    -1,   126,   127,   128,   129,   130,   131,
+   132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
+   142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
+   162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+   172,   173,   174,   175,   176,   177,   178,    -1,    -1,    -1,
+    -1,    -1,    -1,   185,   186,   187,   188,   189,   190,   191,
+   192,     1,    -1,    -1,    -1,    -1,     6,     7,     8,    -1,
+    -1,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+    20,    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,    29,
     30,    31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    42,    43,    44,    -1,    -1,    47,    48,    49,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
@@ -2295,404 +2303,374 @@ static const short yycheck[] = {     0,
     -1,    -1,    -1,    -1,    -1,    -1,    96,    97,    98,    99,
    100,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
-   120,   121,   122,   123,   124,   125,    -1,   127,   128,   129,
+   120,   121,   122,   123,   124,    -1,   126,   127,   128,   129,
    130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
    140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
    150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
    160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
-    -1,    -1,    -1,    -1,    -1,    -1,   186,   187,   188,   189,
-   190,   191,   192,   193,     1,    -1,    -1,    -1,    -1,     6,
-     7,     8,    -1,    -1,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    -1,    -1,    -1,    24,    -1,    -1,
-    -1,    -1,    29,    30,    31,    32,    33,    34,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    42,    43,    44,    -1,    -1,
-    47,    48,    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    68,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    96,
-    97,    98,    99,   100,   101,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,   116,
-   117,   118,   119,   120,   121,   122,   123,   124,   125,    -1,
-   127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-   137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
-   147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
-   157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
-   177,   178,   179,    -1,    -1,    -1,    -1,    -1,    -1,   186,
-   187,   188,   189,   190,   191,   192,   193,     1,    -1,    -1,
-    -1,    -1,     6,     7,     8,    -1,    10,    11,    12,    13,
-    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-    24,    -1,    26,    -1,    28,    29,    30,    31,    32,    33,
-    34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-    -1,    45,    -1,    47,    48,    49,    50,    51,    52,    53,
-    54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-    64,    65,    66,    67,    -1,    -1,    -1,    71,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    19,    20,    -1,    -1,    -1,
-    24,    -1,    26,    -1,    28,    29,    30,    31,    32,    33,
-    34,    -1,    96,    97,    98,    99,   100,   101,    -1,    -1,
-    -1,    -1,     1,    47,    48,    49,   110,     6,     7,     8,
-    -1,   115,    11,    12,    13,    14,    15,    16,    17,    18,
-    19,    20,    -1,    -1,    -1,    24,    25,    71,    -1,    -1,
-    29,    30,    31,    32,    33,    34,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    42,    43,    -1,    -1,    -1,    47,    48,
-    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   170,   171,   172,   173,   174,   175,   176,   177,   178,    -1,
+    -1,    -1,    -1,    -1,    -1,   185,   186,   187,   188,   189,
+   190,   191,   192,     1,    -1,    -1,    -1,    -1,     6,     7,
+     8,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
+    18,    19,    20,    21,    22,    23,    24,    -1,    26,    -1,
+    28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+    38,    39,    40,    41,    42,    43,    -1,    45,    -1,    47,
+    48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+    58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+    -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   115,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   186,   187,   188,    -1,   190,   191,   192,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    95,    96,    97,    98,
-    99,   100,   101,    -1,    -1,    -1,    -1,    -1,     1,    -1,
-    -1,   110,    -1,     6,     7,     8,   115,    10,    11,    12,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    96,    97,
+    98,    99,   100,   101,    -1,    -1,    -1,    -1,     1,    -1,
+    -1,    -1,   110,     6,     7,     8,   114,    10,    11,    12,
     13,    14,    15,    16,    17,    18,    19,    -1,    -1,    -1,
     -1,    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,
-    33,    34,   186,   187,   188,    -1,   190,   191,   192,    42,
+    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
     43,    -1,    -1,     1,    47,    48,    49,    -1,     6,     7,
      8,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
     18,    19,    -1,    -1,    -1,    -1,    24,    -1,    71,    -1,
-    -1,    29,    30,    31,    32,    33,    34,   186,   187,   188,
-    -1,   190,   191,   192,    42,    43,    -1,    -1,    -1,    47,
+    -1,    29,    30,    31,    32,    33,    34,   185,   186,   187,
+    -1,   189,   190,   191,    42,    43,    -1,    -1,    -1,    47,
     48,    49,    95,    96,    97,    98,    99,   100,   101,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    19,   110,    -1,    -1,
-    -1,    24,   115,    71,    -1,    -1,    29,    30,    31,    32,
-    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    47,    48,    49,    95,    96,    97,
-    98,    99,   100,   101,    -1,    -1,    -1,    -1,    -1,     1,
-    -1,    -1,   110,    -1,     6,     7,     8,   115,    71,    11,
-    12,    13,    14,    15,    16,    17,    18,    19,    20,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,    -1,    -1,
+    -1,   114,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    95,    96,    97,
+    98,    99,   100,   101,    -1,    -1,    -1,    -1,     1,    -1,
+    -1,    -1,   110,     6,     7,     8,   114,    -1,    11,    12,
+    13,    14,    15,    16,    17,    18,    19,    20,    -1,    -1,
+    -1,    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,
+    33,    34,   185,   186,   187,    -1,   189,   190,   191,    42,
+    43,    -1,    -1,     1,    47,    48,    49,    -1,     6,     7,
+     8,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
+    18,    19,    20,    -1,    -1,    -1,    24,    -1,    71,    -1,
+    -1,    29,    30,    31,    32,    33,    34,   185,   186,   187,
+    -1,   189,   190,   191,    42,    43,    -1,    -1,    -1,    47,
+    48,    49,    95,    96,    97,    98,    99,   100,   101,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,    -1,    -1,
+    -1,   114,    -1,    71,    -1,    -1,    18,    -1,    -1,    -1,
     -1,    -1,    24,    -1,    -1,    -1,    -1,    29,    30,    31,
-    32,    33,    34,   186,   187,   188,    -1,   190,   191,   192,
-    42,    43,    -1,    -1,     1,    47,    48,    49,    -1,     6,
-     7,     8,   115,    10,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    -1,    -1,    -1,    24,    -1,    71,
-    -1,    -1,    29,    30,    31,    32,    33,    34,   186,   187,
-   188,    -1,   190,   191,   192,    42,    43,    -1,    -1,    -1,
-    47,    48,    49,    95,    96,    97,    98,    99,   100,   101,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    19,   110,    -1,
-    -1,    -1,    24,   115,    71,    -1,    -1,    29,    30,    31,
-    32,    33,    34,   186,   187,   188,    -1,   190,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    47,    48,    49,    -1,    96,
-    97,    98,    99,   100,   101,    -1,    -1,    -1,    -1,    -1,
-     1,    -1,    -1,   110,    -1,     6,     7,     8,   115,    71,
-    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,    29,    30,
-    31,    32,    33,    34,   186,   187,   188,    -1,   190,   191,
-   192,    42,    43,    -1,    -1,     1,    47,    48,    49,    -1,
-     6,     7,     8,   115,    10,    11,    12,    13,    14,    15,
-    16,    17,    18,    19,    -1,    -1,    -1,    -1,    24,    -1,
-    71,    -1,    -1,    29,    30,    31,    32,    33,    34,   186,
-   187,   188,    -1,   190,   191,   192,    42,    43,    -1,    -1,
-    -1,    47,    48,    49,    -1,    96,    97,    98,    99,   100,
-   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,
-    -1,    -1,    -1,    -1,   115,    71,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   186,   187,   188,    -1,   190,    -1,
+    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    96,    97,
+    98,    99,   100,   101,    -1,    47,    48,    49,     1,    -1,
+    -1,    -1,   110,     6,     7,     8,   114,    -1,    11,    12,
+    13,    14,    15,    16,    17,    18,    19,    20,    -1,    71,
+    -1,    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,
+    33,    34,   185,   186,   187,    -1,   189,   190,   191,    42,
+    43,    -1,    -1,     1,    47,    48,    49,    -1,     6,     7,
+     8,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
+    18,    19,   114,    -1,    -1,    -1,    24,    -1,    71,    -1,
+    -1,    29,    30,    31,    32,    33,    34,   185,   186,   187,
+    -1,   189,   190,   191,    42,    43,    -1,    -1,    -1,    47,
+    48,    49,    -1,    96,    97,    98,    99,   100,   101,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,    -1,    -1,
+    -1,   114,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   185,   186,   187,    -1,   189,    96,    97,
+    98,    99,   100,   101,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   110,     6,     7,     8,   114,    10,    11,    12,
+    13,    14,    15,    16,    17,    18,    19,    20,    -1,    -1,
+    -1,    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,
+    33,    34,   185,   186,   187,    -1,   189,   190,   191,    42,
+    43,    44,    -1,    46,    47,    48,    49,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,    72,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   185,   186,   187,
+    -1,   189,   190,   191,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    96,    97,    98,    99,   100,   101,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
+   113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+   123,   124,    -1,   126,   127,   128,   129,   130,   131,   132,
+   133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
+   143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
+   153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
+   163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
+   173,   174,   175,   176,   177,   178,    -1,    -1,    -1,    -1,
+    -1,    -1,   185,   186,   187,   188,   189,   190,   191,   192,
+     6,     7,     8,    -1,    10,    11,    12,    13,    14,    15,
+    16,    17,    18,    19,    20,    -1,    -1,    -1,    24,    -1,
+    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    44,    -1,
+    46,    47,    48,    49,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    71,    72,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     96,    97,    98,    99,   100,   101,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   110,    -1,     6,     7,     8,   115,
-    10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-    20,    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,    29,
-    30,    31,    32,    33,    34,   186,   187,   188,    -1,   190,
-   191,   192,    42,    43,    44,    -1,    46,    47,    48,    49,
+    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
+   116,   117,   118,   119,   120,   121,   122,   123,   124,    -1,
+   126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+   136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+   146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+   166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+   176,   177,   178,    -1,    -1,    -1,    -1,    -1,    -1,   185,
+   186,   187,   188,   189,   190,   191,   192,     6,     7,     8,
+    -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+    19,    20,    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,
+    29,    30,    31,    32,    33,    34,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    42,    43,    44,    -1,    46,    47,    48,
+    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    71,    72,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    71,    72,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   186,   187,   188,    -1,   190,   191,   192,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    96,    97,    98,    99,
-   100,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
-   120,   121,   122,   123,   124,   125,    -1,   127,   128,   129,
-   130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
-   140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
-   150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
-    -1,    -1,    -1,    -1,    -1,    -1,   186,   187,   188,   189,
-   190,   191,   192,   193,     6,     7,     8,    -1,    10,    11,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    96,    97,    98,
+    99,   100,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   110,   111,   112,   113,   114,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,   124,    -1,   126,   127,   128,
+   129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
+   139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+   149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
+   159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
+   169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
+    -1,    -1,    -1,    -1,    -1,    -1,   185,   186,   187,   188,
+   189,   190,   191,   192,     6,     7,     8,    -1,    10,    11,
     12,    13,    14,    15,    16,    17,    18,    19,    20,    -1,
     -1,    -1,    24,    -1,    -1,    -1,    -1,    29,    30,    31,
     32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    42,    43,    44,    -1,    46,    47,    48,    49,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    47,    48,    49,     6,     7,
+     8,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
+    18,    19,    20,    -1,    -1,    -1,    24,    -1,    -1,    71,
+    -1,    29,    30,    31,    32,    33,    34,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    47,
+    48,    49,    -1,    -1,    96,    97,    98,    99,   100,   101,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,    -1,
+    -1,    -1,   114,    71,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,
-    72,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    96,    97,
+    98,    99,   100,   101,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   110,     6,     7,     8,   114,    10,    11,    12,
+    13,    14,    15,    16,    17,    18,    19,    20,    -1,    -1,
+    -1,    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,
+    33,    34,    -1,   185,   186,   187,    -1,   189,   190,   191,
+    -1,    -1,    -1,    -1,    47,    48,    49,     6,     7,     8,
+    -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+    19,    20,    -1,    -1,    -1,    24,    -1,    -1,    71,    -1,
+    29,    30,    31,    32,    33,    34,    -1,   185,   186,   187,
+    -1,   189,   190,   191,    -1,    -1,    -1,    -1,    47,    48,
+    49,    -1,    -1,    96,    97,    98,    99,   100,   101,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,    -1,    -1,
+    -1,   114,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    96,    97,    98,    99,   100,   101,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,
-   112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
-   122,   123,   124,   125,    -1,   127,   128,   129,   130,   131,
-   132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
-   142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,   176,   177,   178,   179,    -1,    -1,
-    -1,    -1,    -1,    -1,   186,   187,   188,   189,   190,   191,
-   192,   193,     6,     7,     8,    -1,    10,    11,    12,    13,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    96,    97,    98,
+    99,   100,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   110,     6,     7,     8,   114,    10,    11,    12,    13,
     14,    15,    16,    17,    18,    19,    20,    -1,    -1,    -1,
     24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,    33,
-    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,
-    44,    -1,    46,    47,    48,    49,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,    72,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    34,    -1,   185,   186,   187,    -1,   189,   190,   191,    -1,
+    -1,    -1,    -1,    47,    48,    49,     6,     7,     8,    -1,
+    10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+    20,    -1,    -1,    -1,    24,    -1,    -1,    71,    -1,    29,
+    30,    31,    32,    33,    34,    -1,   185,   186,   187,    -1,
+   189,   190,   191,    -1,    -1,    -1,    -1,    47,    48,    49,
     -1,    -1,    96,    97,    98,    99,   100,   101,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,
-   114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,   127,   128,   129,   130,   131,   132,   133,
-   134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
-   144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
-   174,   175,   176,   177,   178,   179,    -1,    -1,    -1,    -1,
-    -1,    -1,   186,   187,   188,   189,   190,   191,   192,   193,
-     6,     7,     8,    -1,    10,    11,    12,    13,    14,    15,
-    16,    17,    18,    19,    20,    -1,    -1,    -1,    24,    -1,
-    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    47,    48,    49,    -1,     6,     7,     8,    -1,    10,
-    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-    -1,    -1,    -1,    24,    -1,    71,    -1,    -1,    29,    30,
-    31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    47,    48,    49,    -1,
-    96,    97,    98,    99,   100,   101,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,   115,
-    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    96,    97,    98,    99,   100,
-   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,
-    -1,     6,     7,     8,   115,    10,    11,    12,    13,    14,
-    15,    16,    17,    18,    19,    20,    -1,    -1,    -1,    24,
+    -1,    -1,    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,
+   114,    71,    -1,    -1,    19,    -1,    -1,    -1,    -1,    24,
     -1,    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,
-   186,   187,   188,    -1,   190,   191,   192,    -1,    -1,    -1,
-    -1,    -1,    47,    48,    49,    -1,     6,     7,     8,    -1,
-    10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-    20,    -1,    -1,    -1,    24,    -1,    71,    -1,    -1,    29,
-    30,    31,    32,    33,    34,   186,   187,   188,    -1,   190,
-   191,   192,    -1,    -1,    -1,    -1,    -1,    47,    48,    49,
-    -1,    96,    97,    98,    99,   100,   101,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,
-   115,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    96,    97,    98,    99,
-   100,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   110,    -1,     6,     7,     8,   115,    10,    11,    12,    13,
-    14,    15,    16,    17,    18,    19,    20,    -1,    -1,    -1,
-    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,    33,
-    34,   186,   187,   188,    -1,   190,   191,   192,    -1,    -1,
-    -1,    -1,    -1,    47,    48,    49,    -1,     6,     7,     8,
-    -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-    19,    20,    -1,    -1,    -1,    24,    -1,    71,    -1,    -1,
-    29,    30,    31,    32,    33,    34,   186,   187,   188,    -1,
-   190,   191,   192,    -1,    -1,    -1,    -1,    -1,    47,    48,
-    49,    -1,    96,    97,    98,    99,   100,   101,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,
-    -1,   115,    71,    -1,    -1,    -1,    19,    -1,    -1,    -1,
-    -1,    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,
-    33,    34,    -1,    -1,    -1,    -1,    -1,    96,    97,    98,
-    99,   100,   101,    -1,    47,    48,    49,    -1,    -1,    -1,
-    -1,   110,    -1,     6,     7,     8,   115,    10,    11,    12,
-    13,    14,    15,    16,    17,    18,    19,    20,    71,    -1,
-    -1,    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,
-    33,    34,   186,   187,   188,    -1,   190,   191,   192,    -1,
-    -1,    -1,    -1,    -1,    47,    48,    49,    -1,     6,     7,
-     8,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
-    18,    19,   115,    -1,    -1,    -1,    24,    -1,    71,    -1,
-    -1,    29,    30,    31,    32,    33,    34,   186,   187,   188,
-    -1,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,    47,
-    48,    49,    -1,    96,    97,    98,    99,   100,   101,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,    -1,    -1,
-    -1,    -1,   115,    71,    -1,    -1,    -1,    -1,    -1,    -1,
+   100,   101,    47,    48,    49,    -1,    -1,    -1,    -1,    -1,
+   110,     6,     7,     8,   114,    10,    11,    12,    13,    14,
+    15,    16,    17,    18,    19,    20,    71,    -1,    -1,    24,
+    -1,    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,
+    -1,   185,   186,   187,    -1,   189,   190,   191,    -1,    -1,
+    -1,    -1,    47,    48,    49,     6,     7,     8,    -1,    10,
+    11,    12,    13,    14,    15,    16,    17,    18,    19,   114,
+    -1,    -1,    -1,    24,    -1,    -1,    71,    -1,    29,    30,
+    31,    32,    33,    34,    -1,   185,   186,   187,    -1,   189,
+   190,   191,    -1,    -1,    -1,    -1,    47,    48,    49,    -1,
+    -1,    96,    97,    98,    99,   100,   101,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,   114,
+    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   186,   187,   188,    -1,   190,    96,    97,
-    98,    99,   100,   101,    19,    -1,    -1,    -1,    -1,    24,
-    -1,    -1,   110,    -1,    -1,    -1,    -1,   115,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,
-    -1,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   186,   187,   188,    -1,   190,   191,   192,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
+   185,   186,   187,    -1,   189,    96,    97,    98,    99,   100,
+   101,    19,    -1,    -1,    -1,    -1,    24,    -1,    -1,   110,
+    -1,    -1,    -1,   114,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    46,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   185,   186,   187,    -1,   189,   190,   191,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   186,   187,
-   188,    -1,   190,   191,   192,    -1,   111,   112,   113,   114,
-    -1,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-   125,    -1,   127,   128,   129,   130,   131,   132,   133,   134,
-   135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-   145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-   155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,   176,   177,   178,   179,    20,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   188,   189,    -1,    -1,    -1,   193,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   185,   186,   187,    -1,   189,   190,
+   191,    -1,    -1,   111,   112,   113,    -1,   115,   116,   117,
+   118,   119,   120,   121,   122,   123,   124,    -1,   126,   127,
+   128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
+   138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
+   148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+   168,   169,   170,   171,   172,   173,   174,   175,   176,   177,
+   178,    20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   187,
+   188,    -1,    -1,    -1,   192,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    44,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   111,   112,   113,   114,
-    -1,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-   125,    -1,   127,   128,   129,   130,   131,   132,   133,   134,
-   135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-   145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-   155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,   176,   177,   178,   179,    -1,    -1,    -1,    -1,    -1,
-    19,    -1,    -1,   188,   189,    24,    -1,    -1,   193,    -1,
-    29,    30,    31,    32,    33,    34,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    47,    48,
-    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   111,   112,   113,    -1,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,   124,    -1,   126,   127,   128,
+   129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
+   139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+   149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
+   159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
+   169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
+    -1,    -1,    -1,    -1,    -1,    19,    -1,    -1,   187,   188,
+    24,    -1,    -1,   192,    -1,    29,    30,    31,    32,    33,
+    34,    -1,    -1,    -1,    -1,    -1,    19,    -1,    -1,    -1,
+    -1,    24,    -1,    47,    48,    49,    29,    30,    31,    32,
+    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    47,    48,    49,    71,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    34,   115,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    44,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   114,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    34,   114,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   185,   186,   187,    -1,   189,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   186,   187,   188,
-    -1,   190,   111,   112,   113,   114,    -1,   116,   117,   118,
-   119,   120,   121,   122,   123,   124,   125,    -1,   127,   128,
-   129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
-   139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-   149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
-   179,    -1,    -1,    -1,    -1,    -1,    -1,   186,   187,   188,
-   189,    -1,   191,   192,   193,    24,    25,    -1,    -1,    -1,
-    29,    30,    31,    32,    33,    34,    24,    -1,    -1,    27,
-    -1,    29,    30,    31,    32,    33,    34,    -1,    47,    48,
-    49,    -1,    -1,    -1,    -1,    -1,    -1,    24,    25,    47,
-    48,    49,    29,    30,    31,    32,    33,    34,    24,    -1,
-    -1,    27,    71,    29,    30,    31,    32,    33,    34,    -1,
-    47,    48,    49,    71,    -1,    -1,    -1,    -1,    -1,    24,
-    25,    47,    48,    49,    29,    30,    31,    32,    33,    34,
-    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    47,    48,    49,    71,   115,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   115,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    71,    24,    -1,    -1,
-    -1,    -1,    29,    30,    31,    32,    33,    34,   115,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    24,   115,
-    47,    48,    49,    29,    30,    31,    32,    33,    34,    24,
-    -1,    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,
-   115,    47,    48,    49,    71,    -1,    -1,   186,   187,   188,
-    -1,   190,    47,    48,    49,    -1,    -1,    -1,   186,   187,
-   188,    24,   190,    -1,    -1,    71,    29,    30,    31,    32,
-    33,    34,    -1,    -1,    -1,    -1,    71,    -1,    -1,   186,
-   187,   188,    -1,   190,    47,    48,    49,    -1,   115,    -1,
-   186,   187,   188,    -1,   190,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,   115,
-    -1,   186,   187,   188,    -1,   190,    -1,    24,    -1,    -1,
-   115,    -1,    29,    30,    31,    32,    33,    34,    -1,    -1,
+    -1,    -1,   185,   186,   187,    -1,   189,   111,   112,   113,
+    -1,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+   124,    -1,   126,   127,   128,   129,   130,   131,   132,   133,
+   134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
+   144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
+   164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
+   174,   175,   176,   177,   178,    -1,    -1,    -1,    -1,    -1,
+    -1,   185,   186,   187,   188,    -1,   190,   191,   192,    24,
+    25,    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,
+    24,    -1,    -1,    27,    -1,    29,    30,    31,    32,    33,
+    34,    -1,    47,    48,    49,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    47,    48,    49,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    24,    -1,    71,    27,    -1,    29,
+    30,    31,    32,    33,    34,    24,    25,    71,    -1,    -1,
+    29,    30,    31,    32,    33,    34,    -1,    47,    48,    49,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    47,    48,
+    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,
+    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   114,    -1,    71,    24,    25,    -1,    -1,    -1,    29,    30,
+    31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    47,    48,    49,    -1,
+    -1,    24,    -1,    -1,   114,    -1,    29,    30,    31,    32,
+    33,    34,    -1,    -1,    -1,   114,    -1,    -1,    -1,    -1,
+    71,    -1,    -1,    -1,    47,    48,    49,    -1,    -1,    -1,
+   185,   186,   187,    -1,   189,    -1,    -1,    -1,    -1,    -1,
+    -1,   185,   186,   187,    -1,   189,    -1,    24,    71,    -1,
+    -1,    -1,    29,    30,    31,    32,    33,    34,    -1,    24,
+    -1,    -1,    -1,   114,    29,    30,    31,    32,    33,    34,
+    47,    48,    49,    -1,    -1,   185,   186,   187,    -1,   189,
+    -1,    -1,    47,    48,    49,    -1,   185,   186,   187,    -1,
+   189,   114,    24,    -1,    71,    -1,    -1,    29,    30,    31,
+    32,    33,    34,    24,    -1,    -1,    71,    -1,    29,    30,
+    31,    32,    33,    34,    -1,    47,    48,    49,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    47,    48,    49,    -1,
+    -1,    -1,    -1,    -1,   185,   186,   187,   114,   189,    71,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,
+    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   185,   186,   187,    -1,   189,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    47,    48,    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   115,    -1,    -1,    -1,    -1,    -1,    -1,   186,
-   187,   188,    -1,   190,    71,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   114,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   114,    -1,    -1,    -1,    -1,    -1,    -1,
+    42,    43,    44,    -1,    -1,    -1,    -1,    -1,   185,   186,
+   187,    -1,   189,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   185,   186,   187,    -1,   189,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   186,   187,   188,    -1,   190,    -1,    -1,    -1,    -1,    -1,
-    -1,   186,   187,   188,    -1,   190,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   115,    -1,
-    -1,    -1,    -1,    -1,    -1,    42,    43,    44,    -1,    -1,
-    -1,    -1,    -1,   186,   187,   188,    -1,   190,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   185,   186,   187,    -1,   189,    -1,    -1,
+    -1,    -1,    -1,    -1,   185,   186,   187,    -1,   189,   111,
+   112,   113,    -1,   115,   116,   117,   118,   119,   120,   121,
+   122,   123,   124,    -1,   126,   127,   128,   129,   130,   131,
+   132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
+   142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
+   162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+   172,   173,   174,   175,   176,   177,   178,    44,    -1,    46,
+    -1,    -1,    -1,    -1,    -1,   187,   188,    -1,    -1,    -1,
+   192,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    68,    69,    70,    -1,    72,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   186,
-   187,   188,    -1,   190,   111,   112,   113,   114,    -1,   116,
-   117,   118,   119,   120,   121,   122,   123,   124,   125,    -1,
+    -1,    -1,    -1,    -1,   111,   112,   113,    -1,   115,   116,
+   117,   118,   119,   120,   121,   122,   123,   124,    -1,   126,
    127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
    137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
    147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
    157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
    167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
-   177,   178,   179,    44,    -1,    46,    -1,    -1,    -1,    -1,
-    -1,   188,   189,    -1,    -1,    -1,   193,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,    70,
-    -1,    72,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   177,   178,    44,    -1,    46,    -1,    -1,    -1,    -1,    -1,
+   187,   188,    -1,    -1,    -1,   192,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    72,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   111,   112,   113,   114,    -1,   116,   117,   118,   119,   120,
-   121,   122,   123,   124,   125,    -1,   127,   128,   129,   130,
-   131,   132,   133,   134,   135,   136,   137,   138,   139,   140,
-   141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
-   151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-   161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,   176,   177,   178,   179,    44,
-    -1,    46,    -1,    -1,    -1,    -1,    -1,   188,   189,    -1,
-    -1,    -1,   193,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
+   112,   113,    -1,   115,   116,   117,   118,   119,   120,   121,
+   122,   123,   124,    -1,   126,   127,   128,   129,   130,   131,
+   132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
+   142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
+   162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+   172,   173,   174,   175,   176,   177,   178,    44,    -1,    -1,
+    -1,    -1,    -1,   185,   186,   187,   188,    -1,    -1,    -1,
+   192,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    68,    69,    70,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   111,   112,   113,   114,
-    -1,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-   125,    -1,   127,   128,   129,   130,   131,   132,   133,   134,
-   135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-   145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-   155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,   176,   177,   178,   179,    44,    -1,    -1,    -1,    -1,
-    -1,   186,   187,   188,   189,    -1,    -1,    -1,   193,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,
-    69,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   111,   112,   113,    -1,   115,   116,
+   117,   118,   119,   120,   121,   122,   123,   124,    -1,   126,
+   127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
+   137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+   147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
+   157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+   167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
+   177,   178,    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   187,   188,    -1,    -1,    -1,   192,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   111,   112,   113,   114,    -1,   116,   117,   118,
-   119,   120,   121,   122,   123,   124,   125,    -1,   127,   128,
-   129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
-   139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-   149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
-   179,    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   188,
-   189,    -1,    -1,    -1,   193,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
-    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,   112,
-   113,   114,    -1,   116,   117,   118,   119,   120,   121,   122,
-   123,   124,   125,    -1,   127,   128,   129,   130,   131,   132,
-   133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
-   143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-   163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,   176,   177,   178,   179,    44,    -1,    46,
-    -1,    -1,    -1,    -1,    -1,   188,   189,    -1,    -1,    -1,
-   193,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    92,    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
+   112,   113,    -1,   115,   116,   117,   118,   119,   120,   121,
+   122,   123,   124,    -1,   126,   127,   128,   129,   130,   131,
+   132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
+   142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
+   162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+   172,   173,   174,   175,   176,   177,   178,    44,    -1,    46,
+    -1,    -1,    -1,    -1,    -1,   187,   188,    -1,    -1,    -1,
+   192,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   111,   112,   113,   114,    -1,   116,
-   117,   118,   119,   120,   121,   122,   123,   124,   125,    -1,
+    -1,    -1,    -1,    -1,   111,   112,   113,    -1,   115,   116,
+   117,   118,   119,   120,   121,   122,   123,   124,    -1,   126,
    127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
    137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
    147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
    157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
    167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
-   177,   178,   179,    44,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   188,   189,    -1,    -1,    -1,   193,    -1,    -1,    -1,
+   177,   178,    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   187,   188,    -1,    -1,    -1,   192,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   111,   112,   113,   114,    -1,   116,   117,   118,   119,   120,
-   121,   122,   123,   124,   125,    -1,   127,   128,   129,   130,
-   131,   132,   133,   134,   135,   136,   137,   138,   139,   140,
-   141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
-   151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-   161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,   176,   177,   178,   179,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   188,   189,    -1,
-    -1,    -1,   193
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
+   112,   113,    -1,   115,   116,   117,   118,   119,   120,   121,
+   122,   123,   124,    -1,   126,   127,   128,   129,   130,   131,
+   132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
+   142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
+   162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+   172,   173,   174,   175,   176,   177,   178,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   187,   188,    -1,    -1,    -1,
+   192
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 
@@ -3259,7 +3237,42 @@ case 9:
 { uentry_clearDecl (); ;
     break;}
 case 10:
-{ uentry_checkDecl (); exprNode_free (yyvsp[0].expr); ;
+{  //drl added 04/02/2002
+     if (willOutputCode  )
+       {
+        exprNode_unparse(yyvsp[0].expr);
+        
+        if (exprNode_isDefined(yyvsp[0].expr) && ( (yyvsp[0].expr)->kind == XPR_INIT) )
+          {
+            if ( ctype_isFunctionPointer ((yyvsp[0].expr)->edata->init->id->typ->type ) )
+              {
+                outputCode(message("%s;\n", ctype_unparseFunctionPointer ((yyvsp[0].expr)->edata->init->id->typ->type, qualList_unparse((yyvsp[0].expr)->edata->init->id->typ->quals), cstring_copy( (yyvsp[0].expr)->edata->init->id->id  ) ))
+                           );
+              }
+            else if ( ctype_isFunction ((yyvsp[0].expr)->edata->init->id->typ->type ) )
+              {
+                outputCode(message("%s;\n", ctype_unparseFunction ((yyvsp[0].expr)->edata->init->id->typ->type, cstring_copy( (yyvsp[0].expr)->edata->init->id->id  ) ))
+                           );
+              }
+            else
+              {
+                outputCode(message("%s;\n", exprNode_unparse((yyvsp[0].expr) ) ));
+              }
+          }
+        
+        else if (exprNode_isDefined(yyvsp[0].expr) )
+          {
+            outputCode(message("%s;\n", exprNode_unparse((yyvsp[0].expr) ) ));
+          }
+        else
+          {
+            /*drl try outputing nothing so that there is not an unnecessary semicolon*/
+            // outputCode(message("%s;\n", exprNode_unparse(($1) ) ));
+          }
+        
+       }
+     
+uentry_checkDecl (); exprNode_free (yyvsp[0].expr); ;
     break;}
 case 11:
 { uentry_clearDecl (); /* evans 2002-02-08: okay to have a null statement */ ;
@@ -3293,7 +3306,7 @@ case 18:
 { yyval.ntyp = idDecl_fixBase (yyvsp[0].ntyp, yyvsp[-2].qtyp); ;
     break;}
 case 20:
-{ yyval.ntyp = yyvsp[0].ntyp; qtype_adjustPointers (yyvsp[-1].pointers, idDecl_getTyp (yyval.ntyp)); ;
+{ yyval.ntyp = yyvsp[0].ntyp; qtype_adjustPointers (yyvsp[-1].count, idDecl_getTyp (yyval.ntyp)); ;
     break;}
 case 21:
 { yyval.ntyp = idDecl_create (yyvsp[0].cname, qtype_unknown ()); ;
@@ -3418,7 +3431,9 @@ case 43:
 { exprChecks_checkEmptyMacroBody (); ;
     break;}
 case 44:
-{ clabstract_declareFunction (yyvsp[0].ntyp); ;
+{  clabstract_declareFunction (yyvsp[0].ntyp);
+ DPRINTF (message ("fcnDefHdr is: %s", idDecl_unparseC(yyvsp[0].ntyp) ) );
+ yyval.ntyp = yyvsp[0].ntyp; ;
     break;}
 case 45:
 { yyval.msconstraint = metaStateConstraint_create (yyvsp[-2].msspec, yyvsp[0].msexpr); ;
@@ -3451,7 +3466,7 @@ case 56:
     break;}
 case 57:
 {
- yyval.con = makeConstraintParse3 (yyvsp[-2].conE, yyvsp[-1].tok, yyvsp[0].conE);
+ yyval.con = constraint_makeConstraintLltok (yyvsp[-2].conE, yyvsp[-1].tok, yyvsp[0].conE);
  DPRINTF(("Done BufConstraint1\n")); ;
     break;}
 case 64:
@@ -3678,7 +3693,7 @@ case 137:
      context_setFunctionDefined (exprNode_loc (yyvsp[0].expr)); 
      exprNode_checkFunction (context_getHeader (),  yyvsp[0].expr); 
      /* DRL 8 8 2000 */
-     
+     DPRINTF(message ("Header: %s\n", idDecl_unparseC(yyvsp[-1].ntyp) ) );
      context_exitFunction ();
    ;
     break;}
@@ -3770,7 +3785,7 @@ case 163:
     ;
     break;}
 case 164:
-{ yyval.expr = exprNode_fromIdentifier (yyvsp[0].entry); ;
+{ int tmpMark1; yyval.expr = exprNode_fromIdentifier (yyvsp[0].entry); ;
     break;}
 case 165:
 { yyval.expr = exprNode_fromUIO (yyvsp[0].cname); ;
@@ -3803,7 +3818,7 @@ case 176:
 { yyval.expr = exprNode_vaArg (yyvsp[-5].tok, yyvsp[-3].expr, yyvsp[-1].qtyp); ;
     break;}
 case 177:
-{ yyval.expr = exprNode_fieldAccess (yyvsp[-4].expr, yyvsp[-2].tok, yyvsp[-1].cname); ;
+{int tmpMark2;  yyval.expr = exprNode_fieldAccess (yyvsp[-4].expr, yyvsp[-2].tok, yyvsp[-1].cname); ;
     break;}
 case 178:
 { yyval.expr = exprNode_arrowAccess (yyvsp[-4].expr, yyvsp[-2].tok, yyvsp[-1].cname); ;
@@ -3857,54 +3872,54 @@ case 195:
 { yyval.cstringlist = cstringList_add (yyvsp[-2].cstringlist, yyvsp[0].cname); ;
     break;}
 case 196:
-{ yyval.cstringlist = yyvsp[-3].cstringlist; ;
-    break;}
-case 197:
 { yyval.cstringlist = cstringList_single (yyvsp[0].cname); ;
     break;}
-case 198:
+case 197:
 { yyval.expr = exprNode_offsetof (yyvsp[-5].qtyp, yyvsp[-2].cstringlist); ;
     break;}
-case 199:
+case 198:
 { context_setProtectVars (); ;
     break;}
-case 200:
+case 199:
 { context_sizeofReleaseVars (); yyval.expr = yyvsp[0].expr; ;
     break;}
-case 201:
+case 200:
 { yyval.expr = exprNode_sizeofType (yyvsp[-1].qtyp); ;
     break;}
-case 202:
+case 201:
 { yyval.expr = exprNode_sizeofExpr (yyvsp[0].expr); ;
     break;}
-case 203:
+case 202:
 { yyval.expr = exprNode_alignofType (yyvsp[-1].qtyp); ;
     break;}
-case 204:
+case 203:
 { yyval.expr = exprNode_alignofExpr (yyvsp[0].expr); ;
     break;}
-case 206:
+case 205:
 { yyval.expr = exprNode_cast (yyvsp[-3].tok, yyvsp[0].expr, yyvsp[-2].qtyp); ;
     break;}
+case 207:
+{ yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
+    break;}
 case 208:
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 209:
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 210:
+case 211:
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 212:
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 213:
+case 214:
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 215:
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 216:
+case 217:
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 218:
@@ -3916,56 +3931,56 @@ case 219:
 case 220:
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 221:
+case 222:
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 223:
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 224:
+case 225:
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 226:
+case 227:
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 228:
+case 229:
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 230:
-{ yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
-    break;}
-case 232:
+case 231:
 { exprNode_produceGuards (yyvsp[-1].expr); 
      context_enterAndClause (yyvsp[-1].expr); 
    ;
     break;}
-case 233:
+case 232:
 { 
      yyval.expr = exprNode_op (yyvsp[-3].expr, yyvsp[0].expr, yyvsp[-2].tok); 
      context_exitAndClause (yyval.expr, yyvsp[0].expr);
    ;
     break;}
-case 235:
+case 234:
 { 
      exprNode_produceGuards (yyvsp[-1].expr);
      context_enterOrClause (yyvsp[-1].expr); 
    ;
     break;}
-case 236:
+case 235:
 { 
      yyval.expr = exprNode_op (yyvsp[-3].expr, yyvsp[0].expr, yyvsp[-2].tok); 
      context_exitOrClause (yyval.expr, yyvsp[0].expr);
    ;
     break;}
-case 238:
+case 237:
 { exprNode_produceGuards (yyvsp[-1].expr); context_enterTrueClause (yyvsp[-1].expr); ;
     break;}
-case 239:
+case 238:
 { context_enterFalseClause (yyvsp[-4].expr); ;
     break;}
-case 240:
+case 239:
 { yyval.expr = exprNode_cond (yyvsp[-6].expr, yyvsp[-3].expr, yyvsp[0].expr); context_exitClause (yyvsp[-6].expr, yyvsp[-3].expr, yyvsp[0].expr); ;
     break;}
+case 241:
+{ yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
+    break;}
 case 242:
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
@@ -3996,109 +4011,136 @@ case 250:
 case 251:
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 252:
-{ yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
-    break;}
-case 254:
+case 253:
 { yyval.expr = exprNode_comma (yyvsp[-2].expr, yyvsp[0].expr); ;
     break;}
-case 255:
+case 254:
 { yyval.expr = exprNode_undefined; ;
     break;}
-case 258:
+case 257:
 { yyval.expr = yyvsp[0].expr; ;
     break;}
-case 259:
+case 258:
 { doVaDcl (); yyval.expr = exprNode_makeError (); ;
     break;}
-case 260:
+case 259:
 { yyval.expr = exprNode_makeError (); ;
     break;}
-case 261:
-{ yyval.expr = exprNode_makeError (); ;
+case 260:
+{
+  if (willOutputCode  )
+    outputCode(message( "%s;\n",  qtypetryToPrintStruct(yyvsp[-2].qtyp) ));
+  
+  yyval.expr = exprNode_makeError (); ;
     break;}
-case 262:
+case 261:
 {
      setProcessingVars (yyvsp[-3].qtyp); 
      processNamedDecl (yyvsp[-1].ntyp); 
    ;
     break;}
-case 263:
-{ 
-     unsetProcessingVars (); 
-     yyval.expr = exprNode_makeEmptyInitialization (yyvsp[-6].ntyp); 
+case 262:
+{
+     ctype ct;
+
+     ct = idDecl_getCtype (yyvsp[-6].ntyp);
+     idDecl_setTyp (yyvsp[-6].ntyp, qtype_copy (yyvsp[-8].qtyp) );
+     idDecl_replaceCtype(yyvsp[-6].ntyp, ct);
+     
+     unsetProcessingVars ();
+     /*drl 04-17-2002 added exprNode_concat */
+     yyval.expr = exprNode_concat (yyvsp[-2].expr, exprNode_makeEmptyInitialization (yyvsp[-6].ntyp) );
      DPRINTF (("Empty initialization: %s", exprNode_unparse (yyval.expr)));
    ;
     break;}
-case 264:
+case 263:
 { setProcessingVars (yyvsp[-4].qtyp); processNamedDecl (yyvsp[-2].ntyp); ;
     break;}
-case 265:
-{ yyval.expr = exprNode_concat (yyvsp[-2].expr, exprNode_makeInitialization (yyvsp[-8].ntyp, yyvsp[-3].expr)); 
+case 264:
+{
+     ctype ct;
+
+     ct = idDecl_getCtype (yyvsp[-8].ntyp);
+     idDecl_setTyp (yyvsp[-8].ntyp, qtype_copy (yyvsp[-10].qtyp) );
+     idDecl_replaceCtype(yyvsp[-8].ntyp, ct);
+
+     yyval.expr = exprNode_concat (yyvsp[-2].expr, exprNode_makeInitialization (yyvsp[-8].ntyp, yyvsp[-3].expr)); 
      unsetProcessingVars ();
    ;
     break;}
-case 266:
+case 265:
 { 
      processNamedDecl (yyvsp[-1].ntyp); 
      yyval.expr = exprNode_makeEmptyInitialization (yyvsp[-1].ntyp);
    ;
     break;}
-case 267:
+case 266:
 { processNamedDecl (yyvsp[-2].ntyp); ;
     break;}
-case 268:
+case 267:
 { yyval.expr = exprNode_makeInitialization (yyvsp[-5].ntyp, yyvsp[0].expr); ;
     break;}
-case 269:
+case 268:
 { setProcessingTypedef (yyvsp[0].qtyp); ;
     break;}
+case 269:
+{
+     if ( willOutputCode  )
+       {
+        outputCode(message( "typedef %s;",
+                            //      qtypetryToPrintStruct($2),
+                            exprNode_unparse(exprNodeList_head (yyvsp[-3].exprlist) )
+                            ) 
+                   );
+       }
+     clabstract_declareType (yyvsp[-3].exprlist, yyvsp[-1].warnclause);   ;
+    break;}
 case 270:
-{ clabstract_declareType (yyvsp[-3].exprlist, yyvsp[-1].warnclause); ;
+{ /* in the ANSI grammar, semantics unclear */ ;
     break;}
 case 271:
 { /* in the ANSI grammar, semantics unclear */ ;
     break;}
 case 272:
-{ /* in the ANSI grammar, semantics unclear */ ;
-    break;}
-case 273:
 { g_expectingTypeName = TRUE; ;
     break;}
-case 274:
+case 273:
 { g_expectingTypeName = TRUE; context_pushLoc (); ;
     break;}
-case 275:
+case 274:
 { yyval.exprlist = yyvsp[-1].exprlist; ;
     break;}
-case 276:
+case 275:
 { yyval.exprlist = exprNodeList_singleton (yyvsp[0].expr); ;
     break;}
-case 277:
+case 276:
 { yyval.exprlist = exprNodeList_push (yyvsp[-3].exprlist, yyvsp[0].expr); ;
     break;}
-case 278:
+case 277:
 { yyval.expr = exprNode_makeError (); ;
     break;}
-case 279:
+case 278:
 { yyval.expr = exprNode_concat (yyvsp[-3].expr, yyvsp[0].expr); ;
     break;}
-case 281:
+case 280:
 { yyval.expr = exprNode_makeInitBlock (yyvsp[-2].tok, yyvsp[-1].exprlist); ;
     break;}
-case 282:
+case 281:
 { yyval.expr = exprNode_makeInitBlock (yyvsp[-3].tok, yyvsp[-2].exprlist); ;
     break;}
-case 283:
+case 282:
 { yyval.expr = exprNode_undefined; ;
     break;}
-case 284:
+case 283:
 { yyval.expr = yyvsp[-1].expr; ;
     break;}
-case 285:
+case 284:
 { yyval.expr = exprNode_undefined; 
                                      /* gcc extension, obsolete since 2.5 */ ;
     break;}
+case 285:
+{ yyval.expr = exprNode_undefined; ;
+    break;}
 case 286:
 { yyval.expr = exprNode_undefined; ;
     break;}
@@ -4109,40 +4151,37 @@ case 288:
 { yyval.expr = exprNode_undefined; ;
     break;}
 case 289:
-{ yyval.expr = exprNode_undefined; ;
-    break;}
-case 290:
 { yyval.exprlist = exprNodeList_singleton (yyvsp[0].expr); ;
     break;}
-case 291:
+case 290:
 { yyval.exprlist = exprNodeList_push (yyvsp[-2].exprlist, yyvsp[0].expr); ;
     break;}
-case 292:
+case 291:
 { setStorageClass (SCEXTERN); yyval.typequal = qual_createExtern (); ;
     break;}
-case 293:
+case 292:
 { yyval.typequal = qual_createInline (); ;
     break;}
-case 294:
+case 293:
 { setStorageClass (SCSTATIC); yyval.typequal = qual_createStatic (); ;
     break;}
-case 295:
+case 294:
 { yyval.typequal = qual_createAuto (); ;
     break;}
-case 296:
+case 295:
 { yyval.typequal = qual_createRegister (); ;
     break;}
-case 297:
+case 296:
 { yyval.stateclause = yyvsp[-1].stateclause; ;
     break;}
-case 298:
+case 297:
 {
      context_setProtectVars (); 
      enterParamsTemp (); 
      sRef_setGlobalScopeSafe (); 
    ;
     break;}
-case 299:
+case 298:
 { 
      exitParamsTemp ();
      sRef_clearGlobalScopeSafe (); 
@@ -4150,13 +4189,13 @@ case 299:
      yyval.stateclause = stateClause_createPlain (yyvsp[-5].tok, yyvsp[-2].srset);
    ;
     break;}
-case 300:
+case 299:
 { yyval.funcclause = yyvsp[-1].funcclause; ;
     break;}
-case 301:
+case 300:
 { yyval.tok = yyvsp[-1].tok; context_enterFunctionHeader (); ;
     break;}
-case 302:
+case 301:
 {
      context_exitFunctionHeader ();
      context_setProtectVars (); 
@@ -4164,7 +4203,7 @@ case 302:
      sRef_setGlobalScopeSafe (); 
    ;
     break;}
-case 303:
+case 302:
 { 
      exitParamsTemp ();
      sRef_clearGlobalScopeSafe (); 
@@ -4172,14 +4211,14 @@ case 303:
      yyval.funcclause = functionClause_createState (stateClause_create (yyvsp[-5].tok, yyvsp[-4].typequal, yyvsp[-2].srset));
    ;
     break;}
-case 304:
+case 303:
 {
      context_setProtectVars (); 
      enterParamsTemp (); 
      sRef_setGlobalScopeSafe (); 
    ;
     break;}
-case 305:
+case 304:
 {
      context_exitFunctionHeader ();
      exitParamsTemp ();
@@ -4203,170 +4242,173 @@ case 305:
      DPRINTF (("FunctionclauseS: %s", functionClause_unparse (yyval.funcclause)));
    ;
     break;}
-case 306:
+case 305:
 { yyval.fcnconstraint = functionConstraint_createBufferConstraint (yyvsp[0].conL); ;
     break;}
-case 307:
+case 306:
 { yyval.fcnconstraint = functionConstraint_createMetaStateConstraint (yyvsp[0].msconstraint); DPRINTF (("Made constraint: %s", functionConstraint_unparse (yyval.fcnconstraint))); ;
     break;}
-case 308:
+case 307:
 { yyval.typequal = qual_createExits (); ;
     break;}
-case 309:
+case 308:
 { yyval.typequal = qual_createMayExit (); ;
     break;}
-case 310:
+case 309:
 { yyval.typequal = qual_createTrueExit (); ;
     break;}
-case 311:
+case 310:
 { yyval.typequal = qual_createFalseExit (); ;
     break;}
-case 312:
+case 311:
 { yyval.typequal = qual_createNeverExit (); ;
     break;}
-case 313:
+case 312:
 { yyval.typequal = qual_createChecked (); ;
     break;}
-case 314:
+case 313:
 { yyval.typequal = qual_createCheckMod (); ;
     break;}
-case 315:
+case 314:
 { yyval.typequal = qual_createUnchecked (); ;
     break;}
-case 316:
+case 315:
 { yyval.typequal = qual_createCheckedStrict (); ;
     break;}
-case 317:
+case 316:
 { yyval.typequal = qual_createOwned (); ;
     break;}
-case 318:
+case 317:
 { yyval.typequal = qual_createDependent (); ;
     break;}
-case 319:
+case 318:
 { yyval.typequal = qual_createYield (); ;
     break;}
-case 320:
+case 319:
 { yyval.typequal = qual_createTemp (); ;
     break;}
-case 321:
+case 320:
 { yyval.typequal = qual_createOnly (); ;
     break;}
-case 322:
+case 321:
 { yyval.typequal = qual_createKeep (); ;
     break;}
-case 323:
+case 322:
 { yyval.typequal = qual_createKept (); ;
     break;}
-case 324:
+case 323:
 { yyval.typequal = qual_createShared (); ;
     break;}
-case 325:
+case 324:
 { yyval.typequal = qual_createUnique (); ;
     break;}
-case 326:
+case 325:
 { yyval.typequal = qual_createNull (); ;
     break;}
-case 327:
+case 326:
 { yyval.typequal = qual_createIsNull (); ;
     break;}
-case 328:
+case 327:
 { yyval.typequal = qual_createRelNull (); ;
     break;}
-case 329:
+case 328:
 { yyval.typequal = qual_createNotNull (); ;
     break;}
-case 330:
+case 329:
 { yyval.typequal = qual_createExposed (); ;
     break;}
-case 331:
+case 330:
 { yyval.typequal = qual_createObserver (); ;
     break;}
-case 332:
+case 331:
 { yyval.typequal = qual_createNullTerminated (); ;
     break;}
-case 333:
+case 332:
 { yyval.typequal = qual_createMetaState (yyvsp[0].annotation); ;
     break;}
-case 334:
+case 333:
 { yyval.typequal = qual_createReturned (); ;
     break;}
-case 335:
+case 334:
 { yyval.typequal = qual_createSef (); ;
     break;}
-case 336:
+case 335:
 { yyval.typequal = qual_createUnused (); ;
     break;}
-case 337:
+case 336:
 { yyval.typequal = qual_createExternal (); ;
     break;}
-case 338:
+case 337:
 { yyval.typequal = qual_createTrueNull (); ;
     break;}
-case 339:
+case 338:
 { yyval.typequal = qual_createFalseNull (); ;
     break;}
-case 340:
+case 339:
 { yyval.typequal = qual_createAbstract (); ;
     break;}
-case 341:
+case 340:
 { yyval.typequal = qual_createConcrete (); ;
     break;}
-case 342:
+case 341:
 { yyval.typequal = qual_createMutable (); ;
     break;}
-case 343:
+case 342:
 { yyval.typequal = qual_createImmutable (); ;
     break;}
-case 344:
+case 343:
 { yyval.typequal = qual_createRefCounted (); ;
     break;}
-case 345:
+case 344:
 { yyval.typequal = qual_createRefs (); ;
     break;}
-case 346:
+case 345:
 { yyval.typequal = qual_createKillRef (); ;
     break;}
-case 347:
+case 346:
 { yyval.typequal = qual_createRelDef (); ;
     break;}
-case 348:
+case 347:
 { yyval.typequal = qual_createNewRef (); ;
     break;}
-case 349:
+case 348:
 { yyval.typequal = qual_createTempRef (); ;
     break;}
-case 350:
+case 349:
 { yyval.typequal = qual_createShort (); ;
     break;}
-case 351:
+case 350:
 { yyval.typequal = qual_createLong (); ;
     break;}
-case 352:
+case 351:
 { yyval.typequal = qual_createSigned (); ;
     break;}
-case 353:
+case 352:
 { yyval.typequal = qual_createUnsigned (); ;
     break;}
-case 354:
+case 353:
 { yyval.typequal = qual_createOut (); ;
     break;}
-case 355:
+case 354:
 { yyval.typequal = qual_createIn (); ;
     break;}
-case 356:
+case 355:
 { yyval.typequal = qual_createPartial (); ;
     break;}
-case 357:
+case 356:
 { yyval.typequal = qual_createSpecial (); ;
     break;}
-case 358:
+case 357:
 { yyval.typequal = qual_createConst (); ;
     break;}
-case 359:
+case 358:
 { yyval.typequal = qual_createVolatile (); ;
     break;}
+case 359:
+{ yyval.typequal = yyvsp[-1].typequal; ;
+    break;}
 case 360:
-{ yyval.typequal = qual_createRestrict (); ;
+{ yyval.typequal = yyvsp[-1].typequal; ;
     break;}
 case 361:
 { yyval.typequal = yyvsp[-1].typequal; ;
@@ -4389,248 +4431,240 @@ case 366:
 case 367:
 { yyval.typequal = yyvsp[-1].typequal; ;
     break;}
-case 368:
-{ yyval.typequal = yyvsp[-1].typequal; ;
-    break;}
-case 369:
-{ yyval.typequal = yyvsp[-1].typequal; ;
-    break;}
-case 376:
+case 374:
 { yyval.ctyp = ctype_makeAnytype (); ;
     break;}
-case 377:
+case 375:
 { yyval.ctyp = ctype_anyintegral; ;
     break;}
-case 378:
+case 376:
 { yyval.ctyp = ctype_unsignedintegral; ;
     break;}
-case 379:
+case 377:
 { yyval.ctyp = ctype_signedintegral; ;
     break;}
-case 383:
+case 381:
 { yyval.ctyp = ctype_fromQual (yyvsp[-1].typequal); ;
     break;}
-case 384:
+case 382:
 { yyval.qtyp = qtype_resolve (yyvsp[-1].qtyp); ;
     break;}
-case 385:
+case 383:
 { yyval.qtyp = yyvsp[0].qtyp; ;
     break;}
-case 386:
+case 384:
 { yyval.qtyp = qtype_mergeAlt (yyvsp[-3].qtyp, yyvsp[-1].qtyp); ;
     break;}
-case 388:
+case 386:
 { yyval.qtyp = qtype_mergeAlt (yyvsp[-2].qtyp, yyvsp[0].qtyp); ;
     break;}
-case 389:
+case 387:
 { yyval.qtyp = qtype_addQual (yyvsp[0].qtyp, yyvsp[-1].typequal); ;
     break;}
-case 390:
+case 388:
 { yyval.qtyp = qtype_addQual (yyvsp[0].qtyp, yyvsp[-1].typequal); ;
     break;}
-case 391:
+case 389:
 { yyval.qtyp = qtype_combine (yyvsp[0].qtyp, yyvsp[-1].ctyp); ;
     break;}
-case 392:
+case 390:
 { yyval.qtyp = qtype_unknown (); ;
     break;}
-case 393:
+case 391:
 { yyval.qtyp = yyvsp[0].qtyp; ;
     break;}
-case 394:
+case 392:
 { yyval.conL = constraintList_undefined; ;
     break;}
-case 395:
+case 393:
 { sRef_setGlobalScopeSafe (); ;
     break;}
-case 396:
+case 394:
 { sRef_clearGlobalScopeSafe (); ;
     break;}
-case 397:
+case 395:
 { ctype ct; ct = declareStruct (yyvsp[-9].cname, yyvsp[-4].flist); /* setGlobalStructInfo(ct, $12);*/ yyval.ctyp = ct; ;
     break;}
-case 398:
+case 396:
 { sRef_setGlobalScopeSafe (); ;
     break;}
-case 399:
+case 397:
 { sRef_clearGlobalScopeSafe (); ;
     break;}
-case 400:
+case 398:
 { yyval.ctyp = declareUnion (yyvsp[-8].cname, yyvsp[-3].flist); ;
     break;}
-case 401:
+case 399:
 { yyval.ctyp = declareStruct (yyvsp[-3].cname, uentryList_new ()); ;
     break;}
-case 402:
+case 400:
 { yyval.ctyp = declareUnion (yyvsp[-3].cname, uentryList_new ()); ;
     break;}
-case 403:
+case 401:
 { sRef_setGlobalScopeSafe (); ;
     break;}
-case 404:
+case 402:
 { sRef_clearGlobalScopeSafe (); ;
     break;}
-case 405:
+case 403:
 { yyval.ctyp = declareUnnamedStruct (yyvsp[-3].flist); ;
     break;}
-case 406:
+case 404:
 { sRef_setGlobalScopeSafe (); ;
     break;}
-case 407:
+case 405:
 { sRef_clearGlobalScopeSafe (); ;
     break;}
-case 408:
+case 406:
 { yyval.ctyp = declareUnnamedUnion (yyvsp[-3].flist); ;
     break;}
-case 409:
+case 407:
 { yyval.ctyp = ctype_createUnnamedStruct (uentryList_new ()); ;
     break;}
-case 410:
+case 408:
 { yyval.ctyp = ctype_createUnnamedUnion (uentryList_new ()); ;
     break;}
-case 411:
+case 409:
 { yyval.ctyp = handleStruct (yyvsp[-1].cname); ;
     break;}
-case 412:
+case 410:
 { yyval.ctyp = handleUnion (yyvsp[-1].cname); ;
     break;}
-case 413:
+case 411:
 { g_expectingTypeName = FALSE; ;
     break;}
-case 415:
+case 413:
 { yyval.flist = uentryList_undefined; /* bogus! */ ;
     break;}
-case 416:
+case 414:
 { yyval.flist = uentryList_mergeFields (yyvsp[-1].flist, yyvsp[0].flist); ;
     break;}
-case 417:
+case 415:
 { yyval.flist = fixUentryList (yyvsp[-2].ntyplist, yyvsp[-4].qtyp); ;
     break;}
-case 418:
+case 416:
 { yyval.flist = fixUnnamedDecl (yyvsp[-2].qtyp); ;
     break;}
-case 419:
+case 417:
 { yyval.ntyplist = idDeclList_singleton (yyvsp[-1].ntyp); ;
     break;}
-case 420:
+case 418:
 { yyval.ntyplist = idDeclList_add (yyvsp[-3].ntyplist, yyvsp[-1].ntyp); ;
     break;}
-case 421:
+case 419:
 { yyval.ntyp = yyvsp[0].ntyp; ;
     break;}
-case 422:
+case 420:
 { yyval.ntyp = idDecl_undefined; ;
     break;}
-case 423:
+case 421:
 { yyval.ntyp = yyvsp[-3].ntyp; ;
     break;}
-case 424:
+case 422:
 { yyval.ctyp = declareUnnamedEnum (yyvsp[-2].enumnamelist); ;
     break;}
-case 425:
+case 423:
 { context_pushLoc (); ;
     break;}
-case 426:
+case 424:
 { context_popLoc (); yyval.ctyp = declareEnum (yyvsp[-5].cname, yyvsp[-2].enumnamelist); ;
     break;}
-case 427:
+case 425:
 { yyval.ctyp = handleEnum (yyvsp[-1].cname); ;
     break;}
-case 428:
+case 426:
 { yyval.enumnamelist = enumNameList_single (yyvsp[0].cname); ;
     break;}
-case 429:
+case 427:
 { yyval.enumnamelist = enumNameList_push (yyvsp[-2].enumnamelist, yyvsp[0].cname); ;
     break;}
-case 431:
+case 429:
 { uentry ue = uentry_makeEnumConstant (yyvsp[0].cname, ctype_unknown);
      usymtab_supGlobalEntry (ue);
      yyval.cname = yyvsp[0].cname;
    ;
     break;}
-case 432:
+case 430:
 { uentry ue = uentry_makeEnumInitializedConstant (yyvsp[-3].cname, ctype_unknown, yyvsp[0].expr);
      usymtab_supGlobalEntry (ue);
      yyval.cname = yyvsp[-3].cname; 
    ;
     break;}
-case 434:
+case 432:
 { yyval.ntyp = idDecl_create (cstring_undefined, qtype_create (yyvsp[0].ctyp)); ;
     break;}
-case 435:
+case 433:
 { 
      qtype qt = qtype_unknown ();
-     qtype_adjustPointers (yyvsp[-1].pointers, qt);
+
+     qtype_adjustPointers (yyvsp[-1].count, qt);
      yyval.ntyp = idDecl_create (cstring_copy (LastIdentifier ()), qt);
    ;
     break;}
+case 434:
+{ yyval.ntyp = yyvsp[0].ntyp; qtype_adjustPointers (yyvsp[-1].count, idDecl_getTyp (yyval.ntyp)); ;
+    break;}
 case 436:
-{ yyval.ntyp = yyvsp[0].ntyp; qtype_adjustPointers (yyvsp[-1].pointers, idDecl_getTyp (yyval.ntyp)); ;
+{ yyval.ntyp = yyvsp[0].ntyp; qtype_adjustPointers (yyvsp[-1].count, idDecl_getTyp (yyval.ntyp)); ;
+    break;}
+case 437:
+{ yyval.entrylist = handleParamTypeList (yyvsp[0].entrylist); ;
     break;}
 case 438:
-{ yyval.ntyp = yyvsp[0].ntyp; qtype_adjustPointers (yyvsp[-1].pointers, idDecl_getTyp (yyval.ntyp)); ;
+{ yyval.entrylist = handleParamIdList (yyvsp[0].entrylist); ;
     break;}
 case 439:
-{ yyval.entrylist = handleParamTypeList (yyvsp[0].entrylist); ;
+{setInnerConstQual(); /* ignored for now */; ;
     break;}
 case 440:
-{ yyval.entrylist = handleParamIdList (yyvsp[0].entrylist); ;
+{ ; ;
     break;}
 case 441:
-{ yyval.typequal = qual_createConst (); ;
+{ ; ;
     break;}
 case 442:
-{ yyval.typequal = qual_createRestrict (); ;
+{ ; ;
     break;}
 case 443:
-{ yyval.typequal = qual_createVolatile (); ;
+{ yyval.count = 1; ;
     break;}
 case 444:
-{ yyval.tquallist = qualList_single (yyvsp[0].typequal); ;
+{ yyval.count = 1; ;
     break;}
 case 445:
-{ yyval.tquallist = qualList_add (yyvsp[-1].tquallist, yyvsp[0].typequal); ;
+{ yyval.count = 1 + yyvsp[0].count; ;
     break;}
 case 446:
-{ yyval.pointers = pointers_create (yyvsp[0].tok); ;
-    break;}
-case 447:
-{ yyval.pointers = pointers_createMods (yyvsp[-1].tok, yyvsp[0].tquallist); ;
+{ yyval.count = 1 + yyvsp[0].count; ;
     break;}
 case 448:
-{ yyval.pointers = pointers_extend (pointers_create (yyvsp[-1].tok), yyvsp[0].pointers); ;
-    break;}
-case 449:
-{ yyval.pointers = pointers_extend (pointers_createMods (yyvsp[-2].tok, yyvsp[-1].tquallist), yyvsp[0].pointers); ;
-    break;}
-case 451:
 { yyval.entrylist = uentryList_add (yyvsp[-2].entrylist, uentry_makeElipsisMarker ()); ;
     break;}
-case 452:
+case 449:
 { yyval.entrylist = uentryList_single (uentry_makeVariableLoc (yyvsp[0].cname, ctype_int)); ;
     break;}
-case 453:
+case 450:
 { yyval.entrylist = uentryList_add (yyvsp[-2].entrylist, uentry_makeVariableLoc (yyvsp[0].cname, ctype_int)); ;
     break;}
-case 454:
+case 451:
 { yyval.entrylist = uentryList_single (uentry_makeElipsisMarker ()); ;
     break;}
-case 456:
+case 453:
 { yyval.entrylist = uentryList_add (yyvsp[-2].entrylist, uentry_makeElipsisMarker ()); ;
     break;}
-case 457:
+case 454:
 { storeLoc (); ;
     break;}
-case 458:
+case 455:
 { yyval.entrylist = uentryList_single (yyvsp[0].oentry); ;
     break;}
-case 459:
+case 456:
 { storeLoc (); ;
     break;}
-case 460:
+case 457:
 { yyval.entrylist = uentryList_add (yyvsp[-3].entrylist, yyvsp[0].oentry); ;
     break;}
-case 461:
+case 458:
 { 
      if (isFlipOldStyle ()) 
        { 
@@ -4643,7 +4677,7 @@ case 461:
      yyval.oentry = makeCurrentParam (idDecl_fixParamBase (yyvsp[-1].ntyp, yyvsp[-2].qtyp)); 
    ;
     break;}
-case 462:
+case 459:
 { 
      idDecl tparam = idDecl_create (yyvsp[0].cname, qtype_unknown ());
 
@@ -4658,316 +4692,316 @@ case 462:
      idDecl_free (tparam);
    ;
     break;}
-case 464:
+case 461:
 { yyval.qtyp = qtype_newBase (yyvsp[-1].qtyp, yyvsp[0].ctyp); ;
     break;}
-case 465:
-{ yyval.ctyp = ctype_adjustPointers (yyvsp[0].pointers, ctype_unknown); ;
+case 462:
+{ yyval.ctyp = ctype_adjustPointers (yyvsp[0].count, ctype_unknown); ;
     break;}
-case 467:
-{ yyval.ctyp = ctype_adjustPointers (yyvsp[-1].pointers, yyvsp[0].ctyp); ;
+case 464:
+{ yyval.ctyp = ctype_adjustPointers (yyvsp[-1].count, yyvsp[0].ctyp); ;
     break;}
-case 468:
+case 465:
 { yyval.ctyp = ctype_unknown; ;
     break;}
-case 470:
+case 467:
 { yyval.ctyp = ctype_expectFunction (yyvsp[-1].ctyp); ;
     break;}
-case 471:
+case 468:
 { yyval.ctyp = ctype_makeArray (ctype_unknown); ;
     break;}
-case 472:
+case 469:
 { yyval.ctyp = ctype_makeFixedArray (ctype_unknown, exprNode_getLongValue (yyvsp[-1].expr)); ;
     break;}
-case 473:
+case 470:
 { yyval.ctyp = ctype_makeInnerArray (yyvsp[-2].ctyp); ;
     break;}
-case 474:
+case 471:
 { yyval.ctyp = ctype_makeInnerFixedArray (yyvsp[-3].ctyp, exprNode_getLongValue (yyvsp[-1].expr)); ;
     break;}
-case 475:
+case 472:
 { yyval.ctyp = ctype_makeFunction (ctype_unknown, uentryList_makeMissingParams ()); ;
     break;}
-case 476:
+case 473:
 { yyval.ctyp = ctype_makeParamsFunction (ctype_unknown, yyvsp[-1].entrylist); ;
     break;}
-case 477:
+case 474:
 { yyval.ctyp = ctype_makeFunction (yyvsp[-3].ctyp, uentryList_makeMissingParams ()); ;
     break;}
-case 478:
+case 475:
 { yyval.ctyp = ctype_makeParamsFunction (yyvsp[-4].ctyp, yyvsp[-1].entrylist); ;
     break;}
-case 488:
+case 485:
 { yyval.expr = yyvsp[0].expr; ;
     break;}
-case 491:
+case 488:
 { yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
-case 492:
+case 489:
 { yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
-case 493:
+case 490:
 { yyval.expr = exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr); ;
     break;}
-case 494:
+case 491:
 { yyval.expr = exprNode_doWhile (yyvsp[-4].expr, yyvsp[-1].expr); ;
     break;}
-case 495:
+case 492:
 { yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
-case 496:
+case 493:
 { context_setProtectVars (); ;
     break;}
-case 497:
+case 494:
 { context_sizeofReleaseVars (); ;
     break;}
-case 498:
+case 495:
 { yyval.expr = exprNode_forPred (yyvsp[-7].expr, yyvsp[-5].expr, yyvsp[-2].expr); 
      context_enterForClause (yyvsp[-5].expr); ;
     break;}
-case 499:
+case 496:
 { setProcessingIterVars (yyvsp[-2].entry); ;
     break;}
-case 500:
+case 497:
 { yyval.expr = exprNode_iterStart (yyvsp[-5].entry, yyvsp[-1].exprlist); ;
     break;}
-case 501:
+case 498:
 { yyval.expr = exprNode_createId (yyvsp[0].entry); ;
     break;}
-case 505:
+case 502:
 { yyval.expr = yyvsp[-1].expr; DPRINTF (("def stmt: %s", exprNode_unparse (yyval.expr))); ;
     break;}
-case 513:
+case 510:
 { yyval.expr = yyvsp[-1].expr; ;
     break;}
-case 514:
+case 511:
 { yyval.expr = exprNode_makeError (); ;
     break;}
-case 515:
+case 512:
 { exprNode_checkIfPred (yyvsp[0].expr); ;
     break;}
-case 516:
+case 513:
 { /* don't: context_exitTrueClause ($1, $2); */
      yyval.expr = exprNode_if (yyvsp[-2].expr, yyvsp[0].expr); 
    ;
     break;}
-case 517:
+case 514:
 { yyval.expr = exprNode_createTok (yyvsp[0].tok); ;
     break;}
-case 518:
+case 515:
 { yyval.expr = exprNode_createTok (yyvsp[0].tok); ;
     break;}
-case 529:
+case 526:
 { yyval.expr = exprNode_addParens (yyvsp[-2].tok, yyvsp[-1].expr); ;
     break;}
-case 531:
+case 528:
 { yyval.expr = exprNode_makeError (); ;
     break;}
-case 532:
+case 529:
 { yyval.expr = exprNode_labelMarker (yyvsp[-1].cname); ;
     break;}
-case 533:
+case 530:
 { yyval.expr = exprNode_notReached (yyvsp[0].expr); ;
     break;}
-case 534:
+case 531:
 { ; ;
     break;}
-case 535:
+case 532:
 { ; ;
     break;}
-case 536:
+case 533:
 { context_enterCaseClause (yyvsp[0].expr); ;
     break;}
-case 537:
+case 534:
 { yyval.expr = exprNode_caseMarker (yyvsp[-2].expr, FALSE); ;
     break;}
-case 538:
+case 535:
 { context_enterCaseClause (yyvsp[0].expr); ;
     break;}
-case 539:
+case 536:
 { yyval.expr = exprNode_caseMarker (yyvsp[-2].expr, TRUE); ;
     break;}
-case 540:
+case 537:
 { context_enterCaseClause (exprNode_undefined); ;
     break;}
-case 541:
+case 538:
 { yyval.expr = exprNode_defaultMarker (yyvsp[-2].tok, FALSE); ;
     break;}
-case 542:
+case 539:
 { context_enterCaseClause (exprNode_undefined); ;
     break;}
-case 543:
+case 540:
 { yyval.expr = exprNode_defaultMarker (yyvsp[-2].tok, TRUE); ;
     break;}
-case 544:
+case 541:
 { yyval.expr = yyvsp[-1].expr; ;
     break;}
-case 545:
+case 542:
 { yyval.expr = yyvsp[0].expr; context_exitInner (yyvsp[0].expr); ;
     break;}
-case 546:
+case 543:
 { yyval.expr = yyvsp[-1].expr; ;
     break;}
-case 547:
+case 544:
 { context_enterInnerContext (); ;
     break;}
-case 548:
+case 545:
 { context_exitInnerPlain (); ;
     break;}
-case 549:
+case 546:
 { context_enterStructInnerContext (); ;
     break;}
-case 550:
+case 547:
 { context_exitStructInnerContext (); ;
     break;}
-case 551:
+case 548:
 { context_exitInnerSafe (); ;
     break;}
-case 552:
+case 549:
 { yyval.expr = exprNode_createTok (yyvsp[0].tok); ;
     break;}
-case 553:
+case 550:
 { yyval.expr = exprNode_notReached (exprNode_createTok (yyvsp[0].tok)); ;
     break;}
-case 554:
+case 551:
 { yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ;
     break;}
-case 555:
+case 552:
 { yyval.expr = exprNode_notReached (exprNode_updateLocation (yyvsp[-2].expr, lltok_getLoc (yyvsp[0].tok))); ;
     break;}
-case 556:
+case 553:
 { yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ;
     break;}
-case 557:
+case 554:
 { yyval.expr = exprNode_notReached (exprNode_updateLocation (yyvsp[-2].expr, lltok_getLoc (yyvsp[0].tok))); ;
     break;}
-case 558:
+case 555:
 { yyval.expr = exprNode_updateLocation (exprNode_concat (yyvsp[-2].expr, yyvsp[-1].expr), lltok_getLoc (yyvsp[0].tok)); ;
     break;}
-case 559:
+case 556:
 { yyval.expr = exprNode_notReached (exprNode_updateLocation (exprNode_concat (yyvsp[-3].expr, yyvsp[-2].expr), 
                                                        lltok_getLoc (yyvsp[-1].tok))); 
    ;
     break;}
-case 560:
+case 557:
 { yyval.expr = exprNode_makeBlock (yyvsp[0].expr); ;
     break;}
-case 561:
+case 558:
 { yyval.expr = exprNode_createTok (yyvsp[0].tok); ;
     break;}
-case 562:
+case 559:
 { yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ;
     break;}
-case 563:
+case 560:
 { yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ;
     break;}
-case 564:
+case 561:
 { yyval.expr = exprNode_updateLocation (exprNode_concat (yyvsp[-2].expr, yyvsp[-1].expr), lltok_getLoc (yyvsp[0].tok)); ;
     break;}
-case 566:
+case 563:
 { yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
-case 567:
+case 564:
 { yyval.expr = yyvsp[0].expr; ;
     break;}
-case 568:
+case 565:
 { yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
-case 569:
+case 566:
 { yyval.expr = yyvsp[0].expr; ;
     break;}
-case 570:
+case 567:
 { yyval.expr = exprNode_concat (yyvsp[-2].expr, yyvsp[0].expr); ;
     break;}
-case 571:
+case 568:
 { yyval.expr = yyvsp[0].expr; ;
     break;}
-case 572:
+case 569:
 { yyval.expr = yyvsp[-2].expr; ;
     break;}
-case 573:
+case 570:
 { yyval.expr = yyvsp[0].expr; ;
     break;}
-case 574:
+case 571:
 { yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
-case 575:
+case 572:
 { yyval.expr = exprNode_createTok (yyvsp[0].tok); ;
     break;}
-case 576:
+case 573:
 { yyval.expr = exprNode_statement (yyvsp[-1].expr, yyvsp[0].tok); ;
     break;}
-case 577:
+case 574:
 { yyval.expr = exprNode_createTok (yyvsp[0].tok); ;
     break;}
-case 578:
+case 575:
 { yyval.expr = exprNode_statement (yyvsp[-1].expr, yyvsp[0].tok); ;
     break;}
-case 579:
+case 576:
 { yyval.expr = exprNode_checkExpr (yyvsp[0].expr); ;
     break;}
-case 580:
+case 577:
 { 
      exprNode_produceGuards (yyvsp[-1].expr); context_enterTrueClause (yyvsp[-1].expr); 
      exprNode_checkIfPred (yyvsp[-1].expr);
      yyval.expr = yyvsp[-1].expr;
    ;
     break;}
-case 581:
+case 578:
 { 
      context_exitTrueClause (yyvsp[-1].expr, yyvsp[0].expr);
      yyval.expr = exprNode_if (yyvsp[-1].expr, yyvsp[0].expr); 
    ;
     break;}
-case 582:
+case 579:
 { context_enterFalseClause (yyvsp[-2].expr); ;
     break;}
-case 583:
+case 580:
 {
      context_exitClause (yyvsp[-4].expr, yyvsp[-3].expr, yyvsp[0].expr);
      yyval.expr = exprNode_ifelse (yyvsp[-4].expr, yyvsp[-3].expr, yyvsp[0].expr); 
    ;
     break;}
-case 584:
+case 581:
 { context_enterSwitch (yyvsp[0].expr); ;
     break;}
-case 585:
+case 582:
 { yyval.expr = exprNode_switch (yyvsp[-3].expr, yyvsp[0].expr); ;
     break;}
-case 586:
+case 583:
 { yyval.expr = exprNode_whilePred (yyvsp[-1].expr); context_enterWhileClause (yyvsp[-1].expr); ;
     break;}
-case 587:
+case 584:
 { yyval.expr = exprNode_whilePred(yyvsp[-1].expr); ;
     break;}
-case 588:
+case 585:
 { context_enterIterClause (); ;
     break;}
-case 589:
+case 586:
 { setProcessingIterVars (yyvsp[-3].entry); ;
     break;}
-case 590:
+case 587:
 { 
      yyval.expr = exprNode_iter (yyvsp[-9].entry, yyvsp[-4].exprlist, yyvsp[-2].expr, yyvsp[-1].entry); 
 
    ;
     break;}
-case 591:
+case 588:
 { yyval.exprlist = exprNodeList_singleton (yyvsp[0].expr); ;
     break;}
-case 592:
+case 589:
 { nextIterParam (); ;
     break;}
-case 593:
+case 590:
 { yyval.exprlist = exprNodeList_push (yyvsp[-3].exprlist, yyvsp[0].expr); ;
     break;}
-case 594:
+case 591:
 { yyval.expr = exprNode_iterExpr (yyvsp[0].expr); ;
     break;}
-case 595:
+case 592:
 { yyval.expr = exprNode_iterId (yyvsp[0].entry); ;
     break;}
-case 596:
+case 593:
 { uentry ue = coerceIterId (yyvsp[0].cname);
 
                      if (uentry_isValid (ue)) 
@@ -4980,39 +5014,48 @@ case 596:
                        }
                    ;
     break;}
-case 597:
+case 594:
 { yyval.expr = exprNode_iterNewId (yyvsp[0].cname); ;
     break;}
-case 599:
+case 596:
 { yyval.expr = exprNode_combineLiterals (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
-case 601:
+case 598:
 { yyval.expr = exprNode_addParens (yyvsp[-2].tok, yyvsp[-1].expr); ;
     break;}
-case 603:
+case 600:
 { yyval.expr = exprNode_arrayFetch (yyvsp[-3].expr, yyvsp[-1].expr); ;
     break;}
-case 604:
+case 601:
 { yyval.expr = exprNode_functionCall (yyvsp[-2].expr, exprNodeList_new ()); ;
     break;}
-case 605:
+case 602:
 { yyval.expr = exprNode_functionCall (yyvsp[-3].expr, yyvsp[-1].exprlist); ;
     break;}
-case 606:
+case 603:
 { yyval.expr = exprNode_vaArg (yyvsp[-5].tok, yyvsp[-3].expr, yyvsp[-1].qtyp); ;
     break;}
-case 607:
-{ yyval.expr = exprNode_fieldAccess (yyvsp[-4].expr, yyvsp[-2].tok, yyvsp[-1].cname); ;
+case 604:
+{int tmpMark1; yyval.expr = exprNode_fieldAccess (yyvsp[-4].expr, yyvsp[-2].tok, yyvsp[-1].cname); ;
     break;}
-case 608:
+case 605:
 { yyval.expr = exprNode_arrowAccess (yyvsp[-4].expr, yyvsp[-2].tok, yyvsp[-1].cname); ;
     break;}
-case 609:
+case 606:
 { yyval.expr = exprNode_postOp (yyvsp[-1].expr, yyvsp[0].tok); ;
     break;}
-case 610:
+case 607:
 { yyval.expr = exprNode_postOp (yyvsp[-1].expr, yyvsp[0].tok); ;
     break;}
+case 609:
+{ yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
+    break;}
+case 610:
+{ yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
+    break;}
+case 611:
+{ yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
+    break;}
 case 612:
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
@@ -5029,21 +5072,18 @@ case 616:
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 617:
-{ yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
-    break;}
-case 618:
-{ yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
+{ yyval.expr = yyvsp[0].expr; ;
     break;}
 case 619:
-{ yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
+{ yyval.expr = exprNode_cast (yyvsp[-3].tok, yyvsp[0].expr, yyvsp[-2].qtyp); ;
     break;}
-case 620:
-{ yyval.expr = yyvsp[0].expr; ;
+case 621:
+{ yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 622:
-{ yyval.expr = exprNode_cast (yyvsp[-3].tok, yyvsp[0].expr, yyvsp[-2].qtyp); ;
+{ yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 624:
+case 623:
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 625:
@@ -5064,10 +5104,10 @@ case 631:
 case 632:
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 634:
+case 633:
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 635:
+case 634:
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 636:
@@ -5079,32 +5119,35 @@ case 637:
 case 639:
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 640:
+case 641:
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 642:
+case 643:
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 644:
+case 645:
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 646:
+case 647:
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
-case 648:
-{ yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
+case 649:
+{ context_enterTrueClause (yyvsp[-1].expr); ;
     break;}
 case 650:
-{ yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
+{ context_enterFalseClause (yyvsp[-4].expr); ;
     break;}
-case 652:
-{ context_enterTrueClause (yyvsp[-1].expr); ;
+case 651:
+{ yyval.expr = exprNode_cond (yyvsp[-6].expr, yyvsp[-3].expr, yyvsp[0].expr); ;
     break;}
 case 653:
-{ context_enterFalseClause (yyvsp[-4].expr); ;
+{ yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 654:
-{ yyval.expr = exprNode_cond (yyvsp[-6].expr, yyvsp[-3].expr, yyvsp[0].expr); ;
+{ yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
+    break;}
+case 655:
+{ yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 656:
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
@@ -5131,22 +5174,22 @@ case 663:
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 664:
-{ yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
+{ yyval.entry = yyvsp[0].entry; ;
     break;}
 case 665:
-{ yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
+{ yyval.entry = uentry_undefined; ;
     break;}
 case 666:
-{ yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
+{ context_enterDoWhileClause (); yyval.tok = yyvsp[0].tok; ;
     break;}
 case 667:
-{ yyval.entry = yyvsp[0].entry; ;
+{ yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); context_exitWhileClause (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
 case 668:
-{ yyval.entry = uentry_undefined; ;
+{ yyval.expr = exprNode_statement (exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr), yyvsp[0].tok); ;
     break;}
 case 669:
-{ context_enterDoWhileClause (); yyval.tok = yyvsp[0].tok; ;
+{ yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); context_exitForClause (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
 case 670:
 { yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); context_exitWhileClause (yyvsp[-1].expr, yyvsp[0].expr); ;
@@ -5155,75 +5198,70 @@ case 671:
 { yyval.expr = exprNode_statement (exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr), yyvsp[0].tok); ;
     break;}
 case 672:
-{ yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); context_exitForClause (yyvsp[-1].expr, yyvsp[0].expr); ;
+{ yyval.expr = exprNode_doWhile (yyvsp[-4].expr, yyvsp[-1].expr); ;
     break;}
 case 673:
-{ yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); context_exitWhileClause (yyvsp[-1].expr, yyvsp[0].expr); ;
+{ yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); context_exitForClause (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
 case 674:
-{ yyval.expr = exprNode_statement (exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr), yyvsp[0].tok); ;
+{ yyval.expr = exprNode_goto (yyvsp[-1].cname); ;
     break;}
 case 675:
-{ yyval.expr = exprNode_doWhile (yyvsp[-4].expr, yyvsp[-1].expr); ;
+{ yyval.expr = exprNode_continue (yyvsp[-1].tok, BADTOK); ;
     break;}
 case 676:
-{ yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); context_exitForClause (yyvsp[-1].expr, yyvsp[0].expr); ;
+{ yyval.expr = exprNode_continue (yyvsp[-2].tok, QINNERCONTINUE); ;
     break;}
 case 677:
-{ yyval.expr = exprNode_goto (yyvsp[-1].cname); ;
+{ yyval.expr = exprNode_break (yyvsp[-1].tok, BADTOK); ;
     break;}
 case 678:
-{ yyval.expr = exprNode_continue (yyvsp[-1].tok, BADTOK); ;
+{ yyval.expr = exprNode_break (yyvsp[-1].tok, QSWITCHBREAK); ;
     break;}
 case 679:
-{ yyval.expr = exprNode_continue (yyvsp[-2].tok, QINNERCONTINUE); ;
+{ yyval.expr = exprNode_break (yyvsp[-1].tok, QLOOPBREAK); ;
     break;}
 case 680:
-{ yyval.expr = exprNode_break (yyvsp[-1].tok, BADTOK); ;
+{ yyval.expr = exprNode_break (yyvsp[-1].tok, QINNERBREAK); ;
     break;}
 case 681:
-{ yyval.expr = exprNode_break (yyvsp[-1].tok, QSWITCHBREAK); ;
+{ yyval.expr = exprNode_break (yyvsp[-1].tok, QSAFEBREAK); ;
     break;}
 case 682:
-{ yyval.expr = exprNode_break (yyvsp[-1].tok, QLOOPBREAK); ;
+{ yyval.expr = exprNode_nullReturn (yyvsp[-1].tok); ;
     break;}
 case 683:
-{ yyval.expr = exprNode_break (yyvsp[-1].tok, QINNERBREAK); ;
-    break;}
-case 684:
-{ yyval.expr = exprNode_break (yyvsp[-1].tok, QSAFEBREAK); ;
+{ yyval.expr = exprNode_return (yyvsp[-1].expr); ;
     break;}
 case 685:
-{ yyval.expr = exprNode_nullReturn (yyvsp[-1].tok); ;
+{ ; ;
     break;}
-case 686:
-{ yyval.expr = exprNode_return (yyvsp[-1].expr); ;
+case 687:
+{ ; ;
     break;}
 case 688:
-{ ; ;
+{
+  ; ;
     break;}
 case 690:
-{ ; ;
-    break;}
-case 693:
 { yyval.cname = uentry_getName (yyvsp[0].entry); ;
     break;}
-case 694:
+case 691:
 { yyval.cname = uentry_getName (yyvsp[0].entry); ;
     break;}
-case 695:
+case 692:
 { yyval.cname = uentry_getName (yyvsp[0].entry); ;
     break;}
-case 696:
+case 693:
 { yyval.cname = yyvsp[0].cname; ;
     break;}
-case 698:
+case 695:
 { yyval.ctyp = ctype_unknown; ;
     break;}
-case 699:
+case 696:
 { yyval.ctyp = exprNode_getType (yyvsp[-1].expr); exprNode_free (yyvsp[-1].expr); ;
     break;}
-case 700:
+case 697:
 { yyval.ctyp = qtype_getType (yyvsp[-1].qtyp); ;
     break;}
 }
index 4a08b45a6a67832750e8596b6b4c274248ae08b9..1d2ceba5f390a3a4151cd482d626867e2eea780f 100644 (file)
@@ -94,7 +94,7 @@ extern void yyerror (char *);
   /*@only@*/ modifiesClause modsclause;
   /*@only@*/ warnClause warnclause;
   /*@only@*/ stateClause stateclause;
-  /*@only@*/ pointers pointers;
+
   /*@only@*/ functionConstraint fcnconstraint; 
 
   /*@only@*/ metaStateConstraint msconstraint;
@@ -183,7 +183,7 @@ extern void yyerror (char *);
 %token <tok> QNOTREACHED
 
 /* type qualifiers: */
-%token <tok> QCONST QRESTRICT QVOLATILE QINLINE QEXTENSION QEXTERN QSTATIC QAUTO QREGISTER
+%token <tok> QCONST QVOLATILE QINLINE QEXTENSION QEXTERN QSTATIC QAUTO QREGISTER
 %token <tok> QOUT QIN QYIELD QONLY QTEMP QSHARED QREF QUNIQUE
 %token <tok> QCHECKED QUNCHECKED QCHECKEDSTRICT QCHECKMOD
 %token <tok> QKEEP QKEPT QPARTIAL QSPECIAL QOWNED QDEPENDENT
@@ -237,7 +237,7 @@ extern void yyerror (char *);
 %token <msinfo> METASTATE_NAME 
 %type <msinfo> metaStateName
 %type <cname> enumerator newId  /*@-varuse@*/ /* yacc declares yytranslate here */
-%type <pointers> pointers /*@=varuse@*/
+%type <count> pointers /*@=varuse@*/
 
 %type <tok> doHeader stateTag conditionTag startConditionClause
 %type <typequal> exitsQualifier checkQualifier stateQualifier 
@@ -251,7 +251,7 @@ extern void yyerror (char *);
 %type <ntyp> namedDecl namedDeclBase optNamedDecl
 %type <ntyp> plainNamedDecl plainNamedDeclBase
 %type <ntyp> structNamedDecl
-%type <ntyp> fcnDefHdrAux plainFcn
+%type <ntyp> fcnDefHdrAux plainFcn fcnDefHdr
 
 %type <oentry> paramDecl 
 %type <entry> id 
@@ -312,8 +312,8 @@ extern void yyerror (char *);
 
 %type <expr> designator designatorList designation
 
-%type <typequal> storageSpecifier typeQualifier typeModifier globQual innerMods
-%type <tquallist> optGlobQuals innerModsList
+%type <typequal> storageSpecifier typeQualifier typeModifier globQual
+%type <tquallist> optGlobQuals
 %type <qtyp> completeType completeTypeSpecifier optCompleteType
 %type <qtyp> completeTypeSpecifierAux altType typeExpression 
 
@@ -330,12 +330,47 @@ externalDefs
  | externalDefs externalDef { context_checkGlobalScope (); }
 
 externalDef
- : fcnDef optSemi { uentry_clearDecl (); } 
+: fcnDef optSemi  { uentry_clearDecl (); } 
  | constantDecl   { uentry_clearDecl (); } 
  | fcnDecl        { uentry_clearDecl (); }
  | iterDecl       { uentry_clearDecl (); } 
  | macroDef       { uentry_clearDecl (); } 
- | initializer    { uentry_checkDecl (); exprNode_free ($1); }
+ | initializer    {  //drl added 04/02/2002
+     if (willOutputCode  )
+       {
+        exprNode_unparse($1);
+        
+        if (exprNode_isDefined($1) && ( ($1)->kind == XPR_INIT) )
+          {
+            if ( ctype_isFunctionPointer (($1)->edata->init->id->typ->type ) )
+              {
+                outputCode(message("%s;\n", ctype_unparseFunctionPointer (($1)->edata->init->id->typ->type, qualList_unparse(($1)->edata->init->id->typ->quals), cstring_copy( ($1)->edata->init->id->id  ) ))
+                           );
+              }
+            else if ( ctype_isFunction (($1)->edata->init->id->typ->type ) )
+              {
+                outputCode(message("%s;\n", ctype_unparseFunction (($1)->edata->init->id->typ->type, cstring_copy( ($1)->edata->init->id->id  ) ))
+                           );
+              }
+            else
+              {
+                outputCode(message("%s;\n", exprNode_unparse(($1) ) ));
+              }
+          }
+        
+        else if (exprNode_isDefined($1) )
+          {
+            outputCode(message("%s;\n", exprNode_unparse(($1) ) ));
+          }
+        else
+          {
+            /*drl try outputing nothing so that there is not an unnecessary semicolon*/
+            // outputCode(message("%s;\n", exprNode_unparse(($1) ) ));
+          }
+        
+       }
+     
+uentry_checkDecl (); exprNode_free ($1); }
  | TSEMI          { uentry_clearDecl (); /* evans 2002-02-08: okay to have a null statement */ }  
  | error          { uentry_clearDecl (); } 
 
@@ -467,7 +502,9 @@ macroDef
  | LLMACRO TENDMACRO /* no stmt */ { exprChecks_checkEmptyMacroBody (); } 
 
 fcnDefHdr
- : fcnDefHdrAux { clabstract_declareFunction ($1); }
+ : fcnDefHdrAux {  clabstract_declareFunction ($1);
+ DPRINTF (message ("fcnDefHdr is: %s", idDecl_unparseC($1) ) );
+ $$ = $1; }
 
 metaStateConstraint
  : metaStateSpecifier TASSIGN metaStateExpression 
@@ -500,7 +537,7 @@ BufConstraintList
 
 BufConstraint
 :  BufConstraintExpr relationalOp BufConstraintExpr {
- $$ = makeConstraintParse3 ($1, $2, $3);
+ $$ = constraint_makeConstraintLltok ($1, $2, $3);
  DPRINTF(("Done BufConstraint1\n")); }
 
 bufferModifier
@@ -727,7 +764,7 @@ fcnDef
      context_setFunctionDefined (exprNode_loc ($2)); 
      exprNode_checkFunction (context_getHeader (),  $2); 
      /* DRL 8 8 2000 */
-     
+     DPRINTF(message ("Header: %s\n", idDecl_unparseC($1) ) );
      context_exitFunction ();
    }
 
@@ -790,7 +827,7 @@ specClauseList
     }
 
 primaryExpr
- : id { $$ = exprNode_fromIdentifier ($1); }
+ : id { int tmpMark1; $$ = exprNode_fromIdentifier ($1); }
  | NEW_IDENTIFIER { $$ = exprNode_fromUIO ($1); } 
  | cconstantExpr
  | TLPAREN expr TRPAREN { $$ = exprNode_addParens ($1, $2); }
@@ -806,7 +843,7 @@ postfixExpr
  | postfixExpr TLPAREN TRPAREN { $$ = exprNode_functionCall ($1, exprNodeList_new ()); }
  | postfixExpr TLPAREN argumentExprList TRPAREN { $$ = exprNode_functionCall ($1, $3); }
  | VA_ARG TLPAREN assignExpr TCOMMA typeExpression TRPAREN { $$ = exprNode_vaArg ($1, $3, $5); }
- | postfixExpr NotType TDOT newId IsType { $$ = exprNode_fieldAccess ($1, $3, $4); }
+ | postfixExpr NotType TDOT newId IsType {int tmpMark2;  $$ = exprNode_fieldAccess ($1, $3, $4); }
  | postfixExpr NotType ARROW_OP newId IsType { $$ = exprNode_arrowAccess ($1, $3, $4); }
  | postfixExpr INC_OP { $$ = exprNode_postOp ($1, $2); }
  | postfixExpr DEC_OP { $$ = exprNode_postOp ($1, $2); }
@@ -831,10 +868,8 @@ unaryExpr
  | offsetofExpr    { $$ = $1; }
 
 fieldDesignator
- : fieldDesignator TDOT newId         { $$ = cstringList_add ($1, $3); }
- | fieldDesignator TLSQBR expr TRSQBR { $$ = $1; }
-   /* evans 2002-07-02: offsetof designators can use array indexes */
- | newId                              { $$ = cstringList_single ($1); }
+ : fieldDesignator TDOT newId { $$ = cstringList_add ($1, $3); }
+ | newId                      { $$ = cstringList_single ($1); }
 
 offsetofExpr
  : COFFSETOF IsType TLPAREN typeExpression NotType TCOMMA fieldDesignator TRPAREN IsType
@@ -961,8 +996,12 @@ initializer
 
 instanceDecl
  : completeTypeSpecifier IsType TSEMI 
-   { $$ = exprNode_makeError (); } 
-     /*
+{
+  if (willOutputCode  )
+    outputCode(message( "%s;\n",  qtypetryToPrintStruct($1) ));
+  
+  $$ = exprNode_makeError (); }
+    /*
      ** This causes r/r conflicts with function definitions.
      ** Instead we need to snarf one first. (gack)
      **
@@ -980,15 +1019,29 @@ instanceDecl
      processNamedDecl ($3); 
    }
    IsType optDeclarators TSEMI IsType 
-   { 
-     unsetProcessingVars (); 
-     $$ = exprNode_makeEmptyInitialization ($3); 
+   {
+     ctype ct;
+
+     ct = idDecl_getCtype ($3);
+     idDecl_setTyp ($3, qtype_copy ($1) );
+     idDecl_replaceCtype($3, ct);
+     
+     unsetProcessingVars ();
+     /*drl 04-17-2002 added exprNode_concat */
+     $$ = exprNode_concat ($7, exprNode_makeEmptyInitialization ($3) );
      DPRINTF (("Empty initialization: %s", exprNode_unparse ($$)));
    }
  | completeTypeSpecifier NotType namedDecl NotType TASSIGN 
    { setProcessingVars ($1); processNamedDecl ($3); }
    IsType init optDeclarators TSEMI IsType 
-   { $$ = exprNode_concat ($9, exprNode_makeInitialization ($3, $8)); 
+   {
+     ctype ct;
+
+     ct = idDecl_getCtype ($3);
+     idDecl_setTyp ($3, qtype_copy ($1) );
+     idDecl_replaceCtype($3, ct);
+
+     $$ = exprNode_concat ($9, exprNode_makeInitialization ($3, $8)); 
      unsetProcessingVars ();
    }
 
@@ -1004,7 +1057,16 @@ namedInitializer
 typeDecl
  : CTYPEDEF completeTypeSpecifier { setProcessingTypedef ($2); } 
    NotType namedInitializerList IsType optWarnClause TSEMI 
-   { clabstract_declareType ($5, $7); }
+   {
+     if ( willOutputCode  )
+       {
+        outputCode(message( "typedef %s;",
+                            //      qtypetryToPrintStruct($2),
+                            exprNode_unparse(exprNodeList_head ($5) )
+                            ) 
+                   );
+       }
+     clabstract_declareType ($5, $7);   } 
  | CTYPEDEF completeTypeSpecifier IsType TSEMI { /* in the ANSI grammar, semantics unclear */ }
  | CTYPEDEF namedInitializerList IsType TSEMI { /* in the ANSI grammar, semantics unclear */ } 
 
@@ -1213,7 +1275,6 @@ definedQualifier
 typeQualifier
  : QCONST IsType       { $$ = qual_createConst (); }
  | QVOLATILE IsType    { $$ = qual_createVolatile (); }
- | QRESTRICT IsType    { $$ = qual_createRestrict (); }
  | definedQualifier IsType { $$ = $1; } 
  | stateQualifier IsType { $$ = $1; } 
  | exitsQualifier IsType { $$ = $1; }
@@ -1366,6 +1427,7 @@ optNamedDecl
  | pointers TYPE_NAME    
    { 
      qtype qt = qtype_unknown ();
+
      qtype_adjustPointers ($1, qt);
      $$ = idDecl_create (cstring_copy (LastIdentifier ()), qt);
    }
@@ -1382,19 +1444,18 @@ genericParamList
  | NotType paramIdList { $$ = handleParamIdList ($2); }  
 
 innerMods
- : QCONST    { $$ = qual_createConst (); }
- | QRESTRICT { $$ = qual_createRestrict (); }
- | QVOLATILE { $$ = qual_createVolatile (); }
+ : QCONST    {setInnerConstQual(); /* ignored for now */; }
+ | QVOLATILE { ; }
 
 innerModsList
- : innerMods { $$ = qualList_single ($1); }
- | innerModsList innerMods { $$ = qualList_add ($1, $2); }
+ : innerMods { ; }
+ | innerModsList innerMods { ; }
 
 pointers
- : TMULT { $$ = pointers_create ($1); }
- | TMULT innerModsList { $$ = pointers_createMods ($1, $2); }
- | TMULT pointers { $$ = pointers_extend (pointers_create ($1), $2); } 
- | TMULT innerModsList pointers { $$ = pointers_extend (pointers_createMods ($1, $2), $3); }
+ : TMULT { $$ = 1; }
+ | TMULT innerModsList { $$ = 1; }
+ | TMULT pointers { $$ = 1 + $2; }
+ | TMULT innerModsList pointers { $$ = 1 + $3; }
 
 paramIdList
  : idList 
@@ -1760,7 +1821,7 @@ postfixIterExpr
  | postfixExpr TLPAREN argumentExprList TRPAREN { $$ = exprNode_functionCall ($1, $3); }
  | VA_ARG TLPAREN assignExpr TCOMMA typeExpression TRPAREN
        { $$ = exprNode_vaArg ($1, $3, $5); }
- | postfixExpr NotType TDOT newId IsType { $$ = exprNode_fieldAccess ($1, $3, $4); }
+ | postfixExpr NotType TDOT newId IsType {int tmpMark1; $$ = exprNode_fieldAccess ($1, $3, $4); }
  | postfixExpr NotType ARROW_OP newId IsType { $$ = exprNode_arrowAccess ($1, $3, $4); }
  | postfixExpr INC_OP { $$ = exprNode_postOp ($1, $2); }
  | postfixExpr DEC_OP { $$ = exprNode_postOp ($1, $2); }
@@ -1895,7 +1956,8 @@ optComma
  | TCOMMA { ; } 
 
 id
- : IDENTIFIER 
+: IDENTIFIER {
+  ; } 
 
 newId
  : NEW_IDENTIFIER 
index a100791f4ec0b2313ce8e45ed2066460ebbea10a..464faee10a8bfc260fbebe4d697bb5518ac8106e 100644 (file)
@@ -957,23 +957,12 @@ checkTypeDecl (uentry e, ctype rep)
                      uentry ue = usymtab_lookupSafe (ye);
 
                      llassert (uentry_isEitherConstant (ue));
-
-                     /* evans 2002-04-22 */
-                     if (ctype_isBool (uentry_getType (ue)))
-                       {
-                         /*
-                         ** If set using -booltrue or -boolfalse, don't change the type.
-                         */
-                       }
-                     else
-                       {
-                         llassertprint (ctype_match (uentry_getType (ue), rrep),
-                                        ("Bad enum: %s / %s",
-                                         uentry_unparse (ue),
-                                         ctype_unparse (rrep)));
-                         
-                         uentry_setType (ue, at);
-                       }
+                     llassertprint (ctype_match (uentry_getType (ue), rrep),
+                                    ("Bad enum: %s / %s",
+                                     uentry_unparse (ue),
+                                     ctype_unparse (rrep)));
+                     
+                     uentry_setType (ue, at);
                    }
                } end_enumNameList_elements;
            }
@@ -1810,7 +1799,7 @@ handleEnum (cstring id)
     }
   else
     {
-      return (ctype_createForwardEnum (id));
+      return (declareEnum (id, enumNameList_new ()));
     }
 }
 
@@ -2165,7 +2154,6 @@ sRef checkStateClausesId (uentry ue)
 
 sRef checkbufferConstraintClausesId (uentry ue)
 {
-  sRef sr;
   cstring s = uentry_rawName (ue);
 
   if (cstring_equalLit (s, "result"))
@@ -2180,14 +2168,8 @@ sRef checkbufferConstraintClausesId (uentry ue)
        }
     }
   
-  DPRINTF (("constraint id: %s", uentry_unparseFull (ue)));
-  sr = uentry_getSref (ue);
-
-  if (sRef_isInvalid (sr) )
-    {
-      llfatalerrorLoc (cstring_makeLiteral("Macro defined constants can not be used in function constraints unless they are specifed with the constant annotation.  To use a macro defined constant include an annotation of the form /*@constant <type> <name>=<value>@*/ somewhere before the function constraint.  This restriction may be removed in future releases if it is determined to be excessively burdensome." ));
-    }
-  return sRef_saveCopy (sr); /*@i523 why the saveCopy? */
+  DPRINTF (("constrant id: %s", uentry_unparseFull (ue)));
+  return sRef_saveCopy (uentry_getSref (ue)); /*@i523 why the saveCopy? */
 }
 
 void checkModifiesId (uentry ue)
@@ -2411,7 +2393,10 @@ static void clabstract_prepareFunction (uentry e)
 sRef clabstract_checkGlobal (exprNode e)
 {
   sRef s;
-  llassert (exprNode_isInitializer (e));
+  
+  // drl 04-19-2002 comment this out for now
+  // parse chanes cause this to fail..
+  //llassert (exprNode_isInitializer (e));
 
   s = exprNode_getSref (e);
   DPRINTF (("Initializer: %s -> %s", exprNode_unparse (e), sRef_unparse (s)));
index cb87d1025e6e0550d5eb06a81a7f2c6e60df90bf..7c3338c7c8e49aefa516b30c7e30a7c82b44867e 100644 (file)
@@ -42,7 +42,7 @@
 /*@access exprNode@*/ /* !!! NO! Don't do this recklessly! */
 /*@-nullderef@*/ /* !!! DRL needs to fix this code! */
 /*@-nullstate@*/ /* !!! DRL needs to fix this code! */
-/*@-temptrans@*/ /* !!! DRL needs to fix this code! */
+
 
 static /*@only@*/ cstring  constraint_printDetailedPostCondition (/*@observer@*/ /*@temp@*/ constraint p_c);
 
@@ -113,7 +113,10 @@ bool constraint_same (constraint c1, constraint c2)
   return TRUE;
 }
 
-constraint makeConstraintParse3 (constraintExpr l, lltok relOp, constraintExpr r)     
+/* 14 May 2002
+   Changed the name old name was  makeConstraintParse3
+*/
+constraint constraint_makeConstraintLltok (constraintExpr l, lltok relOp, constraintExpr r)     
 {
   constraint ret;
   ret = constraint_makeNew ();
@@ -717,6 +720,8 @@ void constraint_printError (constraint c, fileloc loc)
   fileloc errorLoc, temp;
 
 
+  c = constraint_simplify(c);
+  
   /*drl 11/26/2001 avoid printing tautological constraints */
   if (constraint_isAlwaysTrue (c))
     {
index c40a31f2848d4d3b2144e29445d82576068ad77e..e0a9de63606372cb310fbe4e23f5406536137c32 100644 (file)
 # include "exprChecks.h"
 # include "exprNodeSList.h"
 
-/*@-czechfcns@*/
-
-/*@access exprNode@*/ /* !!! NO! Don't do this recklessly! */
-/*@-nullderef@*/ /* !!! DRL needs to fix this code! */
-/*@-nullstate@*/ /* !!! DRL needs to fix this code! */
-/*@-temptrans@*/ /* !!! DRL needs to fix this code! */
-
 
 static ctype constraintExpr_getOrigType (constraintExpr p_e);
 static bool constraintExpr_hasTypeChange(constraintExpr p_e) /*@*/;
@@ -152,7 +145,7 @@ static bool isZeroBinaryOp (constraintExpr expr)
 
 /* change expr + (o - expr) to (expr -expr) */
 
-/*@only@*/ static constraintExpr removeZero (/*@only@*/ /*@returned@*/ constraintExpr expr)
+static constraintExpr removeZero (/*@returned@*/ constraintExpr expr)
 {
   constraintExpr expr1, expr2;
   
@@ -358,7 +351,7 @@ static bool isZeroBinaryOp (constraintExpr expr)
 }
 
 /*@special@*/
-static /*@notnull@*/ constraintExpr constraintExpr_alloc (void) /*@post:isnull result->data@*/
+static constraintExpr constraintExpr_alloc (void) /*@post:isnull result->data@*/
 {
   constraintExpr ret;
   ret = dmalloc (sizeof (*ret) );
@@ -419,6 +412,8 @@ constraintExpr constraintExpr_copy (constraintExpr expr)
   return ret;
 }
 
+/*@access exprNode@*/ /*!!!*/
+
 constraintExpr constraintExpr_makeExprNode (exprNode e)
 {
  sRef s;
@@ -427,7 +422,7 @@ constraintExpr constraintExpr_makeExprNode (exprNode e)
  exprNode t, t1, t2;
  lltok tok;
  
- llassert (e != NULL);
+ llassert (exprNode_isDefined(e) );
  
  data = e->edata;
 
@@ -543,6 +538,7 @@ constraintExpr constraintExpr_makeExprNode (exprNode e)
    }
   return ret;
 }
+/*@noaccess exprNode@*/ /*!!!*/
 
 /*@only@*/ constraintExpr constraintExpr_makeTermExprNode (/*@exposed@*/ exprNode e)
 {
@@ -580,7 +576,7 @@ constraintExpr constraintExpr_makeTermsRef (/*@temp@*/ sRef s)
   return ret;
 }
 
-/*@special@*/ static constraintExpr makeUnaryOpGeneric (void) /*@allocates result->data@*/ /*@defines result->kind@*/
+/*@notnull@*/ /*@special@*/ static constraintExpr makeUnaryOpGeneric (void) /*@allocates result->data@*/ /*@defines result->kind@*/
 {
   constraintExpr ret;
   ret = constraintExpr_alloc();
@@ -2066,20 +2062,30 @@ static constraintExpr  binaryExpr_undump (FILE *f)
 
   os = mstring_create (MAX_DUMP_LINE_LENGTH);
 
-  str = fgets(os, MAX_DUMP_LINE_LENGTH, f);
+  str = reader_readLine (f, os, MAX_DUMP_LINE_LENGTH);
 
+  if (str == NULL)
+  {
+    llfatalerrorLoc (message ("Error while reading internal library") );
+  }
   
   binaryOp = (constraintExprBinaryOpKind) reader_getInt(&str);
   
-  str = fgets(os, MAX_DUMP_LINE_LENGTH, f);
+  str = reader_readLine (f, os, MAX_DUMP_LINE_LENGTH);
+
+  
+  if (str == NULL)
+  {
+    llfatalerrorLoc (message ("Error while reading internal library") );
+  }
 
   reader_checkChar (&str, 'e');
   reader_checkChar (&str, '1');
   
   expr1 = constraintExpr_undump (f);
 
 str = fgets(os, MAX_DUMP_LINE_LENGTH, f);
-
str = reader_readLine (f, os, MAX_DUMP_LINE_LENGTH);
   reader_checkChar (&str, 'e');
   reader_checkChar (&str, '2');  
 
@@ -2121,8 +2127,15 @@ static  constraintExpr  unaryExpr_undump ( FILE *f)
 
   str = mstring_create (MAX_DUMP_LINE_LENGTH);
   os = str;
-  str = fgets(os, MAX_DUMP_LINE_LENGTH, f);
+  
+  str = reader_readLine (f, os, MAX_DUMP_LINE_LENGTH);
+  
 
+  if (str == NULL)
+  {
+    llfatalerrorLoc (message ("Error while reading internal library") );
+  }
+  
   unaryOp = (constraintExprUnaryOpKind) reader_getInt(&str);
   
   expr = constraintExpr_undump (f);
@@ -2139,10 +2152,6 @@ void  constraintExpr_dump (/*@observer@*/ constraintExpr expr,  FILE *f)
   constraintExprKind kind;
   constraintTerm t;
   
-
-  DPRINTF((message("constraintExpr_dump:: dumping constraintExpr %s",
-                  constraintExpr_unparse(expr)
-                  ) ));
   
   kind = expr->kind;
   
@@ -2176,8 +2185,13 @@ void  constraintExpr_dump (/*@observer@*/ constraintExpr expr,  FILE *f)
 
   os = s;
   
-  s = fgets(os, MAX_DUMP_LINE_LENGTH, f);
-
+ s = reader_readLine (f, os, MAX_DUMP_LINE_LENGTH);
+  
+  if (s == NULL)
+  {
+    llfatalerrorLoc (message ("Error while reading internal library") );
+  }
+  
   kind = (constraintExprKind) reader_getInt(&s);
 
   free (os);
@@ -2194,6 +2208,8 @@ void  constraintExpr_dump (/*@observer@*/ constraintExpr expr,  FILE *f)
     case binaryexpr:
       ret = binaryExpr_undump  (f);
       break;
+    default:
+      BADEXIT;
     }
 
   return ret;
@@ -2338,6 +2354,8 @@ static /*@only@*/ constraintExpr constraintExpr_div (/*@only@*/ constraintExpr e
   return e;
 }
 
+/*@access exprNode@*/ /* !!! NO! Don't do this recklessly! */
+
 static /*@only@*/ constraintExpr  constraintTerm_simpleDivTypeExprNode(/*@only@*/ constraintExpr e, ctype ct)
 {
   exprData data;
@@ -2354,6 +2372,8 @@ static /*@only@*/ constraintExpr  constraintTerm_simpleDivTypeExprNode(/*@only@*
   t = constraintExprData_termGetTerm(e->data);
   
   expr = constraintTerm_getExprNode(t);
+
+  llassert(exprNode_isDefined(expr) );
   
   if (expr->kind == XPR_OP)
     {
@@ -2361,6 +2381,7 @@ static /*@only@*/ constraintExpr  constraintTerm_simpleDivTypeExprNode(/*@only@*
       
       t1 = exprData_getOpA (data);
       t2 = exprData_getOpB (data);
+      llassert(exprNode_isDefined(t1) && exprNode_isDefined(t2) );
       tok = exprData_getOpTok (data);
       if (lltok_isMult(tok) )
        {
@@ -2375,7 +2396,10 @@ static /*@only@*/ constraintExpr  constraintTerm_simpleDivTypeExprNode(/*@only@*
                }
              else
                {
-                 ct2 = qtype_getType (exprData_getType(exprData_getSingle (t1->edata)->edata ) );
+                 exprNode temp;
+                 temp = exprData_getSingle (t1->edata);
+                 llassert(exprNode_isDefined(temp) );
+                 ct2 = qtype_getType (exprData_getType(temp->edata) );
                }
              if (ctype_match (ctype_makePointer(ct2), ct) )
                {
@@ -2395,8 +2419,11 @@ static /*@only@*/ constraintExpr  constraintTerm_simpleDivTypeExprNode(/*@only@*
                  ct2 = qtype_getType (exprData_getType (t2->edata));
                }
              else
-               {
-                 ct2 = qtype_getType (exprData_getType(exprData_getSingle (t2->edata)->edata ) );
+               { exprNode temp;
+                 temp = exprData_getSingle (t2->edata);
+                 llassert(exprNode_isDefined(temp) );
+                 
+                 ct2 = qtype_getType (exprData_getType(temp->edata ) );
                }
              if (ctype_match (ctype_makePointer(ct2),ct) )
                {
@@ -2415,6 +2442,8 @@ static /*@only@*/ constraintExpr  constraintTerm_simpleDivTypeExprNode(/*@only@*
   return (constraintExpr_div (e, ct) );
 }
 
+/*@noacces exprNode@*/
+
 static /*@only@*/ constraintExpr simpleDivType (/*@only@*/ constraintExpr e, ctype ct)
 {
   /*@i333*/
index c08063d3ce058c39864a8ee5c57167983410d798..6ab433f0efe1e284e73f64d507fdb338137fc1cf 100644 (file)
@@ -153,7 +153,6 @@ static void exprNode_stmt (/*@temp@*/ exprNode e)
 {
   exprNode snode;
   fileloc loc;
-  cstring s;
   
   if (exprNode_isError(e))
     {
@@ -164,8 +163,8 @@ static void exprNode_stmt (/*@temp@*/ exprNode e)
     e->ensuresConstraints  = constraintList_makeNew(); */
  
   DPRINTF(("expNode_stmt: STMT:"));
-  s =  exprNode_unparse(e);
-  DPRINTF ((message("exprNode_stmt: STMT: %s ", s)));
+
+  DPRINTF ((message("exprNode_stmt: STMT: %s ",  exprNode_unparse(e) ) ) );
   
   if (e->kind == XPR_INIT)
     {
@@ -548,6 +547,7 @@ static void doFor (/*@dependent@*/ exprNode e, /*@dependent@*/ exprNode forPred,
     }
 }
 
+/*@i2323*/
 static /*@dependent@*/ exprNode exprNode_makeDependent(/*@returned@*/  exprNode e)
 {
   /* !!! DRL - this is ridiculous!  Read the manual on memory annotations please! */
@@ -1396,7 +1396,12 @@ void exprNode_exprTraverse (exprNode e, bool definatelv, bool definaterv,  /*@ob
        {
          break;
        }
-      else if (lltok_isExcl_Op (tok))
+      /* drl -04-06-2002 fixed to handle unary + */
+      else if (lltok_isPlus_Op (tok) )
+       {
+         break;
+       } 
+      else if ( lltok_isExcl_Op (tok) )
        {
          break;
        }
index fe65c3c9ea05650b5bd70d3bb181359f081ec15b..cdfe8821a52ed904f0e14a5348b82a0ca2e346be 100644 (file)
@@ -36,7 +36,7 @@
 /*@-nullderef@*/ /* !!! DRL needs to fix this code! */
 /*@-nullstate@*/ /* !!! DRL needs to fix this code! */
 /*@-nullpass@*/ /* !!! DRL needs to fix this code! */
-/*@-temptrans@*/ /* !!! DRL needs to fix this code! */
+
 
 /*@iter constraintList_elements_private_only (sef constraintList x, yield only constraint el); @*/
 # define constraintList_elements_private_only(x, m_el) \
@@ -288,14 +288,10 @@ constraintList_print (/*@temp@*/ constraintList s) /*@*/
          cstring temp1;
 
          if (context_getFlag (FLG_ORCONSTRAINT))
-           {
              temp1 = constraint_printOr(current);
-           }
-         else
-           {
-             temp1 = constraint_print (current);
-           }
-         type = message ("%q %q\n", type, temp1 );
+           else
+             temp1 = constraint_print(current);
+         type = message ("%q %q ", type, temp1 );
        }
 
       if (first)
@@ -305,7 +301,7 @@ constraintList_print (/*@temp@*/ constraintList s) /*@*/
        }
       else
        {
-         st = message ("%q, %q", st, type);
+         st = message ("%q /\\ %q", st, type);
        }
     } 
 
index 9cbc788d2feed66d4cdd39d7e2cdf0a3987efddd..97f3fbd3654e44f612291cde7e4f98012b122637 100644 (file)
 # include "exprNodeSList.h"
 
 
-/*@access constraint, exprNode @*/ /*!!! NO! Don't do this so recklessly - design your code more carefully so you don't need to! */
+/*@access constraint@*/ 
 
 /*@-nullderef@*/ /* !!! DRL needs to fix this code! */
 /*@-nullstate@*/ /* !!! DRL needs to fix this code! */
 /*@-nullpass@*/ /* !!! DRL needs to fix this code! */
-/*@-temptrans@*/ /* !!! DRL needs to fix this code! */
+
 
 
 
@@ -743,6 +743,8 @@ static bool arithType_canResolve (arithType ar1, arithType ar2)
   return FALSE;          
 }
 
+
+
 /*checks for the case expr2 == sizeof buf1  and buf1 is a fixed array*/
 static bool  sizeofBufComp(constraintExpr buf1, constraintExpr expr2)
 {
@@ -762,10 +764,15 @@ static bool  sizeofBufComp(constraintExpr buf1, constraintExpr expr2)
 
   e = constraintTerm_getExprNode(ct);
 
+  /*@access exprNode@*/ /*!!! NO! Don't do this so recklessly - design your code more carefully so you don't need to! */
+  
   if (e->kind != XPR_SIZEOF)
     return FALSE;
   
   t = exprData_getSingle (e->edata);
+
+  /*@noaccess exprNode@*/
+  
   s1 = exprNode_getSref (t);
 
   s2 = constraintTerm_getsRef(constraintExprData_termGetTerm(buf1->data) );
index 868c9d551622252f1e82f7cac0020eefc82b9f06..08c840a99d0718519efd7cb97272d768e60d384d 100644 (file)
 # include "exprChecks.h"
 # include "exprNodeSList.h"
 
-/*@-czechfcns@*/
-/*@-nullderef@*/ /* !!! DRL needs to fix this code! */
-/*@-nullstate@*/ /* !!! DRL needs to fix this code! */
-/*@-nullpass@*/ /* !!! DRL needs to fix this code! */
-/*@-temptrans@*/ /* !!! DRL needs to fix this code! */
 
-/*@access exprNode@*/ /* !!! NO! Don't do this recklessly! */
+
 
 bool constraintTerm_isDefined (constraintTerm t)
 {
@@ -123,6 +118,7 @@ bool constraintTerm_isExprNode (/*@observer@*/ /*@temp@*/ constraintTerm c) /*@*
   return FALSE;
 }
 
+/*@access exprNode@*/ /* !!! NO! Don't do this recklessly! */
 
 int constraintTerm_getInitBlockLength (/*@observer@*/ /*@temp@*/ constraintTerm c) /*@*/
 {
@@ -151,7 +147,7 @@ int constraintTerm_getInitBlockLength (/*@observer@*/ /*@temp@*/ constraintTerm
   return ret;  
 }
 
-
+/*@noaccess exprNode@*/
 
 bool constraintTerm_isStringLiteral (constraintTerm c) /*@*/
 {
@@ -581,10 +577,6 @@ void constraintTerm_dump ( /*@observer@*/ constraintTerm t,  FILE *f)
            fprintf(f, "Param %s %d\n", cstring_toCharsSafe(ctString), (int) param );
            cstring_free(ctString);
          }
-       else if (sRef_isField (s) )
-         {
-           fprintf(f, "sRef_dump %s\n", cstring_toCharsSafe(sRef_dump(s)) );
-         }
        else
          {
            u = sRef_getUentry(s);
@@ -634,6 +626,11 @@ void constraintTerm_dump ( /*@observer@*/ constraintTerm t,  FILE *f)
        sRef s;
        char * term;
        term = reader_getWord(&str);
+
+       if (term == NULL)
+         {
+           llfatalbug(message("Error reading internal library.  File may be currupted"));
+         }
        
        if (strcmp (term, "Result") == 0 )
          {
@@ -648,6 +645,11 @@ void constraintTerm_dump ( /*@observer@*/ constraintTerm t,  FILE *f)
 
            reader_checkChar(&str, ' ');
            str2  = reader_getWord(&str);
+           if (str2 ==  NULL)
+             {
+               llfatalbug(message("Error reading internal library.  File may be currupted"));
+             }
+           
            param = reader_getInt(&str);
 
            ostr2 = str2;
@@ -655,12 +657,7 @@ void constraintTerm_dump ( /*@observer@*/ constraintTerm t,  FILE *f)
            s = sRef_makeParam (param, t, stateInfo_makeLoc (g_currentloc));
            free (ostr2);
          }
-       else if (strcmp (term, "sRef_dump" ) == 0 )
-         {
-           reader_checkChar(&str, ' ');
-           s = sRef_undump (&str);
-         }
-       else  /* This must be an identified that we can search for in usymTab */
+       else  /* This must be an identifier that we can search for in usymTab */
          {
            cstring termStr = cstring_makeLiteralTemp(term);
 
@@ -681,6 +678,12 @@ void constraintTerm_dump ( /*@observer@*/ constraintTerm t,  FILE *f)
        cstring termStr;
                
        term = reader_getWord(&str);
+
+       if (term == NULL)
+         {
+           llfatalbug(message("Error reading internal library.  File may be currupted."));
+         }
+       
        /* This must be an identifier that we can search for in usymTab */
        termStr = cstring_makeLiteralTemp(term);
        
@@ -703,6 +706,7 @@ void constraintTerm_dump ( /*@observer@*/ constraintTerm t,  FILE *f)
       break;
       
     default:
+       llfatalbug(message("Error reading internal library.  File may be currupted."));
       BADEXIT;
     }
   free (os);
index ba5b7adaa4c967bd6d2e6c6bd2db786d2d05fa38..117dcc758efc12f98ed9708d91d5683ea9c9a4ef 100644 (file)
@@ -42,6 +42,7 @@
 
 # include "exprChecks.h"
 # include "filelocStack.h"
+# include "fileIdList.h"
 # include "llmain.h"
 # include "intSet.h"
 # include "osd.h"
@@ -926,8 +927,9 @@ context_resetAllFlags (void)
     Changed for 3.0.0.19
    */
 
-  /* commenting ou until some output issues are fixed */
-  /* gc.flags[FLG_ORCONSTRAINT] = TRUE;*/
+  /* commenting out until some output issues are fixed */
+
+  /*  gc.flags[FLG_ORCONSTRAINT] = TRUE;*/
   
   gc.flags[FLG_CONSTRAINTLOCATION] = TRUE;
 
@@ -935,12 +937,11 @@ context_resetAllFlags (void)
   gc.flags[FLG_WARNSYSFILES] = TRUE;
 
   /*
-  ** On by default for Win32, but not Unix
+  ** On by default for Win32, but not Unix (to support MS/VC++ error message format).
   */
 
 # ifdef WIN32
   gc.flags[FLG_PARENFILEFORMAT] = TRUE;
-  gc.flags[FLG_CASEINSENSITIVEFILENAMES] = TRUE;
 # endif
 }
 
@@ -2897,20 +2898,6 @@ context_setString (flagcode flag, cstring val)
 
   switch (flag)
     {
-      /*
-    case FLG_BOOLTRUE:
-      usymtab_supGlobalEntry 
-       (uentry_makeConstantValue (val, ctype_bool, 
-                                  fileloc_getBuiltin (), TRUE, 
-                                  multiVal_makeInt (1)));
-      break;
-    case FLG_BOOLFALSE:
-      usymtab_supGlobalEntry 
-       (uentry_makeConstantValue (val, ctype_bool, 
-                                  fileloc_getBuiltin (), FALSE, 
-                                  multiVal_makeInt (0)));
-      break;
-      */
     case FLG_MESSAGESTREAM:
     case FLG_WARNINGSTREAM:
     case FLG_ERRORSTREAM:
@@ -3023,13 +3010,13 @@ context_setString (flagcode flag, cstring val)
       {
        ; /* Okay not handle everything in this switch */
       }
-  /*@i523@*/ } /* evans 2002-03-24: splintme reports a spurious (I think) warning here...need to look into it */
+    } /* evans 2002-03-24: splintme reports a spurious (I think) warning here...need to look into it */
   
   if (cstring_length (val) >= 1
       && cstring_firstChar (val) == '\"')
     {
       llerror_flagWarning (message
-                          ("Setting %s to string beginning with \".  You probably "
+                          ("setting %s to string beginning with \".  You probably "
                            "don't meant to have the \"'s.",
                            flagcode_unparse (flag)));
     }
@@ -3124,6 +3111,7 @@ void context_initMod (void)
   end_allFlagCodes ;
   
   usymtab_initMod ();
+
   context_resetAllFlags ();
 
   assertSet (gc.flags); /* Can't use global in defines */
@@ -3704,9 +3692,7 @@ context_inFunctionName (void)
 void
 context_userSetFlag (flagcode f, bool b)
 {
-  DPRINTF (("set flag: %s / %s", 
-           flagcode_unparse (f),
-           bool_unparse (context_getFlag (f))));
+  DPRINTF (("set flag: %s", flagcode_unparse (f)));
 
   if (f == FLG_NEVERINCLUDE && b)
     {
@@ -3714,7 +3700,7 @@ context_userSetFlag (flagcode f, bool b)
        {
          llerror_flagWarning 
            (cstring_makeLiteral
-            ("Setting +neverinclude after +exportheader.  "
+            ("setting +neverinclude after +exportheader.  "
              "Turning off exportheader, since headers are not checked "
              "when +neverinclude is used."));
 
@@ -3729,7 +3715,7 @@ context_userSetFlag (flagcode f, bool b)
            {
              llerror_flagWarning
                (cstring_makeLiteral
-                ("Setting +exportheader after +neverinclude.  "
+                ("setting +exportheader after +neverinclude.  "
                  "Not setting exportheader, since headers are not checked "
                  "when +neverinclude is used."));
              gc.flags[FLG_EXPORTHEADER] = FALSE;
@@ -3748,7 +3734,7 @@ context_userSetFlag (flagcode f, bool b)
          && !flagcode_hasArgument (f))
        {
          llerror_flagWarning 
-           (message ("Setting %s%s redundant with current value", 
+           (message ("setting %s%s redundant with current value", 
                      cstring_makeLiteralTemp (b ? "+" : "-"),
                      flagcode_unparse (f)));
        }
@@ -3759,7 +3745,7 @@ context_userSetFlag (flagcode f, bool b)
       if (!context_getFlag (FLG_WARNUSE))
        {
          llerror_flagWarning
-           (message ("Flag +%s is canceled by -warnuse",
+           (message ("flag +%s is canceled by -warnuse",
                      flagcode_unparse (f)));
        }
     }
@@ -3771,7 +3757,7 @@ context_userSetFlag (flagcode f, bool b)
          && gc.library != f)
        {
          llerror_flagWarning 
-           (message ("Selecting library %s after library %s was "
+           (message ("selecting library %s after library %s was "
                      "selected (only one library may be used)",
                      flagcode_unparse (f),
                      flagcode_unparse (gc.library)));
@@ -3783,7 +3769,7 @@ context_userSetFlag (flagcode f, bool b)
            {
              llerror_flagWarning
                (cstring_makeLiteral
-                ("Selecting unix library.  Unix library is "
+                ("selecting unix library.  Unix library is "
                  "ad hoc addition to POSIX library.  Recommend "
                  "use +posixlib to select POSIX library instead. "
                  "Use -warnunixlib to suppress this message."));
@@ -3797,7 +3783,7 @@ context_userSetFlag (flagcode f, bool b)
     {
       llerror_flagWarning
        (message
-        ("Setting +%s will not produce warnings with -namechecks. "
+        ("setting +%s will not produce warnings with -namechecks. "
          "Must set +namechecks also.",
          flagcode_unparse (f)));
     }
index 7534384a22d2cdd01440c391b13faa538458a9fd..7055789ffbf64fc88124bc2110d1512ab5822150 100644 (file)
@@ -74,10 +74,7 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 # include <time.h>
 # else
 # ifndef VMS
-/*
-** evans 2002-07-03: exception for WATCOM 10.6 compiler suggest by Adam Clarke 
-*/
-# if !defined (USG) && !defined (__WATCOMC__)
+# ifndef USG
 # include <time.h> /* Reported by Paul Smith */
 # include <sys/time.h>
 # include <sys/resource.h>
@@ -110,9 +107,6 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 /*@+boolint@*/
 /*@+charint@*/
 
-/* Warnings for using sprintf - suppress them all for now... */
-/*@-bufferoverflowhigh@*/
-
 #define NO_SHORTNAMES
 
 # ifdef open
@@ -249,13 +243,7 @@ static int cpp_peekN (cppReader *p_pfile, int p_n) /*@*/ ;
 /*@function static void cppReader_putCharQ (cppReader *p_file, char p_ch)
                     modifies *p_file; @*/
 # define cppReader_putCharQ(PFILE, CH) (*(PFILE)->limit++ = (CH))
-/*
-static void cppReader_putCharQ (cppReader *p_file, char p_ch)
-{
-  fprintf (stderr, "put char: %c\n", p_ch);
-  (*(p_file)->limit++ = (p_ch));
-}
-*/
+
 /* Append character CH to PFILE's output buffer.  Make space if need be. */
 
 /*@function static void cppReader_putChar (sef cppReader *p_file, char p_ch)
@@ -1181,18 +1169,8 @@ copy_rest_of_line (cppReader *pfile)
        case EOF:
          goto end_directive;
        case '\\':
-         /*
-         ** Patch from Brian St. Pierre for handling MS-DOS files.
-         */
-
-         if (cppReader_peekC (pfile) == '\n'
-             || cppReader_peekC (pfile) == '\r')
+         if (cppReader_peekC (pfile) == '\n')
            {
-             if (cppReader_peekC (pfile) == '\r')
-               {
-                 cppReader_forward (pfile, 1);
-               }
-             
              cppReader_forward (pfile, 1);
              continue;
            }
@@ -2791,6 +2769,7 @@ do_defineAux (cppReader *pfile, struct directive *keyword,
     /*@i2@*/
   DPRINTF (("Define aux: %d", noExpand));
   /*@i2@*/
+
   mdef = create_definition (buf, limit, pfile, keyword == NULL, noExpand);
 
   if (mdef.defn == 0)
@@ -2900,6 +2879,16 @@ do_define (cppReader *pfile, struct directive *keyword,
           /*@exposed@*/ char *buf, char *limit)
 {
   DPRINTF (("Regular do define"));
+  
+  /* drl added 04-26-2002 */
+  
+  if ( context_getFlag (FLG_GENERATECODE) && (keyword !=NULL) )
+    {
+      outputCode(message( "#define %s\n",buf ) );
+    }
+  
+  
+
   return do_defineAux (pfile, keyword, buf, limit, FALSE);
 }
   /*@i2@*/
@@ -2955,7 +2944,6 @@ cppReader_pushBuffer (cppReader *pfile, char *buffer, size_t length)
 
   buf--;
   memset ((char *) buf, 0, sizeof (*buf));
-  DPRINTF (("Pushing buffer: %s", cstring_copyLength (buffer, length)));
   CPPBUFFER (pfile) = buf;
 
   buf->if_stack = pfile->if_stack;
@@ -3030,8 +3018,6 @@ cpp_expand_to_buffer (cppReader *pfile, char *buf, size_t length)
   char *limit = buf + length;
   char *buf1, *p1, *p2;
 
-  DPRINTF (("Expand to buffer: %s", cstring_copyLength (buf, length)));
-
   /* evans - 2001-08-26
   ** length is unsigned - this doesn't make sense
   if (length < 0)
@@ -4066,7 +4052,7 @@ cpplib_macroExpand (cppReader *pfile, /*@dependent@*/ hashNode hp)
 
   cppBuffer_getLineAndColumn (cppReader_fileBuffer (pfile), &end_line, &end_column);
   DPRINTF (("Expand macro: %d:%d", end_line, end_column));
-  
+
   /* If macro wants zero args, we parsed the arglist for checking only.
      Read directly from the macro definition.  */
 
@@ -4413,7 +4399,7 @@ cpplib_macroExpand (cppReader *pfile, /*@dependent@*/ hashNode hp)
   /* Now put the expansion on the input stack
      so our caller will commence reading from it.  */
   DPRINTF (("Pushing expansion: %s", cstring_copyLength (xbuf, xbuf_len)));
-  
+
   if (end_line != start_line)
     {
       /* xbuf must have enough newlines */
@@ -4452,13 +4438,11 @@ cpplib_macroExpand (cppReader *pfile, /*@dependent@*/ hashNode hp)
   DPRINTF (("Pushing expansion: %s", cstring_copyLength (xbuf, xbuf_len)));
 
   push_macro_expansion (pfile, xbuf, xbuf_len, hp);
-  DPRINTF (("After pushing expansion: %s", cstring_copyLength (xbuf, xbuf_len)));
   cppReader_getBufferSafe (pfile)->has_escapes = 1;
 
   /* Pop the space we've used in the token_buffer for argument expansion.  */
   cppReader_setWritten (pfile, old_written);
-  DPRINTF (("Done set written"));
-  
+
   /* Recursive macro use sometimes works traditionally.
      #define foo(x,y) bar (x (y,0), y)
      foo (foo, baz)  */
@@ -4508,10 +4492,8 @@ push_macro_expansion (cppReader *pfile, char *xbuf, size_t xbuf_len,
          || xbuf[2] == '\"'))
   {
     llassert (mbuf->cur != NULL);
-    DPRINTF (("Eating: %c", xbuf[2]));
     mbuf->cur += 2;
   }
-  
 }
 
 
@@ -4842,6 +4824,29 @@ do_include (cppReader *pfile, struct directive *keyword,
          
          if (redundant_include_p (pfile, fname))
            {
+                /*drl 04-26-2002
+               Needed to duplicate this code so that
+               system library includes would print out right
+             */
+             if ( context_getFlag (FLG_GENERATECODE) )
+               {
+                 /*drl 04-15-2002 for .h files we just output an include
+                   for other files we output code from the included file
+                 */
+                 if (cstring_isDotH (cstring_fromChars(fbeg) ) )
+                   {
+                     if (angle_brackets)
+                       {
+                         outputCode(message( "#include <%s>\n",
+                                             cstring_fromChars(fbeg) ));
+                       }
+                     else
+                       {
+                         outputCode(message( "#include \"%s\"\n",
+                                             cstring_fromChars(fbeg) ));
+                       }
+                   }
+               }
              cstring_free (fname);
              return 0;
            }
@@ -4852,6 +4857,31 @@ do_include (cppReader *pfile, struct directive *keyword,
          
          if (f == IMPORT_FOUND)
            {
+             /*drl 04-25-2002
+               Needed to duplicate this code so that
+               system library includes would print out right
+             */
+             if ( context_getFlag (FLG_GENERATECODE) )
+               {
+                 /*drl 04-15-2002 for .h files we just output an include
+                   for other files we output code from the included file
+                 */
+                 if (cstring_isDotH (cstring_fromChars(fbeg) ) )
+                   {
+                     if (angle_brackets)
+                       {
+                         outputCode(message( "#include <%s>\n",
+                                             cstring_fromChars(fbeg) ));
+                       }
+                     else
+                       {
+                         outputCode(message( "#include \"%s\"\n",
+                                             cstring_fromChars(fbeg) ));
+                       }
+                   }
+                 
+               }
+             
              return 0;                 /* Already included this file */
            }
 #ifdef EACCES
@@ -4868,6 +4898,29 @@ do_include (cppReader *pfile, struct directive *keyword,
            }
        }
     }
+
+
+  /*drl start modifictions 03-19-2002*/
+  if ( context_getFlag (FLG_GENERATECODE) )
+    {
+      /*drl 04-15-2002 for .h files we just output an include
+       for other files we output code from the included file
+      */
+      if (cstring_isDotH (cstring_fromChars(fbeg) ) )
+       {
+         if (angle_brackets)
+           {
+             outputCode(message( "#include <%s>\n",
+                                 cstring_fromChars(fbeg) ));
+           }
+         else
+           {
+             outputCode(message( "#include \"%s\"\n",
+                                 cstring_fromChars(fbeg) ));
+           }
+       }
+    }
+  /*drl 04-18-2002 moved the above block */
   
   if (f < 0)
     {
@@ -6026,7 +6079,7 @@ get_next:
          cppBuffer_getLineAndColumn (cppReader_fileBuffer (pfile),
                                   &start_line, &start_column);
          c = skip_comment (pfile, &newlines);
-         DPRINTF (("c = %c", c));
+
          if (opts->put_out_comments && (c == '/' || c == EOF))
            {
              assertSet (&start_mark);
@@ -6088,12 +6141,10 @@ get_next:
                                      &start_line, &start_column);
          old_written = cpplib_getWritten (pfile);
        string:
-         DPRINTF (("Put char: %c", c));
          cppReader_putChar (pfile, c);
          while (TRUE)
            {
              int cc = cppReader_getC (pfile);
-             DPRINTF (("cc: %c", c));
              if (cc == EOF)
                {
                  if (cppBuffer_isMacro (CPPBUFFER (pfile)))
@@ -6137,7 +6188,6 @@ get_next:
                    }
                  /*@loopbreak@*/ break;
                }
-             DPRINTF (("putting char: %c", cc));
              cppReader_putChar (pfile, cc);
              switch (cc)
                {
@@ -6297,11 +6347,9 @@ get_next:
          return CPP_OTHER;
 
        case '@':
-         DPRINTF (("Macro @!"));
          if (cppReader_getBufferSafe (pfile)->has_escapes)
            {
              c = cppReader_getC (pfile);
-             DPRINTF (("got c: %c", c));
              if (c == '-')
                {
                  if (pfile->output_escapes)
@@ -6511,23 +6559,12 @@ get_next:
                struct parse_marker macro_mark;
                int is_macro_call;
 
-               DPRINTF (("Arglist macro!"));
-
-               /*
-               ** evans 2002-07-03: Moved this here (from below).
-               **   This bug caused necessary whitespace to be lost
-               **   when parsing parameterized macros without parameters.
-               */
-
-               parseSetMark (&macro_mark, pfile); 
-
                while (cppBuffer_isMacro (CPPBUFFER (pfile)))
                  {
                    cppBuffer *next_buf;
                    cppSkipHspace (pfile);
                    if (cppReader_peekC (pfile) != EOF)
                      {
-                       DPRINTF (("Peeking!"));
                        /*@loopbreak@*/ break;
                      }
 
@@ -6536,13 +6573,12 @@ get_next:
                  CPPBUFFER (pfile) = next_buf;
                  }
 
-               /* parseSetMark (&macro_mark, pfile); */
+               parseSetMark (&macro_mark, pfile);
 
                for (;;)
                  {
                    cppSkipHspace (pfile);
                    c = cppReader_peekC (pfile);
-                   DPRINTF (("c: %c", c));
                    is_macro_call = c == '(';
                    if (c != '\n')
                      /*@loopbreak@*/ break;
@@ -6558,11 +6594,9 @@ get_next:
 
                if (!is_macro_call)
                  {
-                   DPRINTF (("not macro call!"));
                    return CPP_NAME;
                  }
              }
-
            /* This is now known to be a macro call.  */
 
            /* it might not actually be a macro.  */
@@ -7272,7 +7306,6 @@ parseSetMark (struct parse_marker *pmark, cppReader *pfile)
 
   pmark->buf = pbuf;
   pmark->position = pbuf->cur - pbuf->buf;
-  DPRINTF (("set mark: %d / %s", pmark->position, pbuf->cur));
 }
 
 /* Cleanup PMARK - we no longer need it.  */
@@ -7305,7 +7338,6 @@ parseGotoMark (struct parse_marker *pmark, cppReader *pfile)
 
   llassert (pbuf->buf != NULL);
   pbuf->cur = pbuf->buf + pmark->position;
-  DPRINTF (("goto mark: %d / %s", pmark->position, pbuf->cur));
 }
 
 /* Reset PMARK to point to the current position of PFILE.  (Same
@@ -7323,7 +7355,6 @@ parseMoveMark (struct parse_marker *pmark, cppReader *pfile)
     }
 
   pmark->position = pbuf->cur - pbuf->buf;
-  DPRINTF (("move mark: %s", pmark->position));
 }
 
 void cpplib_initializeReader (cppReader *pfile) /* Must be done after library is loaded. */
@@ -8453,5 +8484,3 @@ void cppBuffer_forward (cppBuffer *buf, int n)
   llassert (buf->cur != NULL);
   buf->cur += n;
 }
-
-/*@=bufferoverflowhigh@*/
index a01bf67424ac2fbdcb4b53ea33677908d0e393ee..9c568d918708967a25f07ca1ad5c208b5b1ade76 100644 (file)
@@ -137,8 +137,6 @@ int cppProcess (/*@dependent@*/ cstring infile,
 
       if (!opts->no_output)
        {
-         DPRINTF (("Writing: %s", cstring_copyLength (g_cppState.token_buffer, cpplib_getWritten (&g_cppState))));
-
          (void) fwrite (g_cppState.token_buffer, (size_t) 1,
                         cpplib_getWritten (&g_cppState), ofile);
        }
@@ -176,8 +174,6 @@ void cppAddIncludeDir (cstring dir)
   ** Add the -I- code.  This code provided by Robin Watts <Robin.Watts@wss.co.uk>
   */
 
-  DPRINTF (("Adding include: %s", dir));
-
   if (cstring_equalLit (dir, "-I-"))
     {
       struct cppOptions *opts = CPPOPTIONS (&g_cppState);    
@@ -188,11 +184,8 @@ void cppAddIncludeDir (cstring dir)
       /* -I option (Add directory to include path) */
       struct file_name_list *dirtmp = (struct file_name_list *) dmalloc (sizeof (*dirtmp));
       
-      llassert (cstring_firstChar (dir) == 'I');
-      dir = cstring_suffix (dir, 1);
-
       DPRINTF (("Add include: %s", dir));
-
+      
       dirtmp->next = 0;                /* New one goes on the end */
       dirtmp->control_macro = 0;
       dirtmp->c_system_include_path = FALSE;
index 1a8e618a50db271bf45852a896f3ef8fb8391de3..0d05b48b4c8c456b1ca66b678f49976b0f2d6635 100644 (file)
@@ -84,6 +84,8 @@ ULSuffix                ({U}{L}|{L}{U})
 
 # include "cgrammar.h"
 # include "cgrammar_tokens.h"
+
+# include "fileIdList.h"
 # include "portab.h"
 
 static bool lastWasString = FALSE;
@@ -269,7 +271,6 @@ static void setTokLengthT (size_t len)
 
 "volatile"     { setTokLength (8); RETURN_TOK (QVOLATILE); }
 "const"                { setTokLength (5); RETURN_TOK (QCONST); }
-"restrict"     { setTokLength (8); RETURN_TOK (QRESTRICT); }
 
                         /* some systems expect this! [gack!] */ 
 "__const"      { setTokLength (7); RETURN_TOK (QCONST); }
@@ -2048,30 +2049,33 @@ static int handleLlSpecial ()
                {
                  ;
                }
-             else if (flagcode_isModeName (fflag))
+             else if (flagcode_isInvalid (fflag))
                {
-                 if (ynm_isMaybe (set))
+                 if (isMode (flagname))
                    {
-                     llerror
-                       (FLG_BADFLAG, 
-                        message 
-                        ("Semantic comment attempts to restore flag %s.  "
-                         "A mode flag cannot be restored.",
-                         flagname));
+                     if (ynm_isMaybe (set))
+                       {
+                         llerror
+                           (FLG_BADFLAG, 
+                            message 
+                            ("Semantic comment attempts to restore flag %s.  "
+                             "A mode flag cannot be restored.",
+                             flagname));
+                       }
+                     else
+                       {
+                         context_setMode (flagname);
+                       }
                    }
                  else
                    {
-                     context_setMode (flagname);
+                     voptgenerror
+                       (FLG_UNRECOGFLAGCOMMENTS,
+                        message ("Unrecognized option in semantic comment: %s", 
+                                 flagname),
+                        loc);
                    }
                }
-             else if (flagcode_isInvalid (fflag))
-               {
-                 voptgenerror
-                   (FLG_UNRECOGFLAGCOMMENTS,
-                    message ("Unrecognized option in semantic comment: %s", 
-                             flagname),
-                    loc);
-               }
              else if (flagcode_isGlobalFlag (fflag))
                {
                  voptgenerror
index 479b4be394a75d95086290de5e62eebe45bc9621..145c8d2339120738d549097c6868e1c86388ff1f 100644 (file)
@@ -339,16 +339,3 @@ cstringList_get (cstringList s, int index)
   llassertretnull (index < s->nelements);
   return s->elements[index];
 }
-
-ob_mstring *
-cstringList_getElements (cstringList s)
-{
-  if (cstringList_isDefined (s))
-    {
-      /*@i423@*/ return s->elements;
-    }
-  else
-    {
-      return NULL;
-    }
-}
index 5e3d374b02999ce27059f533e00114b21462706c..56d31aae37054e245a398329a56b0e465102b092 100644 (file)
@@ -72,6 +72,7 @@ static bool ctentry_isInteresting (ctentry p_c) /*@*/;
 static /*@notnull@*/ /*@only@*/ ctbase ctbase_makeFixedArray (ctype p_b, size_t p_size) /*@*/ ;
 static bool ctbase_isAnytype (/*@notnull@*/ ctbase p_b) /*@*/ ;
 
+cstring ctbase_unparseFunctionPointer (ctbase c, /*@only@*/ cstring name) /*@*/ ;
 /* 
 ** These are file-static macros (used in ctype.c).  No way to
 ** declare them as static in C.
@@ -90,6 +91,9 @@ static bool ctbase_isAnytype (/*@notnull@*/ ctbase p_b) /*@*/ ;
 # define ctentry_setPtr(c,b)      ((c)->ptr = (b))
 
 # define ctbase_fixUser(c)        (c = ctbase_realType(c))
+
+/*drl added 04/14/2002 */
+# define ctentry_getCtbase(c)       ((c)->ctbase)
 /*@=allmacros@*/ /*@=macrospec@*/ /*@=namechecks@*/
 
 static ctype cttable_addComplex (/*@notnull@*/ /*@only@*/ ctbase p_cnew);
@@ -493,9 +497,29 @@ ctbase_unparse (ctbase c)
          return (message ("%t *", c->contents.base));
        }
     case CT_FIXEDARRAY:
-      return (message ("%t [%d]", 
-                      c->contents.farray->base, 
-                      (int) c->contents.farray->size));
+      if (ctype_isFixedArray ( c->contents.farray->base ) &&(willOutputCode) )
+       
+       {
+         cstring tmp, tmp2, ret;
+         
+         tmp = ctype_unparse( c->contents.farray->base);
+         tmp2 = cstring_beforeChar(tmp, '[');
+         
+         ret = message("%q [%d] %s ",
+                       tmp2,
+                       c->contents.farray->size,
+                       cstring_afterChar(tmp, '[')
+                       );
+         return ret;
+       }
+      
+      else
+       {
+         return (message ("%t [%d]", 
+                  c->contents.farray->base, 
+                  (int) c->contents.farray->size));
+       }
+      
     case CT_ARRAY:
       return (message ("%t []", c->contents.base));
     case CT_FCN:
@@ -512,7 +536,7 @@ ctbase_unparse (ctbase c)
       else
        {
          return (message ("struct { %q }", 
-                          uentryList_unparseAbbrev (c->contents.su->fields))); 
+                          uentryList_unparse (c->contents.su->fields)));       
        }
     case CT_UNION:
       if (cstring_isDefined (c->contents.su->name) &&
@@ -610,6 +634,10 @@ static /*@only@*/ cstring
                       uentryList_unparse (c->contents.fcn->params),
                       c->contents.fcn->rval));
     case CT_STRUCT:
+      if (context_getFlag(FLG_GENERATECODE) )
+       {
+         DPRINTF( (message("struct %s { %s }",  c->contents.su->name, uentryList_unparse(c->contents.su->fields) ) ));
+       }
       return (message ("struct %s { ... } ", c->contents.su->name));
     case CT_UNION:
       return (message ("union %s { ... }", c->contents.su->name));
@@ -709,7 +737,7 @@ ctbase_unparseDeclaration (ctbase c, /*@only@*/ cstring name) /*@*/
     case CT_PTR:
       if (ctype_isFunction (c->contents.base))
        {
-         return ctbase_unparseDeclaration (ctype_getCtbase (c->contents.base), name);
+         return ctbase_unparseFunctionPointer (ctype_getCtbase (c->contents.base), name);
        }
       else
        {
@@ -813,6 +841,105 @@ ctbase_unparseDeclaration (ctbase c, /*@only@*/ cstring name) /*@*/
   BADEXIT;
 }
 
+
+
+/*drl added 04/22/2002*/
+ /*@only@*/ cstring
+ctbase_doUnparseFunctionPointer (ctbase c, /*@only@*/ cstring name, cstring quals) /*@*/ 
+{
+  cstring s;
+  
+  if (ctbase_isUndefined (c))
+    {
+      return name;
+    }
+
+  if (c->type == CT_FCN)
+    {
+      s = message ("%s (*%q)(%q)", quals, name, 
+                  uentryList_unparseParamsComplete (c->contents.fcn->params));
+      
+         return (ctbase_unparseDeclaration 
+                 (ctype_getCtbase (c->contents.fcn->rval), s));
+    }
+  else
+    {
+      llassert (c->type == CT_PTR);
+      llassert(FALSE);
+      //  s = message("%q", ctype_unparseFunction ( c->contents.base, name)  );
+         
+     s = message("%q", ctbase_unparse /*Declaration*/ (c) /* name)*/ );
+      return s;
+
+    }
+}
+
+
+/*drl added 04/22/2002*/
+ /*@only@*/ cstring
+ctbase_unparseFunctionPointer (ctbase c, /*@only@*/ cstring name) /*@*/ 
+{
+  cstring s;
+  
+  if (ctbase_isUndefined (c))
+    {
+      return name;
+    }
+
+  if (c->type == CT_FCN)
+    {
+      //      llassert(FALSE);
+      s = message ("(*%q)(%q)", name, 
+                  uentryList_unparseParamsComplete (c->contents.fcn->params));
+      
+         return (ctbase_unparseDeclaration 
+                 (ctype_getCtbase (c->contents.fcn->rval), s));
+    }
+  else
+    {
+      llassert (c->type == CT_PTR);
+      s = message("%q", ctype_unparseFunction ( c->contents.base, name)  );
+         
+   //    s = message("%q", ctbase_unparse /*Declaration*/ (c) /* name)*/ );
+      return s;
+
+    }
+}
+
+
+/*drl added 3/10/2002*/
+
+ /*@only@*/ cstring
+ctbase_unparseFunction (ctbase c, /*@only@*/ cstring name) /*@*/ 
+{
+  cstring s;
+  
+  if (ctbase_isUndefined (c))
+    {
+      return name;
+    }
+
+  if (c->type == CT_FCN)
+    {
+      s = message ("%q(%q)", name, 
+                  uentryList_unparseParamsComplete (c->contents.fcn->params));
+      
+         return (ctbase_unparseDeclaration 
+                 (ctype_getCtbase (c->contents.fcn->rval), s));
+    }
+  else
+    {
+      
+      llassert (c->type == CT_PTR);
+
+      
+      s = message("%q", ctbase_unparse /*Declaration*/ (c) /* name)*/ );
+      return s;
+
+    }
+}
+
+
 static ctbase ctbase_undump (d_char *c) /*@requires maxRead(*c) >= 2 @*/
 {
   ctbase res;
index c75982a06b2a3af9e84bfca21e597100629ffc8c..18a30ebfc07d17aaf0b823f8fadfcd9fe3a12a85 100644 (file)
@@ -320,7 +320,7 @@ cttable_dump (FILE *fout)
   if (context_getFlag (FLG_SHOWSCAN) && cttab.size > 5000)
     {
       displayScanClose ();
-      displayScanOpen (message ("Dumping type table (%d types)", cttab.size));
+      displayScanOpen (message ("< Dumping type table (%d types) ", cttab.size));
       showdotstride = cttab.size / 5;
       showdots = TRUE;
     }
@@ -338,15 +338,14 @@ cttable_dump (FILE *fout)
       if (showdots && (i != 0 && ((i - 1) % showdotstride == 0)))
        {
          (void) fflush (g_warningstream);
-         displayScanContinue (cstring_makeLiteralTemp ("."));
+         fprintf (stderr, ".");
          (void) fflush (stderr);
        }
     }
 
   if (showdots)
     {
-      displayScanClose ();
-      displayScanOpen (cstring_makeLiteral ("Continuing dump "));
+      fprintf (stderr, " >\n< Continuing dump ");
     }
   
 }
index 7fc16c481bef2841d0c72adcb6db297c3b9fac9f..ce52abafe25f79676d34b08eabf49ecf6f65b3eb 100644 (file)
@@ -236,8 +236,7 @@ ctype_realishType (ctype c)
 bool
 ctype_isUA (ctype c)
 {
-  return (!ctype_isUnknown (c) 
-         && ctbase_isUA (ctype_getCtbase (c)));
+  return (!ctype_isUnknown (c) && ctbase_isUA (ctype_getCtbase (c)));
 }
 
 bool
@@ -718,7 +717,7 @@ ctype ctype_makeRawFunction (ctype base, uentryList p)
 bool
 ctype_isFunction (ctype c)
 {
-  if (ctype_isKnown (c) && ctype_isDefined (c))
+  if ( ( ctype_isKnown (c) && (!ctype_isElips(c) ) ) && ctype_isDefined (c))
     {
       return (ctbase_isFunction (ctype_getCtbase (c)));
     }
@@ -728,6 +727,18 @@ ctype_isFunction (ctype c)
     }
 }
 
+/*
+  drl added 04-2-2002
+  trying to make up or ambiguity if ctype_isFunction
+*/
+bool ctype_isFunctionPointer (ctype c)
+{
+  if (ctype_isFunction(c) && ctype_isPointer(c) )
+    return TRUE;
+  else
+    return FALSE;    
+}
+
 bool
 ctype_isExpFcn (ctype c)
 {
@@ -1817,6 +1828,25 @@ ctype_typeId (ctype c)
   return (ctbase_typeId (ctype_getCtbase (c)));
 }
 
+
+cstring
+ctype_unparseFunctionPointer (ctype c, cstring quals,  /*@only@*/ cstring name)
+{
+  ctbase base;
+  ctype ctTmp;
+  
+  base = ctype_getCtbaseSafe (c);
+  ctTmp = base->contents.base;
+  
+  return (ctbase_doUnparseFunctionPointer (ctype_getCtbaseSafe(ctTmp), name, quals) );
+}
+
+cstring
+ctype_unparseFunction (ctype c, /*@only@*/ cstring name)
+{
+  return (ctbase_unparseFunction (ctype_getCtbaseSafe (c), name) );
+}
+
 cstring
 ctype_unparseDeclaration (ctype c, /*@only@*/ cstring name)
 {
@@ -1998,14 +2028,13 @@ ctype_getBaseType (ctype c)
 }
 
 ctype
-ctype_adjustPointers (pointers p, ctype c)
+ctype_adjustPointers (int np, ctype c)
 {
-  int np = pointers_depth (p);
-
+  
   if (ctype_isFunction (c))
     {
       c = ctype_makeParamsFunction
-        (ctype_adjustPointers (p, ctype_getReturnType (c)),
+        (ctype_adjustPointers (np, ctype_getReturnType (c)),
         uentryList_copy (ctype_argsFunction (c)));
     }
   else
@@ -2213,16 +2242,6 @@ ctype_createForwardUnion (cstring n)
   return (ct);
 }
 
-ctype
-ctype_createForwardEnum (cstring n)
-{
-  uentry ue  = uentry_makeEnumTag (n, ctype_unknown, fileloc_undefined);
-  ctype ct = usymtab_supForwardTypeEntry (ue);
-
-  cstring_free (n);
-  return (ct);
-}
-
 ctype
 ctype_removePointers (ctype c)
 {
@@ -2691,7 +2710,8 @@ ctype_widest (ctype c1, ctype c2)
     }
 }
 
-static /*@observer@*/ ctbase ctype_getCtbase (ctype c)
+//static
+/*@observer@*/ ctbase ctype_getCtbase (ctype c)
 {
   /*@+enumint@*/
   if (c >= 0 && c < cttab.size)
@@ -2716,7 +2736,8 @@ static /*@observer@*/ ctbase ctype_getCtbase (ctype c)
   /*@=enumint@*/
 }
 
-static /*@notnull@*/ /*@observer@*/ ctbase
+//static
+/*@notnull@*/ /*@observer@*/ ctbase
 ctype_getCtbaseSafe (ctype c)
 {
   ctbase res = ctype_getCtbase (c);
@@ -2796,3 +2817,118 @@ size_t ctype_getArraySize (ctype c)
   return size;
 }
 
+/*drl added 04-22-2002 */
+
+/*This is an ugly and hopefuly temporary function to
+  print a function pointer.
+  It assumes that ctype_unparse will give it something like
+  [function (int, float) returns void *]
+
+  to extract information from.
+  
+ */
+
+/*
+cstring ctype_unparseFunctionPointer (ctype type, cstring quals, cstring name)
+{
+  cstring up, params, tmp, returns, ret;
+
+  up = ctype_unparse(type);
+
+  tmp = cstring_beforeChar(up, ')');
+  params = cstring_afterChar(tmp, '(');
+
+  params = cstring_concat (params, cstring_makeLiteral(")") );
+  
+  returns = cstring_afterChar(up, ')');
+  returns = cstring_afterChar(returns, 's');
+  returns = cstring_beforeChar(returns, ']');
+  returns = cstring_afterChar(returns, ' ');
+  ret = message("%s %s (* %s) %s", quals, returns, name, params);
+
+  return ret;
+}
+*/
+
+/*drl added */
+cstring qtypetryToPrintStruct(qtype q)
+{
+  ctentry ct;
+  ctbase base;
+  uentry ue;
+  
+  cstring ret;
+  
+  ct = ctype_getCtentry(qtype_getType(q) );
+
+  llassert (ct != NULL );
+
+  base = ctentry_getCtbase(ct); 
+
+  //evil abstraction violation fix
+  /*@i232@*/
+  /*@access ctbase@*/
+
+  llassert(ctbase_isDefined(base) );
+
+  if (base->type == CT_USER) 
+
+    {
+      ue = usymtab_getTypeEntry(base->contents.tid);
+      
+      base = ctentry_getCtbase( ctype_getCtentry(uentry_getType (ue) ) );
+
+      llassert(ctbase_isDefined(base) );
+    }
+  
+  switch(base->type)
+    {
+    case CT_ENUM:
+      if (isFakeTag(base->contents.cenum->tag) )
+       {
+         ret = message ("enum { %s } ",
+                        enumNameList_unparse(base->contents.cenum->members) );
+       }
+      else
+       {
+         ret = message ("enum %s { %s } ",base->contents.cenum->tag, enumNameList_unparse(base->contents.cenum->members) );
+       }
+      break;
+    case CT_STRUCT:
+      if (isFakeTag(base->contents.su->name) )
+       {
+         ret = message ("struct { %s } ",
+                        uentryList_unparse(base->contents.su->fields) );
+       }
+      else
+       {
+         ret = message ("struct %s { %s } ",
+                        base->contents.su->name, uentryList_unparse(base->contents.su->fields) );
+       }
+
+      break;
+    case CT_UNION:
+      if (isFakeTag(base->contents.su->name) )
+       {
+         ret = message ("union { %s } ",
+                        uentryList_unparse(base->contents.su->fields) );
+       }
+      else
+       {
+         ret = message ("union %s { %s } ",
+                        base->contents.su->name, uentryList_unparse(base->contents.su->fields) );
+       }
+      /*@noaccess ctbase@*/
+      break;
+       case CT_UNKNOWN:
+        //      ret = message("%s", uentry_unparse(ue) );
+        //      break;
+    case CT_PRIM:
+    default:
+      ret = message ("%s", qtype_unparse(q) );
+      break;
+   
+      //   BADDEFAULT;
+          }
+  return ret;
+}
index 4b3b81db593fbb0c26172eaef5f59be0a014b157..8467e410201a30c4060210b8103711ee81a7702d 100644 (file)
@@ -935,16 +935,81 @@ void exprNode_checkFunctionBody (exprNode body)
        }
     }
 }
-/*drl modified */
 
+/* drl added 2/26/2002 */
+/* prints out a function */
+void exprNode_spitFunction (/*@unused@*/ uentry ue, exprNode fcnBody)
+{
+
+  exprNode body;
+
+  body = fcnBody;
+
+  if (context_getFlag(FLG_GENERATECODE) )
+    {
+      cstring outCode;
+
+            /*  //
+
+      cstring locateInfo;
+
+      locateInfo = fileloc_filename (exprNode_getLoc (body) ) ;
+
+      locateInfo = message ("fprintf(stderr,\"%s\");\n",locateInfo);
+
+      
+      if (body->kind == XPR_TOK)
+       {
+         outCode = message( " #include <stdio.h>\n%s\n{\n%s{\n%s\n}\n}\n",
+                            uentry_unparseFunctionHeader (ue),
+                            locateInfo,
+                            exprNode_unparse(body)
+                            );
+       }
+      else
+       {
+         outCode = message( "\n#include <stdio.h>\n%s\n{\n%s{\n%s;\n}\n}\n",
+                            uentry_unparseFunctionHeader (ue),
+                            locateInfo,
+                            exprNode_unparse(body)
+                            );
+       }
+      */
+
+      llassert(exprNode_isDefined(body) );
+      
+      if (body->kind == XPR_TOK)
+       {
+         outCode = message( "%s\n{\n%s\n}\n",
+                            uentry_unparseFunctionHeader (ue),
+                            exprNode_unparse(body)
+                            );
+       }
+      else
+       {
+         outCode = message( "%s\n{\n%s\n}\n",
+                            uentry_unparseFunctionHeader (ue),
+                            exprNode_unparse(body)
+                            );
+       }
+      outputCode(outCode);
+      cstring_free(outCode);
+    }
+}
+
+
+
+/*drl modified */
 
 void exprNode_checkFunction (/*@unused@*/ uentry ue, /*@only@*/ exprNode body)
 {
   constraintList c, t, post;
   constraintList c2, fix;
   constraintList implicitFcnConstraints;
+  
   context_enterInnerContext ();
 
+  
   llassert (exprNode_isDefined (body));
 
   /*
@@ -963,6 +1028,12 @@ void exprNode_checkFunction (/*@unused@*/ uentry ue, /*@only@*/ exprNode body)
            context_getFlag(FLG_BOUNDSREAD) ||
            context_getFlag(FLG_CHECKPOST)))
        {
+         if ( context_getFlag (FLG_GENERATECODE) )
+           {
+             exprNode_spitFunction(ue, body);
+           }
+         
+
          exprNode_free (body);
          context_exitInnerPlain();
          
@@ -1096,6 +1167,12 @@ void exprNode_checkFunction (/*@unused@*/ uentry ue, /*@only@*/ exprNode body)
 
    context_exitInnerPlain();
 
+   if ( context_getFlag (FLG_GENERATECODE) )
+     {
+       exprNode_spitFunction(ue, body);
+     }
+  
+
    /*is it okay not to free this?*/
   exprNode_free (body);
   }
index 8940676c3ebe97021473eeb1262b7a5b6e6a9fb7..1d15e31b468a6168fc21997ecac7fb6b2947ceac 100644 (file)
@@ -4024,14 +4024,57 @@ exprNode_functionCall (/*@only@*/ exprNode f, /*@only@*/ exprNodeList args)
     }
   else
     {
+      exprNode ret;
+      cstring tstring;
+      
       voptgenerror (FLG_TYPE,
                    message ("Call to non-function (type %t): %s", t, 
                             exprNode_unparse (f)),
                    f->loc);
-      exprNode_free (f);
-      exprNodeList_free (args);
 
+      /*drl o.k. generating an error node didn't work for
+       the proposes of code generation.  I'm copying the previous case and
+       hoping it works */
+      // drl check this // again before the release
+      ret = exprNode_createPartialCopy (f);
+
+      setCodePoint ();
+      
+      ret->typ = t;
+      exprNodeList_elements (args, current)
+        {
+          if (exprNode_isDefined (current))
+            {
+              exprNode_checkUse (ret, current->sref, ret->loc);
+
+             /* 
+             ** also, anything derivable from current->sref may be used 
+             */
+
+             exprNode_addUse (ret, sRef_makeDerived (current->sref));
+              exprNode_mergeUSs (ret, current);
+            }
+        } end_exprNodeList_elements;
+
+      ret->edata = exprData_makeCall (f, args);
+      ret->kind = XPR_CALL;
+
+      tstring = cstring_copy (exprNode_unparse (f));
+
+      cstring_markOwned (tstring);
+      exprNode_checkSetAny (ret, tstring);
+
+      return (ret);
+        /*commented out the previous case */
+
+      /* 
+      //drl make sure that this is safe //
+      /*      exprNode_free (f);
+      exprNodeList_free (args);
+      
+      
       return (exprNode_makeError ());
+      */
     }
 }
 
@@ -8972,7 +9015,8 @@ exprNode_unparse (/*@temp@*/ exprNode e)
 {
   if (exprNode_isError (e))
     {
-      return cstring_makeLiteralTemp ("<error>");
+      return cstring_newEmpty();
+      //return cstring_makeLiteralTemp ("<error>");
     }
 
   if (cstring_isDefined (e->etext))
@@ -9408,6 +9452,33 @@ static /*@observer@*/ cstring exprNode_rootVarName (exprNode e)
   return ret;
 }
 
+cstring exprNode_unparseNoType (exprNode e)
+{
+  exprData data;
+  cstring ret;
+
+  DPRINTF(( message("exprNode_unparseNoType called on %s", exprNode_unparse(e) ) ));
+  
+  llassert (exprNode_isDefined(e) );
+
+  llassert(e->kind == XPR_INIT );
+
+  data = e->edata;
+  
+  if (exprNode_isError (exprData_getInitNode (data)))
+    {
+      ret = message ("%q", idDecl_unparseCNoType (exprData_getInitId (data)));
+    }
+  else
+    {
+      ret = message ("%q = %s",
+                    idDecl_unparseCNoType (exprData_getInitId (data)),
+                    exprNode_unparse (exprData_getInitNode (data)));
+    }
+
+  return ret;
+}
+
 static /*@only@*/ cstring exprNode_doUnparse (exprNode e)
 {
   cstring ret;
@@ -9419,7 +9490,8 @@ static /*@only@*/ cstring exprNode_doUnparse (exprNode e)
 
       if (!cstring_isDefined (error))
        {
-         error = cstring_makeLiteral ("<error>");
+         //      error = cstring_makeLiteral ("<error>");
+         return cstring_newEmpty();
        }
       
       return error;
@@ -9523,15 +9595,41 @@ static /*@only@*/ cstring exprNode_doUnparse (exprNode e)
                     uentry_getName (exprData_getIterEname (data)));
       break;
     case XPR_CAST:
-      ret = message ("(%q)%s", 
-                    qtype_unparse (exprData_getCastType (data)),
-                    exprNode_unparse (exprData_getCastNode (data)));
+      {
+       /*drl modified so that the case of casting to a
+         function pointer works */
+       cstring tmp;
+       if (ctype_isFunctionPointer ( qtype_getType (exprData_getCastType (data) ) ) )
+         {
+           
+           
+           tmp = ctype_unparseFunctionPointer ( qtype_getType (exprData_getCastType (data) ),
+                                                cstring_makeLiteral(""),
+                                                cstring_makeLiteral("")
+                                                );
+         }
+       else
+       {
+         tmp =   qtype_unparse (exprData_getCastType (data));
+       }
+       
+       ret = message ("(%q)%s", 
+                      tmp ,
+                      exprNode_unparse (exprData_getCastNode (data)));
+      }
       break;
       
     case XPR_FOR:
-      ret = message ("%s %s", 
-                    exprNode_unparse (exprData_getPairA (data)), 
-                    exprNode_unparse (exprData_getPairB (data)));
+      if(context_getFlag(FLG_INSTRUMENTLOOPS) )
+       {
+         ret = constraint_unparseInstrumentedLoop (e);
+       }
+      else
+       {
+         ret = message ("%s %s", 
+                        exprNode_unparse (exprData_getPairA (data)), 
+                        exprNode_unparse (exprData_getPairB (data)));
+       }
       break;
 
     case XPR_FORPRED:
@@ -9542,23 +9640,23 @@ static /*@only@*/ cstring exprNode_doUnparse (exprNode e)
       break;
       
     case XPR_GOTO:
-      ret = message ("goto %s", exprData_getLiteral (data));
+      ret = message ("goto %s;", exprData_getLiteral (data));
       break;
 
     case XPR_CONTINUE:
-      ret = cstring_makeLiteral ("continue");
+      ret = cstring_makeLiteral ("continue;");
       break;
 
     case XPR_BREAK:
-      ret = cstring_makeLiteral ("break");
+      ret = cstring_makeLiteral ("break;");
       break;
 
     case XPR_RETURN:
-      ret = message ("return %s", exprNode_unparse (exprData_getSingle (data)));
+      ret = message ("return %s;", exprNode_unparse (exprData_getSingle (data)));
       break;
 
     case XPR_NULLRETURN:
-      ret = cstring_makeLiteral ("return");
+      ret = cstring_makeLiteral ("return;");
       break;
 
     case XPR_COMMA:
@@ -9574,21 +9672,33 @@ static /*@only@*/ cstring exprNode_doUnparse (exprNode e)
                     exprNode_unparse (exprData_getTripleFalse (data)));
       break;
     case XPR_IF:
-      ret = message ("if (%s) %s", 
+      ret = message ("if (%s)\n %s", 
                     exprNode_unparse (exprData_getPairA (data)),
                     exprNode_unparse (exprData_getPairB (data)));
       break;
       
     case XPR_IFELSE:
-      ret = message ("if (%s) %s else %s",
+      //      ret = message ("if (%s) %s else %s",
+      ret = message ("if (%s) \n{\n%s;\n}\n else\n %s",
                     exprNode_unparse (exprData_getTriplePred (data)),
                     exprNode_unparse (exprData_getTripleTrue (data)),
                     exprNode_unparse (exprData_getTripleFalse (data)));
       break;
     case XPR_WHILE:
-      ret = message ("while (%s) %s",
-                    exprNode_unparse (exprData_getPairA (data)),
-                    exprNode_unparse (exprData_getPairB (data)));
+         if(context_getFlag(FLG_INSTRUMENTLOOPS) && 0 )
+       {
+         ret = message ("printf(\"spl:no heuristic loop %%s at %s\\n\",getLoopNumber());\nwhile (%s)\n %s",
+                        (fileloc_unparse(exprNode_loc(e) ) ),
+                        exprNode_unparse (exprData_getPairA (data)),
+                        exprNode_unparse (exprData_getPairB (data)));
+         
+       }
+        else 
+          {
+            ret = message ("while (%s)\n %s",
+                           exprNode_unparse (exprData_getPairA (data)),
+                           exprNode_unparse (exprData_getPairB (data)));
+          }
       break;
 
     case XPR_WHILEPRED:
@@ -9596,22 +9706,37 @@ static /*@only@*/ cstring exprNode_doUnparse (exprNode e)
       break;
 
     case XPR_TOK:
-      ret = cstring_copy (lltok_unparse (exprData_getTok (data)));
+      if (lltok_isRbrace (exprData_getTok (data) ) )
+       ret = cstring_newEmpty();
+      else
+       ret = cstring_copy (lltok_unparse (exprData_getTok (data)));
       break;
 
     case XPR_DOWHILE:
-      ret = message ("do { %s } while (%s)",
-                    exprNode_unparse (exprData_getPairB (data)),
-                    exprNode_unparse (exprData_getPairA (data)));
+
+      if(context_getFlag(FLG_INSTRUMENTLOOPS) && 0 )
+       {
+         ret = message ("printf(\"spl:no heuristic loop %%s at %s\\n\",getLoopNumber());\ndo {\n %s\n }\n while (%s)",
+                        (fileloc_unparse(exprNode_loc(e) ) ),
+                        exprNode_unparse (exprData_getPairB (data)),
+                        exprNode_unparse (exprData_getPairA (data)));
+         
+       }
+      else
+       {
+         ret = message ("do {\n %s\n }\n while (%s)",
+                        exprNode_unparse (exprData_getPairB (data)),
+                        exprNode_unparse (exprData_getPairA (data)));
+       }
       break;
       
     case XPR_BLOCK:
-      ret = message ("{ %s }", exprNode_unparse (exprData_getSingle (data)));
+      ret = message ("{\n %s\n }", exprNode_unparse (exprData_getSingle (data)));
       /* evans 2002-02-20 was unparseFirst! */
       break;
 
     case XPR_STMT:
-      ret = message ("%s;", exprNode_unparse (exprData_getUopNode (data)));
+      ret = message ("%s;\n", exprNode_unparse (exprData_getUopNode (data)));
       break;
 
     case XPR_STMTLIST:
@@ -9625,9 +9750,29 @@ static /*@only@*/ cstring exprNode_doUnparse (exprNode e)
                         exprNode_unparse (exprData_getPairA (data)),
                         exprNode_unparse (exprData_getPairB (data)));
        }
+      /* 05-17-2002
+        drl handle this case so that unnecessary semi colons are not printed
+      */
+      else if ( exprNode_isError (exprData_getPairA (data) ) )
+       {
+         ret = message ("%s %s", 
+                        exprNode_unparse (exprData_getPairA (data)),
+                        exprNode_unparse (exprData_getPairB (data)));
+       }
+      
+      /* 05-20-2002
+        drl handle this case so that double semi colons are not printed
+      */
+      else if ( exprNode_isError (exprData_getPairB (data) ) )
+       {
+         ret = message ("%s %s", 
+                        exprNode_unparse (exprData_getPairA (data)),
+                        exprNode_unparse (exprData_getPairB (data)));
+       }
+      
       else
        {
-         ret = message ("%s; %s", 
+         ret = message ("%s;\n %s", 
                         exprNode_unparse (exprData_getPairA (data)),
                         exprNode_unparse (exprData_getPairB (data)));
        }
@@ -9635,30 +9780,30 @@ static /*@only@*/ cstring exprNode_doUnparse (exprNode e)
       
     case XPR_FTDEFAULT:
     case XPR_DEFAULT:
-      ret = cstring_makeLiteral ("default:");
+      ret = cstring_makeLiteral ("default:\n");
       break;
 
     case XPR_SWITCH:
-      ret = message ("switch (%s) %s", 
+      ret = message ("switch (%s)\n %s", 
                     exprNode_unparse (exprData_getPairA (data)),
                     exprNode_unparse (exprData_getPairB (data)));
       break;
 
     case XPR_FTCASE:
     case XPR_CASE:
-      ret = message ("case %s:", 
+      ret = message ("case %s:\n", 
                     exprNode_unparse (exprData_getSingle (data)));
       break;
       
     case XPR_INIT:
       if (exprNode_isError (exprData_getInitNode (data)))
        {
-         ret = message ("%q", idDecl_unparseC (exprData_getInitId (data)));
+         ret = message ("%q", idDecl_unparseCLoc (exprData_getInitId (data), e->loc));
        }
       else
        {
          ret = message ("%q = %s",
-                        idDecl_unparseC (exprData_getInitId (data)),
+                        idDecl_unparseCLoc (exprData_getInitId (data), e->loc),
                         exprNode_unparse (exprData_getInitNode (data)));
        }
       break;
index dd04efccdf2efb73da0e99219f9133351bfe3572..96c060dc5c0e426ba7be4880b258d93be77c6a22 100644 (file)
 
 # if defined(__IBMC__) && defined(OS2)
 # include <process.h>
-# include <io.h>
 # define getpid _getpid
-# define S_IRUSR S_IREAD
-# define S_IWUSR S_IWRITE 
-# define S_IXUSR S_IEXEC
 # endif
 
 /*@access fileId*/
@@ -101,12 +97,6 @@ fileTable_getIndex (fileTable ft, cstring s)
   cstring abspath;
   if (ft == NULL) return NOT_FOUND;
   abspath = osd_absolutePath (cstring_undefined, s);
-  
-  if (context_getFlag (FLG_CASEINSENSITIVEFILENAMES))
-    {
-      abspath = cstring_downcase (abspath);
-    }
-
   DPRINTF (("Absolute path: %s: %s", s, abspath));
   res = cstringTable_lookup (ft->htable, abspath);
   cstring_free (abspath);
@@ -283,18 +273,7 @@ fileTable_internAddEntry (fileTable ft, /*@only@*/ ftentry e)
   ft->nspace--;
 
   DPRINTF (("Adding: %s", e->fname));
-
-  if (context_getFlag (FLG_CASEINSENSITIVEFILENAMES))
-    {
-      cstring sd = cstring_downcase (e->fname);
-      cstringTable_insert (ft->htable, sd, ft->nentries);
-      cstring_free (e->fname);
-    }
-  else
-    {
-      cstringTable_insert (ft->htable, e->fname, ft->nentries); 
-    }
-
+  cstringTable_insert (ft->htable, e->fname, ft->nentries);
   ft->elements[ft->nentries] = e;
 
   ft->nentries++;
@@ -324,7 +303,7 @@ fileTable_addFilePrim (fileTable ft, /*@temp@*/ cstring name,
   cstring absname = osd_absolutePath (NULL, name);
   int tindex = fileTable_getIndex (ft, absname);
   
-  /*@i534 fprintf (stderr, "Got abs path: %s", absname); */
+  DPRINTF (("Got abs path: %s", absname));
   llassert (ft != fileTable_undefined);
 
   if (tindex != NOT_FOUND)
@@ -661,18 +640,7 @@ fileTable_setFilePath (fileTable ft, fileId fid, cstring path)
 fileId
 fileTable_lookupBase (fileTable ft, cstring base)
 {
-  int tindex;
-
-  if (context_getFlag (FLG_CASEINSENSITIVEFILENAMES))
-    {
-      cstring dbase = cstring_downcase (base);
-      tindex = fileTable_getIndex (ft, dbase);
-      cstring_free (dbase);
-    }
-  else
-    {
-      tindex = fileTable_getIndex (ft, base);
-    }
+  int tindex = fileTable_getIndex (ft, base);
 
   if (tindex == NOT_FOUND)
     {
@@ -809,7 +777,7 @@ fileTable_cleanup (fileTable ft)
   if (msg)
     {
       (void) fflush (g_warningstream);
-      displayScanOpen (cstring_makeLiteral ("cleaning"));
+      fprintf (stderr, "< cleaning");
     }
 
   for (i = 0; i < ft->nentries; i++)
@@ -851,13 +819,21 @@ fileTable_cleanup (fileTable ft)
 
       if (msg && ((i % skip) == 0))
        {
-         displayScanContinue (cstring_makeLiteral (i == 0 ? " " : "."));
+         (void) fflush (g_warningstream);
+
+         if (i == 0) {
+           fprintf (stderr, " ");
+         } else {
+           fprintf (stderr, ".");
+         }
+
+         (void) fflush (stderr);
        }
     }
-
+  
   if (msg)
     {
-      displayScanClose ();
+      fprintf (stderr, " >\n");
     }
 }
 
index 151d7dddee9e27caa561c865c62208c6049f32bd..2d55c8345717f4f3d38f3dfced1a08a78a31eb32 100644 (file)
@@ -35,6 +35,7 @@
 
 # include "splintMacros.nf"
 # include "llbasic.h"
+# include "fileIdList.h"
 # include "osd.h"
 # include "portab.h"
 
@@ -208,6 +209,37 @@ fileloc_reallyFree (/*@only@*/ fileloc f)
     }
 }
 
+/*drl added 04/16/2002 */
+bool fileloc_canGetName (fileloc f)
+{
+ if (fileloc_isValid(f) && (fileId_isValid (f->fid))  )
+    {
+      return TRUE;
+    }
+ return FALSE;
+}
+
+/*drl added 04/16/2002 */
+cstring fileloc_getName (fileloc f)
+{
+  cstring rootName;
+  
+  if (! (fileloc_isValid(f) && (fileId_isValid (f->fid)) )  )
+    {
+      llcontbug(cstring_makeLiteral("fileloc_getName call with invalid fileloc and fileloc->id"));
+      return cstring_newEmpty();
+    }
+  
+  //  rootName = fileTable_getRootName (context_fileTable(), f->fid);
+
+  rootName = fileTable_fileName ( f->fid);
+  
+  return cstring_copy(rootName);
+}
+
+
+
 cstring fileloc_getBase (fileloc f)
 {
   llassert (fileloc_isDefined (f));
@@ -351,7 +383,7 @@ fileloc_sameModule (fileloc f1, fileloc f2)
          cstring s1 = fileloc_getBase (f1);
          cstring s2 = fileloc_getBase (f2);
          
-         return (cstring_equal (s1, s2)); 
+         return (cstring_equal (s1, s2));
        }
     }
 }
@@ -599,14 +631,7 @@ fileloc_filename (fileloc f)
 {
   if (fileloc_isDefined (f))
     {
-      if (fileId_isValid (f->fid))
-       {
-         return osd_outputPath (fileTable_rootFileName (f->fid));
-       }
-      else
-       {
-         return cstring_makeLiteral ("<invalid>");
-       }
+      return osd_outputPath (fileTable_rootFileName (f->fid));
     }
   else
     {
@@ -651,24 +676,16 @@ fileloc_column (fileloc f)
 /*@only@*/ cstring
 fileloc_unparse (fileloc f)
 {
-  static in_funparse = FALSE;
   bool parenFormat = context_getFlag (FLG_PARENFILEFORMAT); 
   bool htmlFormat = context_getFlag (FLG_HTMLFILEFORMAT);
   cstring res = cstring_undefined;
 
-  /* watch out for recursive calls when debugging... */
-  llassert (!in_funparse);
-  in_funparse = TRUE;
-
   if (fileloc_isDefined (f))
     {
        switch (f->kind)
        {
        case FL_BUILTIN:
-         {
-           res = cstring_makeLiteral ("Command Line");
-           break;
-         }
+         return (cstring_makeLiteral ("Command Line"));
        case FL_IMPORT:
          if (parenFormat)
            {
@@ -702,12 +719,6 @@ fileloc_unparse (fileloc f)
            if (f->kind == FL_LIB)
              {
                fname = message ("load file %q", fileloc_outputFilename (f));
-
-               if (!context_getFlag (FLG_SHOWLOADLOC))
-                 {
-                   res = fname;
-                   break;
-                 }
              }
            else
              {
@@ -744,7 +755,6 @@ fileloc_unparse (fileloc f)
                else
                  {
                    res = fname;
-                   /*@-branchstate@*/ /* spurious warnings reporteded because of break above */
                  }
              }
            else if (fileloc_linenoDefined (f))
@@ -774,9 +784,7 @@ fileloc_unparse (fileloc f)
     {
       res = cstring_makeLiteral ("< Location unknown >");
     }
-  /*@=branchstate@*/ /*@i2523 this is a spurious warning because of the break */
   
-  in_funparse = FALSE;
   return res;
 }
 
@@ -897,3 +905,24 @@ bool fileloc_isUser (fileloc f)
 
 
 
+bool fileloc_isDotH (fileloc f)
+{
+  cstring rootName;
+
+  if (! (fileloc_isValid(f) && (fileId_isValid (f->fid)) )  )
+    {
+      return FALSE;
+    }
+
+  rootName = fileTable_getRootName (context_fileTable() , f->fid);
+
+  if (cstring_isDotH(rootName) )
+    {
+      return TRUE;
+    }
+  else
+    {
+      return FALSE;
+    }
+
+}
index 9f97ef1a67cb29c456996b48889dcfcf4890d9f3..389da7e7eb7f1f5c9a9ba8bcce80e6401172f38a 100644 (file)
 
 # include "splintMacros.nf"
 # include "basic.h"
-# include "osd.h"
 # include "portab.h"
-# include "rcfiles.h"
-# include "lslinit.h"
 
 /*
 ** from the CC man page:
@@ -224,11 +221,6 @@ bool flagcode_isNameChecksFlag (flagcode f)
   return (flags[f].main == FK_NAMES);
 }
 
-bool flagcode_isHelpFlag (flagcode f)
-{
-  return f == FLG_HELP;
-}
-
 bool flagcode_isMessageControlFlag (flagcode f)
 {
   /*
@@ -300,7 +292,7 @@ summarizeErrors ()
              hadOne = TRUE;
            }
 
-         (void) snprintf (buf, 128, "%s%7d   %9d", cstring_toCharsSafe (fs), nrep, nsup);
+         sprintf (buf, "%s%7d   %9d", cstring_toCharsSafe (fs), nrep, nsup);
 
          sumrep += nrep;
          sumsup += nsup;
@@ -316,7 +308,7 @@ summarizeErrors ()
 
       llmsglit ("                          ========  =========");
 
-      (void) snprintf (buf, 128, "%s%7d   %9d", cstring_toCharsSafe (ts), sumrep, sumsup);
+      sprintf (buf, "%s%7d   %9d", cstring_toCharsSafe (ts), sumrep, sumsup);
       cstring_free (ts);
       llmsgplain (cstring_copy (cstring_fromChars (buf)));
     }
@@ -853,7 +845,7 @@ describeFlag (cstring flagname)
     }
   else
     {
-      if (flags_isModeName (flagname))
+      if (isMode (flagname))
        {
          cstring_free (oflagname);
 
@@ -1004,22 +996,22 @@ flags_identifyFlagAux (cstring s, bool quiet)
 
   if (cstring_firstChar (s) == 'I')
     {
-      return FLG_INCLUDEPATH; /* no space required after -I */
+      return FLG_INCLUDEPATH; /* no space after -I */
     }
 
   if (cstring_firstChar (s) == 'S') 
     {
-      return FLG_SPECPATH;    /* no space required after -S */
+      return FLG_SPECPATH;    /* no space after -S */
     }
 
   if (cstring_firstChar (s) == 'D') 
     {
-      return FLG_DEFINE;      /* no space required after -D */
+      return FLG_DEFINE;      /* no space after -D */
     }
 
   if (cstring_firstChar (s) == 'U') 
     {
-      return FLG_UNDEFINE;    /* no space required after -D */
+      return FLG_UNDEFINE;    /* no space after -D */
     }
 
   cflag = canonicalizeFlag (s);
@@ -1241,10 +1233,6 @@ flags_identifyFlagAux (cstring s, bool quiet)
          
          res = SKIP_FLAG;
        }
-      else if (flags_isModeName (cflag))
-       {
-         res = MODENAME_FLAG;
-       }
       else
        {
          res = INVALID_FLAG;
@@ -1406,7 +1394,7 @@ listModes (void)
 # endif
 
 bool
-flags_isModeName (cstring s)
+isMode (cstring s)
 {
   allModes (modename)
     {
@@ -1552,374 +1540,4 @@ bool flagcode_isNamePrefixFlag (flagcode f)
       return FALSE;
     }
 }
-
-static cstring findLarchPathFile (/*@temp@*/ cstring s)
-{
-  cstring pathName;
-  filestatus status;
-  
-  status = osd_getPath (context_getLarchPath (), s, &pathName);
-  
-  if (status == OSD_FILEFOUND)
-    {
-      return pathName;
-    }
-  else if (status == OSD_FILENOTFOUND)
-    {
-      showHerald ();
-      lldiagmsg        (message ("Cannot find file on LARCH_PATH: %s", s));
-    }
-  else if (status == OSD_PATHTOOLONG)
-    {
-      /* Directory and filename are too long.  Report error. */
-      llbuglit ("soure_getPath: Filename plus directory from search path too long");
-    }
-  else
-    {
-      BADBRANCH;
-    }
-
-  return cstring_undefined;
-}
-
-static void addLarchPathFile (fileIdList files, /*@temp@*/ cstring s)
-{
-  cstring pathName = findLarchPathFile (s);
-
-  if (cstring_isDefined (pathName))
-    {
-      if (fileTable_exists (context_fileTable (), pathName))
-       {
-         showHerald ();
-         lldiagmsg (message ("File listed multiple times: %s", pathName));
-         cstring_free (pathName);
-       }
-      else
-       {
-         fileIdList_add (files, fileTable_addFileOnly (context_fileTable (), pathName));
-       }
-    }
-}
-
-
-static void addFile (fileIdList files, /*@only@*/ cstring s)
-{
-  if (fileTable_exists (context_fileTable (), s))
-    {
-      showHerald ();
-      lldiagmsg (message ("File listed multiple times: %s", s));
-      cstring_free (s);
-    }
-  else
-    {
-      fileIdList_add (files, fileTable_addFileOnly (context_fileTable (), s));
-    }
-}
-
-static void addXHFile (fileIdList files, /*@temp@*/ cstring s)
-{
-  cstring pathName = findLarchPathFile (s);
-
-  if (cstring_isDefined (pathName))
-    {
-      if (fileTable_exists (context_fileTable (), pathName))
-       {
-         showHerald ();
-         lldiagmsg (message ("File listed multiple times: %s", s));
-       }
-      else
-       {
-         fileIdList_add (files, fileTable_addXHFile (context_fileTable (), pathName));
-       }
-    }
-
-  cstring_free (pathName);
-}
-
-void
-flags_processFlags (bool inCommandLine, 
-                   fileIdList xfiles,
-                   fileIdList cfiles,
-                   fileIdList lclfiles,
-                   fileIdList mtfiles,
-                   cstringSList *passThroughArgs,
-                   int argc, char **argv)
-{
-  int i;
-  cstringSList fl = cstringSList_undefined;
-    
-  for (i = 0; i < argc; i++)
-    {
-      char *thisarg;
-
-      llassert (argv != NULL);
-      thisarg = argv[i];
-      
-      DPRINTF (("process thisarg [%d]: %s", i, thisarg));
-
-      if (*thisarg == '-' || *thisarg == '+')
-       {
-         bool set = (*thisarg == '+');
-         cstring flagname = cstring_fromChars (thisarg + 1); /* skip '-' or '+' */
-         flagcode opt = flags_identifyFlag (flagname);
-
-         DPRINTF (("Flag: %s", flagcode_unparse (opt)));
-         
-         if (flagcode_isInvalid (opt))
-           {
-             DPRINTF (("Error!"));
-             voptgenerror (FLG_BADFLAG,
-                           message ("Unrecognized option: %s", 
-                                    cstring_fromChars (thisarg)),
-                           g_currentloc);
-           }
-         else if (flagcode_isHelpFlag (opt))
-           {
-             if (inCommandLine)
-               {
-                 voptgenerror (FLG_BADFLAG,
-                               message ("Help flag must be first on the command line: %s", 
-                                        cstring_fromChars (thisarg)),
-                               g_currentloc);
-               }
-             else
-               {
-                 voptgenerror (FLG_BADFLAG,
-                               message ("Help flags can only be used on the command line: %s", 
-                                        cstring_fromChars (thisarg)),
-                               g_currentloc);
-               }
-           }
-         else if (flagcode_isPassThrough (opt)) /* preprocessor flag: -D or -U */
-           { 
-             /*
-             ** Following space is optional, don't include the -
-             */
-             
-             *passThroughArgs = cstringSList_add (*passThroughArgs, 
-                                                  cstring_fromChars (thisarg + 1));
-           }
-         else if (opt == FLG_INCLUDEPATH || opt == FLG_SPECPATH)
-           {
-             cstring dir = cstring_suffix (cstring_fromChars (thisarg), 1); /* skip over I */
-             
-             DPRINTF (("Directory: %s", dir));
-             
-             switch (opt)
-               {
-               case FLG_INCLUDEPATH:
-                 cppAddIncludeDir (dir);
-                 /*@switchbreak@*/ break;
-               case FLG_SPECPATH:
-                 /*@-mustfree@*/
-                 g_localSpecPath = cstring_toCharsSafe
-                   (message ("%s%h%s", 
-                             cstring_fromChars (g_localSpecPath), 
-                             PATH_SEPARATOR,
-                             dir));
-                 /*@=mustfree@*/
-                 /*@switchbreak@*/ break;
-                 BADDEFAULT;
-               }
-           }
-         else if (flagcode_isModeName (opt))
-           {
-             context_setMode (flagname);
-           }
-         else if (inCommandLine && flagcode_isMessageControlFlag (opt))
-           {
-             /*
-             ** Processed on first pass
-             */
-             
-             if (flagcode_hasArgument (opt))
-               {
-                 ++i;
-               }
-           }
-         else
-           {
-             /*
-             ** A normal control flag
-             */
-
-             context_userSetFlag (opt, set);
-             
-             if (flagcode_hasArgument (opt))
-               {
-                 if (flagcode_hasNumber (opt))
-                   {
-                     if (++i < argc)
-                       {
-                         setValueFlag (opt, cstring_fromChars (argv[i]));
-                       }
-                     else
-                       {
-                         voptgenerror
-                           (FLG_BADFLAG,
-                            message
-                            ("Flag %s must be followed by a number",
-                             flagcode_unparse (opt)),
-                            g_currentloc);
-                       }
-                   } 
-                 else if (flagcode_hasChar (opt))
-                   {
-                     if (++i < argc)
-                       {
-                         setValueFlag (opt, cstring_fromChars (argv[i]));
-                       }
-                     else
-                       {
-                         voptgenerror
-                           (FLG_BADFLAG,
-                            message
-                            ("Flag %s must be followed by a character",
-                             flagcode_unparse (opt)),
-                            g_currentloc);
-                       }
-                   } 
-                 else if (flagcode_hasString (opt)
-                          || opt == FLG_INIT || opt == FLG_OPTF)
-                   {
-                     if (++i < argc)
-                       {
-                         cstring arg = cstring_fromChars (argv[i]);
-                         
-                         if (opt == FLG_OPTF)
-                           {
-                             if (inCommandLine)
-                               {
-                                 ; /* -f already processed */
-                               }
-                             else
-                               {
-                                 (void) rcfiles_read (arg, passThroughArgs, TRUE);
-                               }
-                           }
-                         else if (opt == FLG_INIT)
-                           {
-# ifndef NOLCL
-                             lslinit_setInitFile (inputStream_create 
-                                                  (arg, 
-                                                   cstring_makeLiteralTemp (LCLINIT_SUFFIX),
-                                                   FALSE));
-# endif
-                             break;
-                           }
-                         else
-                           {
-                             DPRINTF (("String flag: %s / %s",
-                                       flagcode_unparse (opt), arg));
-                             if (opt == FLG_MTSFILE)
-                               {
-                                 /*
-                                 ** arg identifies mts files
-                                 */
-                                 cstring tmp =  message ("%s%s", arg, MTS_EXTENSION);
-                                 addLarchPathFile (mtfiles, tmp);
-                                 cstring_free (tmp);
-                                 tmp = message ("%s%s", arg, XH_EXTENSION);
-                                 addXHFile (xfiles, tmp);
-                                 cstring_free (tmp);
-                               }
-                             else
-                               {
-                                 setStringFlag (opt, cstring_copy (arg));
-                               }
-                           }
-                       }
-                     else
-                       {
-                         voptgenerror
-                           (FLG_BADFLAG,
-                            message
-                            ("Flag %s must be followed by a string",
-                             flagcode_unparse (opt)),
-                            g_currentloc);
-                       }
-                   }
-                 else
-                   {
-                     /* no argument */
-                   }
-               }
-           }
-       }
-      else /* its a filename */
-       {
-         DPRINTF (("Adding filename: %s", thisarg));
-         fl = cstringSList_add (fl, cstring_fromChars (thisarg));
-       }
-    }
-  
-  /*
-  ** create lists of C and LCL files
-  */
-  
-  if (inCommandLine)
-    {
-      cstringSList_elements (fl, current)
-       {
-         cstring ext = fileLib_getExtension (current);
-         
-         if (cstring_isUndefined (ext))
-           {
-             /* no extension --- both C and LCL with default extensions */
-             
-             addFile (cfiles, message ("%s%s", current, C_EXTENSION));
-             addFile (lclfiles, message ("%s%s", current, LCL_EXTENSION));
-           }
-         else if (cstring_equal (ext, XH_EXTENSION))
-           {
-             addXHFile (xfiles, current);
-           }
-         else if (cstring_equal (ext, PP_EXTENSION))
-           {
-             if (!context_getFlag (FLG_NOPP))
-               {
-                 voptgenerror 
-                   (FLG_FILEEXTENSIONS,
-                    message ("File extension %s used without +nopp flag (will be processed as C source code): %s", 
-                             ext, current),
-                    g_currentloc);
-               }
-             
-             addFile (cfiles, cstring_copy (current));
-           }
-         else if (cstring_equal (ext, LCL_EXTENSION)) 
-           {
-             addFile (lclfiles, cstring_copy (current));
-           }
-         else if (fileLib_isCExtension (ext))
-           {
-             addFile (cfiles, cstring_copy (current));
-           }
-         else if (cstring_equal (ext, MTS_EXTENSION))
-           {
-             addLarchPathFile (mtfiles, current);
-           }
-         else 
-           {
-             voptgenerror 
-               (FLG_FILEEXTENSIONS,
-                message ("Unrecognized file extension: %s (assuming %s is C source code)", 
-                         current, ext),
-                g_currentloc);
-             
-             addFile (cfiles, cstring_copy (current));
-           }
-       } end_cstringSList_elements;
-    }
-  else
-    {
-      if (cstringSList_size (fl) != 0)
-       {
-         /* Cannot list files in .splintrc files */
-         voptgenerror (FLG_BADFLAG, 
-                       message ("Cannot list files in .splintrc files: %s (probable missing + or -)",
-                                cstringSList_unparse (fl)),
-                       g_currentloc);
-       }
-    }
-}
+       
index f78ed3ba9b4a53583c932692f2af66e5cc5614de..f7507e6bf633d16189bfb4c2254ebffa02705f84 100644 (file)
@@ -1468,7 +1468,7 @@ static flaglist flags =
   },
   {
     FK_CONTROL, FK_NONE, plainFlag,
-    "emptyret", 
+    "emptyreturn", 
     FLG_EMPTYRETURN, 
     "empty return in function declared to return value",
     NULL,
@@ -1912,7 +1912,31 @@ static flaglist flags =
     NULL,
     0, 0
   },
-  
+  /*drl7x added 3/25/2001 */    
+  {
+    FK_BOUNDS, FK_MEMORY, plainFlag,
+    "generatecode",
+    FLG_GENERATECODE,
+    "This is currently an experimental flag.",
+    NULL,
+    0, 0
+  },
+  {
+    FK_BOUNDS, FK_MEMORY, plainFlag,
+    "generatecodeandoverwrite",
+    FLG_GENERATECODEANDOVERWRITE,
+    "This is currently an experimental flag.",
+    NULL,
+    0, 0
+  },
+    {
+    FK_BOUNDS, FK_MEMORY, plainFlag,
+    "instrumentloops",
+    FLG_INSTRUMENTLOOPS,
+    "This is currently an experimental flag.",
+    NULL,
+    0, 0
+  },
   {
     FK_BOUNDS, FK_MEMORY, plainFlag,
     "nullterminated",
@@ -2935,13 +2959,6 @@ static flaglist flags =
     "Should use <stdarg.h> instead.",
     0, 0
   },
-  {
-    FK_HEADERS, FK_FILES, plainFlag,
-    "caseinsensitivefilenames",
-    FLG_CASEINSENSITIVEFILENAMES,
-    "file names are case insensitive (file.h and FILE.H are the same file)",
-    NULL, 0, 0
-  },
 
   /* 14.2 Generating Libraries */
 
@@ -3270,13 +3287,6 @@ static flaglist flags =
     "show column number where error is found",
     NULL, 0, 0
   },
-  {
-    FK_FORMAT, FK_DISPLAY, plainFlag,
-    "showloadloc",
-    FLG_SHOWLOADLOC,
-    "show location information for load files",
-    NULL, 0, 0
-  },
   {
     FK_FORMAT, FK_DISPLAY, plainFlag,
     "parenfileformat",
@@ -4204,6 +4214,14 @@ static flaglist flags =
     "Splint has been run on a system file, by default no errors are reported for system files.  Use +systemdirerrors if you want splint to report errors in system files.  A file is considered a system file if it is in a system directory or a subdirectory of a system directory.  The sysdirs flag can be used to control the directories treated as system directories.",
     NULL, 0, 0
   },
+  {
+    FK_DISPLAY, FK_ERRORS, plainFlag,
+    "forceexitsucess",
+    FLG_FORCEEXITSUCESS,
+    "Force splint to return a value indicating a sucessfull exit even if splint generated warnings.",
+    NULL, 0, 0
+  },
+
   {
     FK_DISPLAY, FK_NONE, globalFlag,
     "stats",
index 5a2e090a6daa7668ee502557655eeb5ecc2c500a..c6595dcfb44d8e888f7fec1ff5ea350db0cd3ac2 100644 (file)
@@ -192,8 +192,8 @@ char *FormatInt (int i)
 {
   char temp[255]; /* assume the integer has at most 254 digits */
   char *outs;
-  int sres = snprintf (temp, 255, "%i", i);
-  check (sres >= 0 && sres <= 255);
+
+  sprintf (temp, "%i", i);
   outs = (char *) dmalloc (sizeof (*outs) * (1 + strlen (temp)));
   strcpy (outs, temp);
 
@@ -485,3 +485,28 @@ bool mstring_equal (/*@null@*/ const char *s1, /*@null@*/ const char *s2)
     }
 }
 
+/*drl added 4-15-2002 intened to be called on file names*/
+bool cstring_isDotH (cstring name)
+{
+  char lastCh;
+
+  /* fix this function.*/
+  
+  char * waste = malloc(10); /*remove this line*/
+    
+  DPRINTF((message("cstrint_isDotH: %s ", name) ) );
+  
+  lastCh = cstring_lastChar(name);
+  // Fix this
+  
+  if ( (lastCh == 'h') || (lastCh == 'r') )
+    {
+      DPRINTF((message("cstrint_isDotH: %s is .h ", name) ) );
+      return TRUE;
+    }
+  else
+    {
+      DPRINTF((message("cstrint_isDotH: %s is not .h", name) ) );
+      return FALSE;
+    }
+}
index 851c622819faa34d89aa4a2ac9bea090aa881c7e..16c9ef402724af16b2249b3b64be7ab6ec7149fb 100644 (file)
@@ -80,12 +80,179 @@ idDecl_unparse (idDecl d)
     }
 }
 
+/*drl added 04-22-2002
+  for code generate code
+*/
+
+cstring
+idDecl_unparseCNoType (idDecl d)
+{
+
+  if (ctype_isFunction ( qtype_getType (d->typ ) ) )
+    {
+
+      return idDecl_unparseC(d);
+    }
+  if (idDecl_isDefined (d))
+    {
+      return (message ("%s", d->id));
+    }
+  else
+    {
+      llassert(FALSE);
+      return (cstring_makeLiteral ("<undefined id>"));
+    }
+}
+
 cstring
 idDecl_unparseC (idDecl d)
 {
   if (idDecl_isDefined (d))
     {
-      return (message ("%q %s", qtype_unparse (d->typ), d->id));
+      if (qtype_isFixedArray(d->typ) )
+       {
+         cstring ret, arType, size;
+         
+         arType = qtype_unparseArrayType(d->typ);
+         size   = qtype_unparseArraySize(d->typ);
+         ret    = message ("%q %s %q", arType, d->id, size);
+         return ret;
+       }
+      else if (qtype_isArray(d->typ) )
+       {
+         cstring ret, arType;
+         
+         arType = qtype_unparseArrayType(d->typ);
+         ret    = message ("%q %s[]", arType, d->id);
+         return ret;
+       }
+      
+      else if (ctype_isFunction ( qtype_getType (d->typ ) ) )
+       {
+         cstring st, tmp, cQuals, ret;
+         
+         st = cstring_copy (d->id);
+         tmp =  ctype_unparseFunction ( qtype_getType (d->typ ), st);
+         if ( qualList_isDefined(idDecl_getQuals (d) ) )
+           {
+             cQuals = qualList_unparse(idDecl_getQuals(d) );
+           }
+         else
+           {
+             cQuals = cstring_undefined;
+           }
+         
+         ret = message("%q %q", cQuals, tmp);
+         return ret;
+       }
+      else
+       {
+         uentry ue;
+         fileloc loc;
+         typeId tId;
+
+         tId = ctype_typeId(qtype_getType(d->typ) );
+
+         ue = usymtab_getTypeEntry (tId);
+         
+         loc = uentry_whereDeclared(ue) ;
+         
+         DPRINTF(( message("id = %s ue: %s at %s", d->id, uentry_unparse(ue), fileloc_unparse(loc) ) ));
+         return (message ("%q %s", qtypetryToPrintStruct (d->typ), d->id));
+       }
+    }
+  else
+    {
+      return (cstring_makeLiteral ("<undefined id>"));
+    }
+}
+
+
+/*drl added 04-24-2002*/
+cstring
+idDecl_unparseCLoc (idDecl d, fileloc dLoc)
+{
+  if (idDecl_isDefined (d))
+    {
+      if (qtype_isFixedArray(d->typ) )
+       {
+         cstring ret, arType, size;
+         
+         arType = qtype_unparseArrayType(d->typ);
+         size   = qtype_unparseArraySize(d->typ);
+         ret    = message ("%q %s %q", arType, d->id, size);
+         return ret;
+       }
+      else if (qtype_isArray(d->typ) )
+       {
+         cstring ret, arType;
+         
+         arType = qtype_unparseArrayType(d->typ);
+         ret    = message ("%q %s[]", arType, d->id);
+         return ret;
+       }
+      else if (ctype_isFunctionPointer ( qtype_getType (d->typ ) ) )
+       {
+         cstring st, tmp, cQuals, ret;
+         
+         st = cstring_copy (d->id);
+                 
+         if ( qualList_isDefined(idDecl_getQuals (d) ) )
+           {
+             cQuals = qualList_unparse(idDecl_getQuals(d) );
+           }
+         else
+           {
+             cQuals = cstring_undefined;
+           }
+         
+         tmp = ctype_unparseFunctionPointer ( qtype_getType (d->typ ), cQuals, st);
+         ret = message("%q", tmp);
+         cstring_free(cQuals);
+         return ret;
+       }
+      else if (ctype_isFunction ( qtype_getType (d->typ ) ) )
+       {
+         cstring st, tmp, cQuals, ret;
+         
+         st = cstring_copy (d->id);
+         tmp =  ctype_unparseFunction ( qtype_getType (d->typ ), st);
+         if ( qualList_isDefined(idDecl_getQuals (d) ) )
+           {
+             cQuals = qualList_unparse(idDecl_getQuals(d) );
+           }
+         else
+           {
+             cQuals = cstring_undefined;
+           }
+         
+         ret = message("%q %q", cQuals, tmp);
+         return ret;
+       }
+      else
+       {
+         uentry ue;
+         fileloc loc;
+         typeId tId;
+
+         if (ctype_isUser(qtype_getType(d->typ) ) )
+           {
+             tId = ctype_typeId(qtype_getType(d->typ) );
+
+             ue = usymtab_getTypeEntry (tId);
+             
+             loc = uentry_whereDeclared(ue) ;
+             
+             DPRINTF(( message("id = %s ue: %s at %s", d->id, uentry_unparse(ue), fileloc_unparse(loc) ) ));
+             
+             if (fileloc_sameFileAndLine (loc, dLoc) )
+               return (message ("%q %s", qtypetryToPrintStruct (d->typ), d->id));
+           }
+         
+         return (message ("%s %s", qtype_unparse (d->typ), d->id));
+         
+       } /*end if (ctype_isFunction ...*/
     }
   else
     {
@@ -93,6 +260,7 @@ idDecl_unparseC (idDecl d)
     }
 }
 
+
 /*@observer@*/ cstring
 idDecl_observeId (idDecl d)
 {
index f6f697a4fc9073d6eff0cca534a69e593ebb8296..58a1260e28220c11e2a50cad13fbd6cc570836bb 100644 (file)
@@ -153,7 +153,7 @@ hasFirstChar (ltoken tok) /*@*/
 }
 
 void
-lclinit_process (void)
+LCLProcessInitFile (void)
 {
   InitLines ();
 
@@ -171,6 +171,8 @@ InitLines (void)
   setCodePoint ();
   InitReduce (INITLINES1);
 
+  
+
   if (ltoken_getCode (nextToken) != LEOFTOKEN)
     {
       InitLine ();
@@ -187,14 +189,15 @@ InitLines (void)
 static void
 InitLine (void)
 {
+  
   if (ltoken_getCode (nextToken) == LLT_EOL)
     {
       /* Nothing on line. */
-      InitReduce (INITLINE1);
+            InitReduce (INITLINE1);
     }
   else
     {
-      Classification ();
+            Classification ();
       InitReduce (INITLINE2);
     }
 
@@ -202,14 +205,15 @@ InitLine (void)
     {
       LocalUserError (nextToken, "Unexpected tokens on line");
     }
-  
+
   nextToken = LCLScanNextToken (); /* Discard EOL      */
-}
+  }
 
 static void
 Classification (void)
 {
   lsymbol ntext = ltoken_getRawText (nextToken);  
+
     
   if (ntext == ltoken_getText (endCommentCharToken)
       || ntext == ltoken_getText (idCharToken)
@@ -247,7 +251,7 @@ Classification (void)
     {
       llbug (message ("Expected character, token, or synonym classification: %s",
                      ltoken_getRawString (nextToken)));
-      /* pop off all tokens on this line */
+     /* pop off all tokens on this line */
     }
 }
 
@@ -255,7 +259,9 @@ static void
 CharClass (void)
 {
   ltoken charClassToken;
+
   charClassToken = nextToken;
+
   nextToken = LCLScanNextToken ();             /* Discard char class keyword. */
 
   if (ltoken_getRawText (charClassToken) == ltoken_getText (endCommentCharToken))
@@ -445,7 +451,7 @@ static void WhiteChar (void) /*@modifies nextToken@*/
 }
 
 static void
-TokenClass (void) /*@modifies nextToken@*/
+  TokenClass (void) /*@modifies nextToken@*/
 {
   ltoken tokenClassToken;
   lsymbol ttext = ltoken_getRawText (nextToken);
@@ -1465,7 +1471,7 @@ static void
  */
 
 void
-lclinit_initMod (void)
+LCLProcessInitFileInit (void)
 {
   int i;
 
@@ -1530,15 +1536,14 @@ lclinit_initMod (void)
 }
 
 void
-lclinit_reset (void)
+LCLProcessInitFileReset (void)
 {
   nextToken = LCLScanNextToken ();       
 }
 
 void
-lclinit_cleanup (void)
+LCLProcessInitFileCleanup (void)
 {
-  ;
 }
 
 
index 023e99c8714519ff96c5809c945f5ae86cf311aa..5f3374756b5d856083c424f78a4ed1ff47142c9f 100644 (file)
@@ -34,6 +34,7 @@
 # include "llmain.h"
 # include "cpperror.h"
 # include "Headers/version.h" /* Visual C++ finds a different version.h on some path! */
+# include<assert.h>
 
 /* Don't allow possibly-recursive assertion failures. */
 # undef llassert
@@ -173,7 +174,16 @@ void llerror_flagWarning (cstring s)
 {
   if (context_getFlag (FLG_WARNFLAGS))
     {
-      llgenmsg (s, g_currentloc);
+      showHerald ();
+
+      if (fileloc_isBuiltin (g_currentloc))
+       {
+         llmsg (message ("Warning: %q", s));
+       }
+      else
+       {
+         llgenmsg (message ("Warning: %q", s), g_currentloc);
+       }
     }
   else
     {
@@ -1328,6 +1338,7 @@ xllfatalbug (char *srcFile, int srcLine, /*@only@*/ cstring s)
   showSourceLoc (srcFile, srcLine);
   printCodePoint ();
   printBugReport ();
+  assert(FALSE);
   llexit (LLFAILURE);
 }
 
@@ -1945,16 +1956,10 @@ static bool s_scanOpen = FALSE;
 
 void displayScan (cstring msg)
 {
-  if (s_scanOpen)
-    {
-      displayScanClose ();
-    }
-
   llassert (!s_scanOpen);
 
   if (context_getFlag (FLG_SHOWSCAN))
     {
-      showHerald ();
       fprintf (g_messagestream, "< %s >\n", cstring_toCharsSafe (msg));
       (void) fflush (g_messagestream);
     }
@@ -1964,11 +1969,6 @@ void displayScan (cstring msg)
 
 void displayScanOpen (cstring msg)
 {
-  if (s_scanOpen)
-    {
-      displayScanClose ();
-    }
-
   llassert (!s_scanOpen);
   s_scanOpen = TRUE;
 
index 7f761c336c3547175bac98fb31fc6dec7e016c6f..391b59df5354b6a6f550d39c53edff86e4d65e3f 100644 (file)
@@ -51,8 +51,8 @@
 /* < end of bison.head > */
 
 
-/*  A Bison parser, made from llgrammar.y
-    by GNU Bison version 1.28  */
+/* A Bison parser, made from llgrammar.y
+   by GNU bison 1.30.  */
 
 #define YYBISON 1  /* Identify Bison output.  */
 
 #define yychar ylchar
 #define yydebug yldebug
 #define yynerrs ylnerrs
-#define        simpleOp        257
-#define        PREFIX_OP       258
-#define        POSTFIX_OP      259
-#define        LLT_MULOP       260
-#define        LLT_SEMI        261
-#define        LLT_VERTICALBAR 262
-#define        ITERATION_OP    263
-#define        LLT_LPAR        264
-#define        LLT_LBRACKET    265
-#define        selectSym       266
-#define        LLT_IF_THEN_ELSE        267
-#define        logicalOp       268
-#define        eqSepSym        269
-#define        equationSym     270
-#define        commentSym      271
-#define        LLT_WHITESPACE  272
-#define        LLT_EOL 273
-#define        LLT_TYPEDEF_NAME        274
-#define        quantifierSym   275
-#define        openSym 276
-#define        closeSym        277
-#define        sepSym  278
-#define        simpleId        279
-#define        mapSym  280
-#define        markerSym       281
-#define        preSym  282
-#define        postSym 283
-#define        anySym  284
-#define        LLT_COLON       285
-#define        LLT_COMMA       286
-#define        LLT_EQUALS      287
-#define        LLT_LBRACE      288
-#define        LLT_RBRACE      289
-#define        LLT_RBRACKET    290
-#define        LLT_RPAR        291
-#define        LLT_QUOTE       292
-#define        eqOp    293
-#define        LLT_CCHAR       294
-#define        LLT_CFLOAT      295
-#define        LLT_CINTEGER    296
-#define        LLT_LCSTRING    297
-#define        LLT_ALL 298
-#define        LLT_ANYTHING    299
-#define        LLT_BE  300
-#define        LLT_BODY        301
-#define        LLT_CLAIMS      302
-#define        LLT_CHECKS      303
-#define        LLT_CONSTANT    304
-#define        LLT_ELSE        305
-#define        LLT_ENSURES     306
-#define        LLT_FOR 307
-#define        LLT_FRESH       308
-#define        LLT_IF  309
-#define        LLT_IMMUTABLE   310
-#define        LLT_IMPORTS     311
-#define        LLT_CONSTRAINT  312
-#define        LLT_ISSUB       313
-#define        LLT_LET 314
-#define        LLT_MODIFIES    315
-#define        LLT_MUTABLE     316
-#define        LLT_NOTHING     317
-#define        LLT_INTERNAL    318
-#define        LLT_FILESYS     319
-#define        LLT_OBJ 320
-#define        LLT_OUT 321
-#define        LLT_SEF 322
-#define        LLT_ONLY        323
-#define        LLT_PARTIAL     324
-#define        LLT_OWNED       325
-#define        LLT_DEPENDENT   326
-#define        LLT_KEEP        327
-#define        LLT_KEPT        328
-#define        LLT_TEMP        329
-#define        LLT_SHARED      330
-#define        LLT_UNIQUE      331
-#define        LLT_UNUSED      332
-#define        LLT_EXITS       333
-#define        LLT_MAYEXIT     334
-#define        LLT_NEVEREXIT   335
-#define        LLT_TRUEEXIT    336
-#define        LLT_FALSEEXIT   337
-#define        LLT_UNDEF       338
-#define        LLT_KILLED      339
-#define        LLT_CHECKMOD    340
-#define        LLT_CHECKED     341
-#define        LLT_UNCHECKED   342
-#define        LLT_CHECKEDSTRICT       343
-#define        LLT_TRUENULL    344
-#define        LLT_FALSENULL   345
-#define        LLT_LNULL       346
-#define        LLT_LNOTNULL    347
-#define        LLT_RETURNED    348
-#define        LLT_OBSERVER    349
-#define        LLT_EXPOSED     350
-#define        LLT_REFCOUNTED  351
-#define        LLT_REFS        352
-#define        LLT_RELNULL     353
-#define        LLT_RELDEF      354
-#define        LLT_KILLREF     355
-#define        LLT_NULLTERMINATED      356
-#define        LLT_TEMPREF     357
-#define        LLT_NEWREF      358
-#define        LLT_PRIVATE     359
-#define        LLT_REQUIRES    360
-#define        LLT_RESULT      361
-#define        LLT_SIZEOF      362
-#define        LLT_SPEC        363
-#define        LLT_TAGGEDUNION 364
-#define        LLT_THEN        365
-#define        LLT_TYPE        366
-#define        LLT_TYPEDEF     367
-#define        LLT_UNCHANGED   368
-#define        LLT_USES        369
-#define        LLT_CHAR        370
-#define        LLT_CONST       371
-#define        LLT_DOUBLE      372
-#define        LLT_ENUM        373
-#define        LLT_FLOAT       374
-#define        LLT_INT 375
-#define        LLT_ITER        376
-#define        LLT_YIELD       377
-#define        LLT_LONG        378
-#define        LLT_SHORT       379
-#define        LLT_SIGNED      380
-#define        LLT_UNKNOWN     381
-#define        LLT_STRUCT      382
-#define        LLT_TELIPSIS    383
-#define        LLT_UNION       384
-#define        LLT_UNSIGNED    385
-#define        LLT_VOID        386
-#define        LLT_VOLATILE    387
-#define        LLT_PRINTFLIKE  388
-#define        LLT_SCANFLIKE   389
-#define        LLT_MESSAGELIKE 390
+# define       simpleOp        257
+# define       PREFIX_OP       258
+# define       POSTFIX_OP      259
+# define       LLT_MULOP       260
+# define       LLT_SEMI        261
+# define       LLT_VERTICALBAR 262
+# define       ITERATION_OP    263
+# define       LLT_LPAR        264
+# define       LLT_LBRACKET    265
+# define       selectSym       266
+# define       LLT_IF_THEN_ELSE        267
+# define       logicalOp       268
+# define       eqSepSym        269
+# define       equationSym     270
+# define       commentSym      271
+# define       LLT_WHITESPACE  272
+# define       LLT_EOL 273
+# define       LLT_TYPEDEF_NAME        274
+# define       quantifierSym   275
+# define       openSym 276
+# define       closeSym        277
+# define       sepSym  278
+# define       simpleId        279
+# define       mapSym  280
+# define       markerSym       281
+# define       preSym  282
+# define       postSym 283
+# define       anySym  284
+# define       LLT_COLON       285
+# define       LLT_COMMA       286
+# define       LLT_EQUALS      287
+# define       LLT_LBRACE      288
+# define       LLT_RBRACE      289
+# define       LLT_RBRACKET    290
+# define       LLT_RPAR        291
+# define       LLT_QUOTE       292
+# define       eqOp    293
+# define       LLT_CCHAR       294
+# define       LLT_CFLOAT      295
+# define       LLT_CINTEGER    296
+# define       LLT_LCSTRING    297
+# define       LLT_ALL 298
+# define       LLT_ANYTHING    299
+# define       LLT_BE  300
+# define       LLT_BODY        301
+# define       LLT_CLAIMS      302
+# define       LLT_CHECKS      303
+# define       LLT_CONSTANT    304
+# define       LLT_ELSE        305
+# define       LLT_ENSURES     306
+# define       LLT_FOR 307
+# define       LLT_FRESH       308
+# define       LLT_IF  309
+# define       LLT_IMMUTABLE   310
+# define       LLT_IMPORTS     311
+# define       LLT_CONSTRAINT  312
+# define       LLT_ISSUB       313
+# define       LLT_LET 314
+# define       LLT_MODIFIES    315
+# define       LLT_MUTABLE     316
+# define       LLT_NOTHING     317
+# define       LLT_INTERNAL    318
+# define       LLT_FILESYS     319
+# define       LLT_OBJ 320
+# define       LLT_OUT 321
+# define       LLT_SEF 322
+# define       LLT_ONLY        323
+# define       LLT_PARTIAL     324
+# define       LLT_OWNED       325
+# define       LLT_DEPENDENT   326
+# define       LLT_KEEP        327
+# define       LLT_KEPT        328
+# define       LLT_TEMP        329
+# define       LLT_SHARED      330
+# define       LLT_UNIQUE      331
+# define       LLT_UNUSED      332
+# define       LLT_EXITS       333
+# define       LLT_MAYEXIT     334
+# define       LLT_NEVEREXIT   335
+# define       LLT_TRUEEXIT    336
+# define       LLT_FALSEEXIT   337
+# define       LLT_UNDEF       338
+# define       LLT_KILLED      339
+# define       LLT_CHECKMOD    340
+# define       LLT_CHECKED     341
+# define       LLT_UNCHECKED   342
+# define       LLT_CHECKEDSTRICT       343
+# define       LLT_TRUENULL    344
+# define       LLT_FALSENULL   345
+# define       LLT_LNULL       346
+# define       LLT_LNOTNULL    347
+# define       LLT_RETURNED    348
+# define       LLT_OBSERVER    349
+# define       LLT_EXPOSED     350
+# define       LLT_REFCOUNTED  351
+# define       LLT_REFS        352
+# define       LLT_RELNULL     353
+# define       LLT_RELDEF      354
+# define       LLT_KILLREF     355
+# define       LLT_NULLTERMINATED      356
+# define       LLT_TEMPREF     357
+# define       LLT_NEWREF      358
+# define       LLT_PRIVATE     359
+# define       LLT_REQUIRES    360
+# define       LLT_RESULT      361
+# define       LLT_SIZEOF      362
+# define       LLT_SPEC        363
+# define       LLT_TAGGEDUNION 364
+# define       LLT_THEN        365
+# define       LLT_TYPE        366
+# define       LLT_TYPEDEF     367
+# define       LLT_UNCHANGED   368
+# define       LLT_USES        369
+# define       LLT_CHAR        370
+# define       LLT_CONST       371
+# define       LLT_DOUBLE      372
+# define       LLT_ENUM        373
+# define       LLT_FLOAT       374
+# define       LLT_INT 375
+# define       LLT_ITER        376
+# define       LLT_YIELD       377
+# define       LLT_LONG        378
+# define       LLT_SHORT       379
+# define       LLT_SIGNED      380
+# define       LLT_UNKNOWN     381
+# define       LLT_STRUCT      382
+# define       LLT_TELIPSIS    383
+# define       LLT_UNION       384
+# define       LLT_UNSIGNED    385
+# define       LLT_VOID        386
+# define       LLT_VOLATILE    387
+# define       LLT_PRINTFLIKE  388
+# define       LLT_SCANFLIKE   389
+# define       LLT_MESSAGELIKE 390
 
 
 
@@ -276,7 +276,6 @@ typedef union
   /*@only@*/ abstBodyNode abstbody;
   /*@only@*/ abstractNode abstract;
   /*@only@*/ exposedNode exposed;
-  /*@only@*/ pointers pointers;
   /*    taggedUnionNode taggedunion; */
   /*@only@*/ globalList globals;
   /*@only@*/ constDeclarationNode constdeclaration;
@@ -307,1294 +306,1325 @@ typedef union
   /*@-redef@*/
 } YYSTYPE;
 #ifndef YYDEBUG
-#define YYDEBUG 1
+# define YYDEBUG 1
 #endif
 
 #include <stdio.h>
 
-#ifndef __cplusplus
-#ifndef __STDC__
-#define const
-#endif
-#endif
-
 
 
 #define        YYFINAL         684
 #define        YYFLAG          -32768
 #define        YYNTBASE        137
 
+/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
 #define YYTRANSLATE(x) ((unsigned)(x) <= 390 ? yytranslate[x] : 291)
 
-static const short yytranslate[] = {     0,
-     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,
-     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,
-    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-    47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-    57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-    77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
-    87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-    97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-   107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-   117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
-   127,   128,   129,   130,   131,   132,   133,   134,   135,   136
+/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
+static const short yytranslate[] =
+{
+       0,     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,     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,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+     136
 };
 
 #if YYDEBUG != 0
-static const short yyprhs[] = {     0,
-     0,     1,     5,     6,     9,    11,    13,    14,    17,    20,
-    21,    24,    26,    28,    30,    34,    38,    40,    42,    44,
-    46,    48,    50,    57,    58,    60,    62,    66,    69,    71,
-    72,    76,    78,    80,    82,    84,    89,    93,    98,   103,
-   105,   107,   109,   111,   113,   114,   128,   129,   144,   145,
-   159,   164,   165,   166,   173,   174,   175,   183,   184,   185,
-   193,   194,   195,   202,   203,   204,   211,   214,   217,   219,
-   223,   225,   229,   231,   233,   237,   239,   241,   245,   247,
-   252,   256,   263,   265,   269,   271,   273,   277,   279,   283,
-   285,   289,   293,   297,   302,   304,   306,   308,   310,   312,
-   316,   318,   322,   323,   326,   330,   333,   336,   337,   340,
-   345,   346,   350,   352,   356,   362,   366,   368,   369,   373,
-   374,   378,   379,   383,   387,   391,   393,   397,   399,   401,
-   404,   406,   408,   409,   413,   414,   418,   419,   421,   423,
-   425,   429,   431,   435,   436,   441,   447,   449,   453,   456,
-   460,   464,   469,   473,   479,   486,   488,   492,   494,   496,
-   499,   502,   506,   510,   514,   519,   521,   525,   530,   534,
-   535,   538,   539,   541,   542,   549,   551,   555,   556,   560,
-   561,   565,   567,   569,   571,   573,   575,   577,   579,   581,
-   583,   585,   587,   590,   592,   594,   596,   598,   600,   602,
-   604,   606,   608,   610,   612,   614,   616,   618,   620,   622,
-   624,   626,   628,   630,   632,   634,   636,   638,   640,   642,
-   644,   646,   648,   650,   652,   654,   656,   658,   660,   662,
-   664,   666,   668,   670,   672,   675,   681,   683,   686,   688,
-   691,   692,   699,   700,   707,   710,   713,   714,   716,   718,
-   721,   725,   727,   731,   732,   734,   741,   744,   746,   750,
-   752,   754,   756,   760,   763,   766,   770,   775,   777,   781,
-   784,   787,   791,   796,   798,   801,   804,   808,   813,   816,
-   819,   822,   825,   829,   831,   832,   834,   838,   841,   843,
-   845,   848,   852,   856,   861,   864,   868,   875,   877,   880,
-   883,   887,   891,   896,   901,   907,   911,   916,   921,   927,
-   930,   933,   937,   941,   943,   945,   947,   949,   951,   953,
-   955,   956,   958,   960,   964,   966,   968,   973,   974,   976,
-   978,   982,   984,   986,   993,   995,   999,  1001,  1006,  1010,
-  1014,  1016,  1019,  1022,  1024,  1026,  1028,  1031,  1033,  1036,
-  1039,  1043,  1045,  1047,  1050,  1053,  1057,  1059,  1062,  1066,
-  1068,  1074,  1078,  1083,  1086,  1090,  1093,  1095,  1099,  1103,
-  1105,  1110,  1112,  1115,  1119,  1123,  1127,  1132,  1136,  1138,
-  1142,  1144,  1146,  1148,  1150,  1152,  1154,  1159,  1164,  1169,
-  1174,  1181,  1186,  1188,  1190,  1192,  1194,  1196,  1199,  1200,
-  1204,  1206,  1210,  1214,  1219,  1221,  1223,  1225,  1227,  1229,
-  1231,  1233,  1235
+static const short yyprhs[] =
+{
+       0,     0,     1,     5,     6,     9,    11,    13,    14,    17,
+      20,    21,    24,    26,    28,    30,    34,    38,    40,    42,
+      44,    46,    48,    50,    57,    58,    60,    62,    66,    69,
+      71,    72,    76,    78,    80,    82,    84,    89,    93,    98,
+     103,   105,   107,   109,   111,   113,   114,   128,   129,   144,
+     145,   159,   164,   165,   166,   173,   174,   175,   183,   184,
+     185,   193,   194,   195,   202,   203,   204,   211,   214,   217,
+     219,   223,   225,   229,   231,   233,   237,   239,   241,   245,
+     247,   252,   256,   263,   265,   269,   271,   273,   277,   279,
+     283,   285,   289,   293,   297,   302,   304,   306,   308,   310,
+     312,   316,   318,   322,   323,   326,   330,   333,   336,   337,
+     340,   345,   346,   350,   352,   356,   362,   366,   368,   369,
+     373,   374,   378,   379,   383,   387,   391,   393,   397,   399,
+     401,   404,   406,   408,   409,   413,   414,   418,   419,   421,
+     423,   425,   429,   431,   435,   436,   441,   447,   449,   453,
+     456,   460,   464,   469,   473,   479,   486,   488,   492,   494,
+     496,   499,   502,   506,   510,   514,   519,   521,   525,   530,
+     534,   535,   538,   539,   541,   542,   549,   551,   555,   556,
+     560,   561,   565,   567,   569,   571,   573,   575,   577,   579,
+     581,   583,   585,   587,   590,   592,   594,   596,   598,   600,
+     602,   604,   606,   608,   610,   612,   614,   616,   618,   620,
+     622,   624,   626,   628,   630,   632,   634,   636,   638,   640,
+     642,   644,   646,   648,   650,   652,   654,   656,   658,   660,
+     662,   664,   666,   668,   670,   672,   675,   681,   683,   686,
+     688,   691,   692,   699,   700,   707,   710,   713,   714,   716,
+     718,   721,   725,   727,   731,   732,   734,   741,   744,   746,
+     750,   752,   754,   756,   760,   763,   766,   770,   775,   777,
+     781,   784,   787,   791,   796,   798,   801,   804,   808,   813,
+     816,   819,   822,   825,   829,   831,   832,   834,   838,   841,
+     843,   845,   848,   852,   856,   861,   864,   868,   875,   877,
+     880,   883,   887,   891,   896,   901,   907,   911,   916,   921,
+     927,   930,   933,   937,   941,   943,   945,   947,   949,   951,
+     953,   955,   956,   958,   960,   964,   966,   968,   973,   974,
+     976,   978,   982,   984,   986,   993,   995,   999,  1001,  1006,
+    1010,  1014,  1016,  1019,  1022,  1024,  1026,  1028,  1031,  1033,
+    1036,  1039,  1043,  1045,  1047,  1050,  1053,  1057,  1059,  1062,
+    1066,  1068,  1074,  1078,  1083,  1086,  1090,  1093,  1095,  1099,
+    1103,  1105,  1110,  1112,  1115,  1119,  1123,  1127,  1132,  1136,
+    1138,  1142,  1144,  1146,  1148,  1150,  1152,  1154,  1159,  1164,
+    1169,  1174,  1181,  1186,  1188,  1190,  1192,  1194,  1196,  1199,
+    1200,  1204,  1206,  1210,  1214,  1219,  1221,  1223,  1225,  1227,
+    1229,  1231,  1233,  1235
 };
-
-static const short yyrhs[] = {    -1,
-   139,   138,   141,     0,     0,   139,   140,     0,   144,     0,
-   145,     0,     0,   146,   142,     0,   151,   142,     0,     0,
-   142,   143,     0,   146,     0,   151,     0,   145,     0,    57,
-   175,     7,     0,   115,   179,     7,     0,   154,     0,   155,
-     0,   156,     0,   158,     0,   161,     0,   147,     0,   122,
-   285,    10,   148,    37,     7,     0,     0,   149,     0,   150,
-     0,   149,    32,   150,     0,   123,   244,     0,   244,     0,
-     0,   109,   152,   153,     0,   154,     0,   155,     0,   156,
-     0,   158,     0,    50,   227,   189,     7,     0,   227,   189,
-     7,     0,   117,   227,   189,     7,     0,   133,   227,   189,
-     7,     0,   163,     0,   172,     0,   134,     0,   135,     0,
-   136,     0,     0,   227,   240,   191,   159,    34,   193,   195,
-   199,   200,   201,   204,   205,    35,     0,     0,   157,   227,
-   240,   191,   160,    34,   193,   195,   199,   200,   201,   204,
-   205,    35,     0,     0,    48,   287,    10,   206,    37,   191,
-   162,    34,   195,   200,   209,   204,    35,     0,    48,   284,
-   287,     7,     0,     0,     0,    62,   164,   112,    20,   165,
-   214,     0,     0,     0,    62,   166,    97,   112,    20,   167,
-   214,     0,     0,     0,    97,    62,   168,   112,    20,   169,
-   214,     0,     0,     0,    56,   170,   112,    20,   171,   214,
-     0,     0,     0,   113,   227,   173,   219,   174,     7,     0,
-   230,     7,     0,   238,     7,     0,   176,     0,   175,    32,
-   176,     0,   178,     0,     3,   178,     3,     0,    43,     0,
-   178,     0,   177,    32,   178,     0,   283,     0,   180,     0,
-   179,    32,   180,     0,   289,     0,   289,    10,   182,    37,
-     0,    10,   181,    37,     0,    10,   181,    37,    10,   182,
-    37,     0,   289,     0,   181,    32,   289,     0,   184,     0,
-   183,     0,   183,    32,   184,     0,   245,     0,   183,    32,
-   245,     0,   185,     0,   184,    32,   185,     0,   245,    53,
-   223,     0,   245,    53,   186,     0,   245,    53,   186,   256,
-     0,   290,     0,   249,     0,   188,     0,   260,     0,   190,
-     0,   189,    32,   190,     0,   240,     0,   240,    33,   187,
-     0,     0,   191,   192,     0,   227,   189,     7,     0,    64,
-     7,     0,    65,     7,     0,     0,   193,   194,     0,   105,
-   227,   189,     7,     0,     0,    60,   196,     7,     0,   197,
-     0,   196,    32,   197,     0,   285,    31,   198,    46,   260,
-     0,   285,    46,   260,     0,   227,     0,     0,    49,   259,
-     7,     0,     0,   106,   259,     7,     0,     0,    61,    63,
-     7,     0,    61,    45,     7,     0,    61,   202,     7,     0,
-   203,     0,   202,    32,   203,     0,   260,     0,   228,     0,
-    66,   228,     0,    64,     0,    65,     0,     0,    52,   259,
-     7,     0,     0,    48,   259,     7,     0,     0,   207,     0,
-   208,     0,   129,     0,   208,    32,   129,     0,   244,     0,
-   208,    32,   244,     0,     0,    47,    34,   210,    35,     0,
-    47,    34,   210,     7,    35,     0,   211,     0,    10,   210,
-    37,     0,   210,     6,     0,   210,     8,   210,     0,   210,
-     7,   210,     0,   284,    10,   212,    37,     0,   284,    10,
-    37,     0,   285,    33,   284,    10,    37,     0,   285,    33,
-   284,    10,   212,    37,     0,   213,     0,   212,    32,   213,
-     0,   277,     0,   285,     0,     3,   213,     0,   213,     3,
-     0,   213,     3,   213,     0,    10,   213,    37,     0,   284,
-    10,    37,     0,   284,    10,   212,    37,     0,     7,     0,
-    34,   215,    35,     0,    34,   177,    35,     7,     0,    34,
-    35,     7,     0,     0,   215,   158,     0,     0,   217,     0,
-     0,    58,   218,   279,    10,   259,    37,     0,   220,     0,
-   219,    32,   220,     0,     0,   240,   221,   222,     0,     0,
-    34,   216,    35,     0,   132,     0,   116,     0,   118,     0,
-   120,     0,   121,     0,   124,     0,   125,     0,   126,     0,
-   131,     0,   127,     0,   223,     0,   224,   223,     0,    20,
-     0,   224,     0,    67,     0,    78,     0,    68,     0,    69,
-     0,    71,     0,    72,     0,    73,     0,    74,     0,    95,
-     0,    79,     0,    80,     0,    82,     0,    83,     0,    81,
-     0,    75,     0,    76,     0,    77,     0,    87,     0,    88,
-     0,    89,     0,    90,     0,    91,     0,    99,     0,   100,
-     0,    97,     0,    98,     0,   104,     0,   101,     0,    92,
-     0,    93,     0,    94,     0,    96,     0,    70,     0,   102,
-     0,    84,     0,    85,     0,   225,     0,   230,     0,   238,
-     0,   226,   227,     0,     8,   228,    31,   228,     8,     0,
-   227,     0,   227,   229,     0,     6,     0,   229,     6,     0,
-     0,   128,   233,   231,    34,   234,    35,     0,     0,   130,
-   233,   232,    34,   234,    35,     0,   128,   286,     0,   130,
-   286,     0,     0,   286,     0,   235,     0,   234,   235,     0,
-   227,   236,     7,     0,   240,     0,   236,    32,   240,     0,
-     0,    32,     0,   119,   233,    34,   239,   237,    35,     0,
-   119,   286,     0,    25,     0,   239,    32,    25,     0,   242,
-     0,   241,     0,   285,     0,    10,   241,    37,     0,     6,
-   241,     0,   241,   248,     0,   241,    10,    37,     0,   241,
-    10,   207,    37,     0,    20,     0,    10,   242,    37,     0,
-     6,   242,     0,   242,   248,     0,   242,    10,    37,     0,
-   242,    10,   207,    37,     0,    20,     0,     6,   243,     0,
-   243,   248,     0,   243,    10,    37,     0,   243,    10,   207,
-    37,     0,   227,   243,     0,   227,   241,     0,   227,   246,
-     0,   227,   246,     0,    66,   227,   246,     0,   249,     0,
-     0,   247,     0,    10,   247,    37,     0,     6,   247,     0,
-     6,     0,   248,     0,   247,   248,     0,   247,    10,    37,
-     0,    10,   207,    37,     0,   247,    10,   207,    37,     0,
-    11,    36,     0,    11,   188,    36,     0,    55,    27,   111,
-    27,    51,    27,     0,   252,     0,    27,   252,     0,   252,
-    27,     0,    27,   252,    27,     0,   250,   253,   251,     0,
-    27,   250,   253,   251,     0,   250,   253,   251,    27,     0,
-    27,   250,   253,   251,    27,     0,    11,   253,    36,     0,
-    11,   253,    36,    27,     0,    27,    11,   253,    36,     0,
-    27,    11,   253,    36,    27,     0,    12,   283,     0,    26,
-   283,     0,    27,    12,   283,     0,    27,    26,   283,     0,
-    22,     0,    34,     0,    23,     0,    35,     0,   264,     0,
-    14,     0,    39,     0,     0,   254,     0,    27,     0,   254,
-   255,    27,     0,    32,     0,    24,     0,    31,   257,    26,
-   288,     0,     0,   258,     0,   288,     0,   258,    32,   288,
-     0,   260,     0,   261,     0,    55,   261,   111,   261,    51,
-   261,     0,   262,     0,   261,    14,   261,     0,   263,     0,
-   278,    10,   259,    37,     0,   263,    39,   263,     0,   263,
-    33,   263,     0,   265,     0,   268,   266,     0,   268,   267,
-     0,     3,     0,     6,     0,   268,     0,   264,   265,     0,
-   264,     0,   266,   264,     0,   264,   268,     0,   267,   264,
-   268,     0,   273,     0,   269,     0,   269,   273,     0,   273,
-   269,     0,   273,   269,   273,     0,   270,     0,   270,   273,
-     0,   271,    31,   288,     0,   271,     0,    11,   272,    36,
-    31,   288,     0,    11,   272,    36,     0,    11,    36,    31,
-   288,     0,    11,    36,     0,   250,   272,   251,     0,   250,
-   251,     0,   260,     0,   272,   255,   260,     0,    10,   261,
-    37,     0,   285,     0,   290,    10,   274,    37,     0,   276,
-     0,   273,   275,     0,   273,    12,   283,     0,   273,    26,
-   283,     0,   273,    11,    36,     0,   273,    11,   274,    36,
-     0,   273,    31,   288,     0,   261,     0,   274,    32,   261,
-     0,    28,     0,    29,     0,    30,     0,    38,     0,   277,
-     0,   107,     0,    54,    10,   274,    37,     0,   114,    10,
-    44,    37,     0,   114,    10,   202,    37,     0,   108,    10,
-   260,    37,     0,    59,    10,   260,    32,   260,    37,     0,
-   108,    10,   227,    37,     0,    42,     0,    43,     0,    40,
-     0,    41,     0,   279,     0,   278,   279,     0,     0,    21,
-   280,   281,     0,   282,     0,   281,    32,   282,     0,   285,
-    31,   198,     0,   285,    31,    66,   198,     0,    25,     0,
-    20,     0,    25,     0,    25,     0,   283,     0,   283,     0,
-   283,     0,   283,     0,   283,     0
+static const short yyrhs[] =
+{
+      -1,   139,   138,   141,     0,     0,   139,   140,     0,   144,
+       0,   145,     0,     0,   146,   142,     0,   151,   142,     0,
+       0,   142,   143,     0,   146,     0,   151,     0,   145,     0,
+      57,   175,     7,     0,   115,   179,     7,     0,   154,     0,
+     155,     0,   156,     0,   158,     0,   161,     0,   147,     0,
+     122,   285,    10,   148,    37,     7,     0,     0,   149,     0,
+     150,     0,   149,    32,   150,     0,   123,   244,     0,   244,
+       0,     0,   109,   152,   153,     0,   154,     0,   155,     0,
+     156,     0,   158,     0,    50,   227,   189,     7,     0,   227,
+     189,     7,     0,   117,   227,   189,     7,     0,   133,   227,
+     189,     7,     0,   163,     0,   172,     0,   134,     0,   135,
+       0,   136,     0,     0,   227,   240,   191,   159,    34,   193,
+     195,   199,   200,   201,   204,   205,    35,     0,     0,   157,
+     227,   240,   191,   160,    34,   193,   195,   199,   200,   201,
+     204,   205,    35,     0,     0,    48,   287,    10,   206,    37,
+     191,   162,    34,   195,   200,   209,   204,    35,     0,    48,
+     284,   287,     7,     0,     0,     0,    62,   164,   112,    20,
+     165,   214,     0,     0,     0,    62,   166,    97,   112,    20,
+     167,   214,     0,     0,     0,    97,    62,   168,   112,    20,
+     169,   214,     0,     0,     0,    56,   170,   112,    20,   171,
+     214,     0,     0,     0,   113,   227,   173,   219,   174,     7,
+       0,   230,     7,     0,   238,     7,     0,   176,     0,   175,
+      32,   176,     0,   178,     0,     3,   178,     3,     0,    43,
+       0,   178,     0,   177,    32,   178,     0,   283,     0,   180,
+       0,   179,    32,   180,     0,   289,     0,   289,    10,   182,
+      37,     0,    10,   181,    37,     0,    10,   181,    37,    10,
+     182,    37,     0,   289,     0,   181,    32,   289,     0,   184,
+       0,   183,     0,   183,    32,   184,     0,   245,     0,   183,
+      32,   245,     0,   185,     0,   184,    32,   185,     0,   245,
+      53,   223,     0,   245,    53,   186,     0,   245,    53,   186,
+     256,     0,   290,     0,   249,     0,   188,     0,   260,     0,
+     190,     0,   189,    32,   190,     0,   240,     0,   240,    33,
+     187,     0,     0,   191,   192,     0,   227,   189,     7,     0,
+      64,     7,     0,    65,     7,     0,     0,   193,   194,     0,
+     105,   227,   189,     7,     0,     0,    60,   196,     7,     0,
+     197,     0,   196,    32,   197,     0,   285,    31,   198,    46,
+     260,     0,   285,    46,   260,     0,   227,     0,     0,    49,
+     259,     7,     0,     0,   106,   259,     7,     0,     0,    61,
+      63,     7,     0,    61,    45,     7,     0,    61,   202,     7,
+       0,   203,     0,   202,    32,   203,     0,   260,     0,   228,
+       0,    66,   228,     0,    64,     0,    65,     0,     0,    52,
+     259,     7,     0,     0,    48,   259,     7,     0,     0,   207,
+       0,   208,     0,   129,     0,   208,    32,   129,     0,   244,
+       0,   208,    32,   244,     0,     0,    47,    34,   210,    35,
+       0,    47,    34,   210,     7,    35,     0,   211,     0,    10,
+     210,    37,     0,   210,     6,     0,   210,     8,   210,     0,
+     210,     7,   210,     0,   284,    10,   212,    37,     0,   284,
+      10,    37,     0,   285,    33,   284,    10,    37,     0,   285,
+      33,   284,    10,   212,    37,     0,   213,     0,   212,    32,
+     213,     0,   277,     0,   285,     0,     3,   213,     0,   213,
+       3,     0,   213,     3,   213,     0,    10,   213,    37,     0,
+     284,    10,    37,     0,   284,    10,   212,    37,     0,     7,
+       0,    34,   215,    35,     0,    34,   177,    35,     7,     0,
+      34,    35,     7,     0,     0,   215,   158,     0,     0,   217,
+       0,     0,    58,   218,   279,    10,   259,    37,     0,   220,
+       0,   219,    32,   220,     0,     0,   240,   221,   222,     0,
+       0,    34,   216,    35,     0,   132,     0,   116,     0,   118,
+       0,   120,     0,   121,     0,   124,     0,   125,     0,   126,
+       0,   131,     0,   127,     0,   223,     0,   224,   223,     0,
+      20,     0,   224,     0,    67,     0,    78,     0,    68,     0,
+      69,     0,    71,     0,    72,     0,    73,     0,    74,     0,
+      95,     0,    79,     0,    80,     0,    82,     0,    83,     0,
+      81,     0,    75,     0,    76,     0,    77,     0,    87,     0,
+      88,     0,    89,     0,    90,     0,    91,     0,    99,     0,
+     100,     0,    97,     0,    98,     0,   104,     0,   101,     0,
+      92,     0,    93,     0,    94,     0,    96,     0,    70,     0,
+     102,     0,    84,     0,    85,     0,   225,     0,   230,     0,
+     238,     0,   226,   227,     0,     8,   228,    31,   228,     8,
+       0,   227,     0,   227,   229,     0,     6,     0,   229,     6,
+       0,     0,   128,   233,   231,    34,   234,    35,     0,     0,
+     130,   233,   232,    34,   234,    35,     0,   128,   286,     0,
+     130,   286,     0,     0,   286,     0,   235,     0,   234,   235,
+       0,   227,   236,     7,     0,   240,     0,   236,    32,   240,
+       0,     0,    32,     0,   119,   233,    34,   239,   237,    35,
+       0,   119,   286,     0,    25,     0,   239,    32,    25,     0,
+     242,     0,   241,     0,   285,     0,    10,   241,    37,     0,
+       6,   241,     0,   241,   248,     0,   241,    10,    37,     0,
+     241,    10,   207,    37,     0,    20,     0,    10,   242,    37,
+       0,     6,   242,     0,   242,   248,     0,   242,    10,    37,
+       0,   242,    10,   207,    37,     0,    20,     0,     6,   243,
+       0,   243,   248,     0,   243,    10,    37,     0,   243,    10,
+     207,    37,     0,   227,   243,     0,   227,   241,     0,   227,
+     246,     0,   227,   246,     0,    66,   227,   246,     0,   249,
+       0,     0,   247,     0,    10,   247,    37,     0,     6,   247,
+       0,     6,     0,   248,     0,   247,   248,     0,   247,    10,
+      37,     0,    10,   207,    37,     0,   247,    10,   207,    37,
+       0,    11,    36,     0,    11,   188,    36,     0,    55,    27,
+     111,    27,    51,    27,     0,   252,     0,    27,   252,     0,
+     252,    27,     0,    27,   252,    27,     0,   250,   253,   251,
+       0,    27,   250,   253,   251,     0,   250,   253,   251,    27,
+       0,    27,   250,   253,   251,    27,     0,    11,   253,    36,
+       0,    11,   253,    36,    27,     0,    27,    11,   253,    36,
+       0,    27,    11,   253,    36,    27,     0,    12,   283,     0,
+      26,   283,     0,    27,    12,   283,     0,    27,    26,   283,
+       0,    22,     0,    34,     0,    23,     0,    35,     0,   264,
+       0,    14,     0,    39,     0,     0,   254,     0,    27,     0,
+     254,   255,    27,     0,    32,     0,    24,     0,    31,   257,
+      26,   288,     0,     0,   258,     0,   288,     0,   258,    32,
+     288,     0,   260,     0,   261,     0,    55,   261,   111,   261,
+      51,   261,     0,   262,     0,   261,    14,   261,     0,   263,
+       0,   278,    10,   259,    37,     0,   263,    39,   263,     0,
+     263,    33,   263,     0,   265,     0,   268,   266,     0,   268,
+     267,     0,     3,     0,     6,     0,   268,     0,   264,   265,
+       0,   264,     0,   266,   264,     0,   264,   268,     0,   267,
+     264,   268,     0,   273,     0,   269,     0,   269,   273,     0,
+     273,   269,     0,   273,   269,   273,     0,   270,     0,   270,
+     273,     0,   271,    31,   288,     0,   271,     0,    11,   272,
+      36,    31,   288,     0,    11,   272,    36,     0,    11,    36,
+      31,   288,     0,    11,    36,     0,   250,   272,   251,     0,
+     250,   251,     0,   260,     0,   272,   255,   260,     0,    10,
+     261,    37,     0,   285,     0,   290,    10,   274,    37,     0,
+     276,     0,   273,   275,     0,   273,    12,   283,     0,   273,
+      26,   283,     0,   273,    11,    36,     0,   273,    11,   274,
+      36,     0,   273,    31,   288,     0,   261,     0,   274,    32,
+     261,     0,    28,     0,    29,     0,    30,     0,    38,     0,
+     277,     0,   107,     0,    54,    10,   274,    37,     0,   114,
+      10,    44,    37,     0,   114,    10,   202,    37,     0,   108,
+      10,   260,    37,     0,    59,    10,   260,    32,   260,    37,
+       0,   108,    10,   227,    37,     0,    42,     0,    43,     0,
+      40,     0,    41,     0,   279,     0,   278,   279,     0,     0,
+      21,   280,   281,     0,   282,     0,   281,    32,   282,     0,
+     285,    31,   198,     0,   285,    31,    66,   198,     0,    25,
+       0,    20,     0,    25,     0,    25,     0,   283,     0,   283,
+       0,   283,     0,   283,     0,   283,     0
 };
 
 #endif
 
 #if YYDEBUG != 0
-static const short yyrline[] = { 0,
-   382,   383,   386,   387,   390,   391,   394,   395,   396,   399,
-   400,   403,   404,   405,   408,   414,   418,   420,   422,   424,
-   426,   428,   432,   436,   437,   440,   442,   446,   447,   450,
-   451,   454,   456,   458,   460,   464,   468,   470,   472,   476,
-   477,   480,   481,   482,   485,   486,   493,   495,   506,   508,
-   511,   515,   515,   516,   517,   517,   519,   520,   521,   522,
-   523,   523,   524,   527,   528,   529,   530,   532,   548,   550,
-   554,   555,   557,   560,   561,   564,   568,   570,   574,   576,
-   578,   580,   584,   585,   588,   590,   592,   595,   597,   600,
-   602,   605,   606,   607,   611,   612,   614,   616,   619,   621,
-   625,   626,   629,   631,   635,   636,   637,   640,   641,   644,
-   648,   649,   652,   653,   656,   657,   659,   662,   663,   666,
-   667,   670,   671,   672,   673,   676,   677,   680,   681,   682,
-   683,   684,   687,   688,   691,   692,   695,   696,   699,   700,
-   701,   704,   705,   708,   709,   710,   713,   714,   717,   722,
-   728,   736,   738,   740,   742,   746,   747,   750,   751,   752,
-   753,   754,   755,   756,   758,   762,   763,   764,   765,   768,
-   769,   772,   773,   776,   776,   785,   786,   790,   791,   794,
-   795,   798,   799,   800,   801,   802,   803,   804,   805,   806,
-   807,   815,   816,   821,   823,   829,   830,   831,   832,   833,
-   834,   835,   836,   837,   838,   839,   840,   841,   842,   843,
-   844,   845,   846,   847,   848,   849,   850,   851,   852,   853,
-   854,   855,   856,   857,   858,   859,   860,   861,   862,   863,
-   864,   867,   869,   871,   873,   875,   884,   885,   890,   891,
-   894,   896,   898,   900,   902,   904,   908,   909,   912,   913,
-   918,   921,   923,   927,   928,   931,   933,   937,   938,   948,
-   949,   952,   953,   954,   955,   956,   957,   960,   961,   962,
-   963,   964,   965,   974,   975,   976,   977,   978,   984,   985,
-   986,   996,   997,   998,  1003,  1004,  1007,  1008,  1009,  1010,
-  1011,  1012,  1013,  1014,  1017,  1018,  1021,  1023,  1025,  1027,
-  1029,  1032,  1034,  1036,  1038,  1040,  1042,  1050,  1052,  1054,
-  1057,  1060,  1063,  1068,  1069,  1072,  1073,  1076,  1077,  1078,
-  1081,  1082,  1085,  1086,  1089,  1090,  1093,  1096,  1097,  1100,
-  1101,  1104,  1107,  1113,  1115,  1116,  1119,  1120,  1125,  1127,
-  1131,  1132,  1133,  1136,  1137,  1140,  1141,  1144,  1145,  1148,
-  1149,  1152,  1153,  1154,  1155,  1156,  1157,  1158,  1161,  1162,
-  1165,  1168,  1170,  1174,  1178,  1179,  1182,  1183,  1186,  1188,
-  1190,  1192,  1193,  1195,  1197,  1199,  1202,  1204,  1208,  1209,
-  1212,  1213,  1214,  1215,  1218,  1219,  1220,  1221,  1222,  1223,
-  1228,  1234,  1244,  1245,  1246,  1247,  1250,  1252,  1256,  1260,
-  1263,  1264,  1267,  1268,  1271,  1272,  1275,  1276,  1277,  1278,
-  1279,  1280,  1281
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const short yyrline[] =
+{
+       0,   380,   381,   384,   385,   388,   389,   392,   393,   394,
+     397,   398,   401,   402,   403,   406,   412,   416,   418,   420,
+     422,   424,   426,   430,   434,   435,   438,   440,   444,   445,
+     448,   449,   452,   454,   456,   458,   462,   466,   468,   470,
+     474,   475,   478,   479,   480,   483,   484,   491,   493,   504,
+     506,   509,   513,   513,   514,   515,   515,   517,   518,   519,
+     520,   521,   521,   522,   525,   526,   527,   528,   530,   546,
+     548,   552,   553,   555,   558,   559,   562,   566,   568,   572,
+     574,   576,   578,   582,   583,   586,   588,   590,   593,   595,
+     598,   600,   603,   604,   605,   609,   610,   612,   614,   617,
+     619,   623,   624,   627,   629,   633,   634,   635,   638,   639,
+     642,   646,   647,   650,   651,   654,   655,   657,   660,   661,
+     664,   665,   668,   669,   670,   671,   674,   675,   678,   679,
+     680,   681,   682,   685,   686,   689,   690,   693,   694,   697,
+     698,   699,   702,   703,   706,   707,   708,   711,   712,   715,
+     720,   726,   734,   736,   738,   740,   744,   745,   748,   749,
+     750,   751,   752,   753,   754,   756,   760,   761,   762,   763,
+     766,   767,   770,   771,   774,   774,   783,   784,   788,   789,
+     792,   793,   796,   797,   798,   799,   800,   801,   802,   803,
+     804,   805,   813,   814,   819,   821,   827,   828,   829,   830,
+     831,   832,   833,   834,   835,   836,   837,   838,   839,   840,
+     841,   842,   843,   844,   845,   846,   847,   848,   849,   850,
+     851,   852,   853,   854,   855,   856,   857,   858,   859,   860,
+     861,   862,   865,   867,   869,   871,   873,   882,   883,   888,
+     889,   892,   894,   896,   898,   900,   902,   906,   907,   910,
+     911,   916,   919,   921,   925,   926,   929,   931,   935,   936,
+     946,   947,   950,   951,   952,   953,   954,   955,   958,   959,
+     960,   961,   962,   963,   972,   973,   974,   975,   976,   982,
+     983,   984,   994,   995,   996,  1001,  1002,  1005,  1006,  1007,
+    1008,  1009,  1010,  1011,  1012,  1015,  1016,  1019,  1021,  1023,
+    1025,  1027,  1030,  1032,  1034,  1036,  1038,  1040,  1048,  1050,
+    1052,  1055,  1058,  1061,  1066,  1067,  1070,  1071,  1074,  1075,
+    1076,  1079,  1080,  1083,  1084,  1087,  1088,  1091,  1094,  1095,
+    1098,  1099,  1102,  1105,  1111,  1113,  1114,  1117,  1118,  1123,
+    1125,  1129,  1130,  1131,  1134,  1135,  1138,  1139,  1142,  1143,
+    1146,  1147,  1150,  1151,  1152,  1153,  1154,  1155,  1156,  1159,
+    1160,  1163,  1166,  1168,  1172,  1176,  1177,  1180,  1181,  1184,
+    1186,  1188,  1190,  1191,  1193,  1195,  1197,  1200,  1202,  1206,
+    1207,  1210,  1211,  1212,  1213,  1216,  1217,  1218,  1219,  1220,
+    1221,  1226,  1232,  1242,  1243,  1244,  1245,  1248,  1250,  1254,
+    1258,  1261,  1262,  1265,  1266,  1269,  1270,  1273,  1274,  1275,
+    1276,  1277,  1278,  1279
 };
 #endif
 
 
-#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
-
-static const char * const yytname[] = {   "$","error","$undefined.","simpleOp",
-"PREFIX_OP","POSTFIX_OP","LLT_MULOP","LLT_SEMI","LLT_VERTICALBAR","ITERATION_OP",
-"LLT_LPAR","LLT_LBRACKET","selectSym","LLT_IF_THEN_ELSE","logicalOp","eqSepSym",
-"equationSym","commentSym","LLT_WHITESPACE","LLT_EOL","LLT_TYPEDEF_NAME","quantifierSym",
-"openSym","closeSym","sepSym","simpleId","mapSym","markerSym","preSym","postSym",
-"anySym","LLT_COLON","LLT_COMMA","LLT_EQUALS","LLT_LBRACE","LLT_RBRACE","LLT_RBRACKET",
-"LLT_RPAR","LLT_QUOTE","eqOp","LLT_CCHAR","LLT_CFLOAT","LLT_CINTEGER","LLT_LCSTRING",
-"LLT_ALL","LLT_ANYTHING","LLT_BE","LLT_BODY","LLT_CLAIMS","LLT_CHECKS","LLT_CONSTANT",
-"LLT_ELSE","LLT_ENSURES","LLT_FOR","LLT_FRESH","LLT_IF","LLT_IMMUTABLE","LLT_IMPORTS",
-"LLT_CONSTRAINT","LLT_ISSUB","LLT_LET","LLT_MODIFIES","LLT_MUTABLE","LLT_NOTHING",
-"LLT_INTERNAL","LLT_FILESYS","LLT_OBJ","LLT_OUT","LLT_SEF","LLT_ONLY","LLT_PARTIAL",
-"LLT_OWNED","LLT_DEPENDENT","LLT_KEEP","LLT_KEPT","LLT_TEMP","LLT_SHARED","LLT_UNIQUE",
-"LLT_UNUSED","LLT_EXITS","LLT_MAYEXIT","LLT_NEVEREXIT","LLT_TRUEEXIT","LLT_FALSEEXIT",
-"LLT_UNDEF","LLT_KILLED","LLT_CHECKMOD","LLT_CHECKED","LLT_UNCHECKED","LLT_CHECKEDSTRICT",
-"LLT_TRUENULL","LLT_FALSENULL","LLT_LNULL","LLT_LNOTNULL","LLT_RETURNED","LLT_OBSERVER",
-"LLT_EXPOSED","LLT_REFCOUNTED","LLT_REFS","LLT_RELNULL","LLT_RELDEF","LLT_KILLREF",
-"LLT_NULLTERMINATED","LLT_TEMPREF","LLT_NEWREF","LLT_PRIVATE","LLT_REQUIRES",
-"LLT_RESULT","LLT_SIZEOF","LLT_SPEC","LLT_TAGGEDUNION","LLT_THEN","LLT_TYPE",
-"LLT_TYPEDEF","LLT_UNCHANGED","LLT_USES","LLT_CHAR","LLT_CONST","LLT_DOUBLE",
-"LLT_ENUM","LLT_FLOAT","LLT_INT","LLT_ITER","LLT_YIELD","LLT_LONG","LLT_SHORT",
-"LLT_SIGNED","LLT_UNKNOWN","LLT_STRUCT","LLT_TELIPSIS","LLT_UNION","LLT_UNSIGNED",
-"LLT_VOID","LLT_VOLATILE","LLT_PRINTFLIKE","LLT_SCANFLIKE","LLT_MESSAGELIKE",
-"interface","@1","externals","external","optDeclarations","declarations","declaration",
-"imports","uses","export","iter","iterParamList","realIterParamList","iterParam",
-"private","@2","private2","constDeclaration","varDeclaration","type","special",
-"fcn","@3","@4","claim","@5","abstract","@6","@7","@8","@9","@10","@11","@12",
-"@13","exposed","@14","@15","importNameList","importName","interfaceNameList",
-"interfaceName","traitRefNodeList","traitRef","traitIdList","renaming","nameList",
-"replaceNodeList","replace","name","initializer","constLclExpr","initDecls",
-"initDecl","globals","globalDecl","privateInits","privateInit","optLetDecl",
-"beDeclList","beDecl","sortSpec","optChecks","optRequire","optModify","storeRefList",
-"storeRef","optEnsure","optClaim","optParamList","realParamList","paramList",
-"optBody","callExpr","stmt","valueList","value","abstBody","fcns","optTypeInv",
-"typeInv","@16","declaratorInvs","declaratorInv","@17","optExposedBody","CType",
-"CTypes","typeSpecifier","specialQualifier","lclTypeSpec","lclType","pointers",
-"structOrUnionSpec","@18","@19","optTagId","structDecls","structDecl","declaratorList",
-"optCOMMA","enumSpec","enumeratorList","declarator","notype_decl","after_type_decl",
-"parameter_decl","param","typeName","optAbstDeclarator","abstDeclarator","arrayQual",
-"opForm","open","close","anyOp","middle","placeList","separator","signature",
-"domain","sortList","lclPredicate","term","term0","equalityTerm","simpleOpTerm",
-"simpleOp2","prefixOpTerm","postfixOps","infixOpPart","secondary","bracketed",
-"sqBracketed","matched","args","primary","termList","stateFcn","lclPrimary",
-"cLiteral","quantifiers","quantifier","@20","quantifiedList","quantified","simpleIdOrTypedefName",
-"fcnId","varId","tagId","claimId","sortId","traitId","opId", NULL
+#if YYDEBUG != 0 || defined YYERROR_VERBOSE
+
+/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
+static const char *const yytname[] =
+{
+  "$", "error", "$undefined.", "simpleOp", "PREFIX_OP", "POSTFIX_OP", 
+  "LLT_MULOP", "LLT_SEMI", "LLT_VERTICALBAR", "ITERATION_OP", "LLT_LPAR", 
+  "LLT_LBRACKET", "selectSym", "LLT_IF_THEN_ELSE", "logicalOp", 
+  "eqSepSym", "equationSym", "commentSym", "LLT_WHITESPACE", "LLT_EOL", 
+  "LLT_TYPEDEF_NAME", "quantifierSym", "openSym", "closeSym", "sepSym", 
+  "simpleId", "mapSym", "markerSym", "preSym", "postSym", "anySym", 
+  "LLT_COLON", "LLT_COMMA", "LLT_EQUALS", "LLT_LBRACE", "LLT_RBRACE", 
+  "LLT_RBRACKET", "LLT_RPAR", "LLT_QUOTE", "eqOp", "LLT_CCHAR", 
+  "LLT_CFLOAT", "LLT_CINTEGER", "LLT_LCSTRING", "LLT_ALL", "LLT_ANYTHING", 
+  "LLT_BE", "LLT_BODY", "LLT_CLAIMS", "LLT_CHECKS", "LLT_CONSTANT", 
+  "LLT_ELSE", "LLT_ENSURES", "LLT_FOR", "LLT_FRESH", "LLT_IF", 
+  "LLT_IMMUTABLE", "LLT_IMPORTS", "LLT_CONSTRAINT", "LLT_ISSUB", 
+  "LLT_LET", "LLT_MODIFIES", "LLT_MUTABLE", "LLT_NOTHING", "LLT_INTERNAL", 
+  "LLT_FILESYS", "LLT_OBJ", "LLT_OUT", "LLT_SEF", "LLT_ONLY", 
+  "LLT_PARTIAL", "LLT_OWNED", "LLT_DEPENDENT", "LLT_KEEP", "LLT_KEPT", 
+  "LLT_TEMP", "LLT_SHARED", "LLT_UNIQUE", "LLT_UNUSED", "LLT_EXITS", 
+  "LLT_MAYEXIT", "LLT_NEVEREXIT", "LLT_TRUEEXIT", "LLT_FALSEEXIT", 
+  "LLT_UNDEF", "LLT_KILLED", "LLT_CHECKMOD", "LLT_CHECKED", 
+  "LLT_UNCHECKED", "LLT_CHECKEDSTRICT", "LLT_TRUENULL", "LLT_FALSENULL", 
+  "LLT_LNULL", "LLT_LNOTNULL", "LLT_RETURNED", "LLT_OBSERVER", 
+  "LLT_EXPOSED", "LLT_REFCOUNTED", "LLT_REFS", "LLT_RELNULL", 
+  "LLT_RELDEF", "LLT_KILLREF", "LLT_NULLTERMINATED", "LLT_TEMPREF", 
+  "LLT_NEWREF", "LLT_PRIVATE", "LLT_REQUIRES", "LLT_RESULT", "LLT_SIZEOF", 
+  "LLT_SPEC", "LLT_TAGGEDUNION", "LLT_THEN", "LLT_TYPE", "LLT_TYPEDEF", 
+  "LLT_UNCHANGED", "LLT_USES", "LLT_CHAR", "LLT_CONST", "LLT_DOUBLE", 
+  "LLT_ENUM", "LLT_FLOAT", "LLT_INT", "LLT_ITER", "LLT_YIELD", "LLT_LONG", 
+  "LLT_SHORT", "LLT_SIGNED", "LLT_UNKNOWN", "LLT_STRUCT", "LLT_TELIPSIS", 
+  "LLT_UNION", "LLT_UNSIGNED", "LLT_VOID", "LLT_VOLATILE", 
+  "LLT_PRINTFLIKE", "LLT_SCANFLIKE", "LLT_MESSAGELIKE", "interface", "@1", 
+  "externals", "external", "optDeclarations", "declarations", 
+  "declaration", "imports", "uses", "export", "iter", "iterParamList", 
+  "realIterParamList", "iterParam", "private", "@2", "private2", 
+  "constDeclaration", "varDeclaration", "type", "special", "fcn", "@3", 
+  "@4", "claim", "@5", "abstract", "@6", "@7", "@8", "@9", "@10", "@11", 
+  "@12", "@13", "exposed", "@14", "@15", "importNameList", "importName", 
+  "interfaceNameList", "interfaceName", "traitRefNodeList", "traitRef", 
+  "traitIdList", "renaming", "nameList", "replaceNodeList", "replace", 
+  "name", "initializer", "constLclExpr", "initDecls", "initDecl", 
+  "globals", "globalDecl", "privateInits", "privateInit", "optLetDecl", 
+  "beDeclList", "beDecl", "sortSpec", "optChecks", "optRequire", 
+  "optModify", "storeRefList", "storeRef", "optEnsure", "optClaim", 
+  "optParamList", "realParamList", "paramList", "optBody", "callExpr", 
+  "stmt", "valueList", "value", "abstBody", "fcns", "optTypeInv", 
+  "typeInv", "@16", "declaratorInvs", "declaratorInv", "@17", 
+  "optExposedBody", "CType", "CTypes", "typeSpecifier", 
+  "specialQualifier", "lclTypeSpec", "lclType", "pointers", 
+  "structOrUnionSpec", "@18", "@19", "optTagId", "structDecls", 
+  "structDecl", "declaratorList", "optCOMMA", "enumSpec", 
+  "enumeratorList", "declarator", "notype_decl", "after_type_decl", 
+  "parameter_decl", "param", "typeName", "optAbstDeclarator", 
+  "abstDeclarator", "arrayQual", "opForm", "open", "close", "anyOp", 
+  "middle", "placeList", "separator", "signature", "domain", "sortList", 
+  "lclPredicate", "term", "term0", "equalityTerm", "simpleOpTerm", 
+  "simpleOp2", "prefixOpTerm", "postfixOps", "infixOpPart", "secondary", 
+  "bracketed", "sqBracketed", "matched", "args", "primary", "termList", 
+  "stateFcn", "lclPrimary", "cLiteral", "quantifiers", "quantifier", 
+  "@20", "quantifiedList", "quantified", "simpleIdOrTypedefName", "fcnId", 
+  "varId", "tagId", "claimId", "sortId", "traitId", "opId", NULL
 };
 #endif
 
-static const short yyr1[] = {     0,
-   138,   137,   139,   139,   140,   140,   141,   141,   141,   142,
-   142,   143,   143,   143,   144,   145,   146,   146,   146,   146,
-   146,   146,   147,   148,   148,   149,   149,   150,   150,   152,
-   151,   153,   153,   153,   153,   154,   155,   155,   155,   156,
-   156,   157,   157,   157,   159,   158,   160,   158,   162,   161,
-   161,   164,   165,   163,   166,   167,   163,   168,   169,   163,
-   170,   171,   163,   173,   174,   172,   172,   172,   175,   175,
-   176,   176,   176,   177,   177,   178,   179,   179,   180,   180,
-   180,   180,   181,   181,   182,   182,   182,   183,   183,   184,
-   184,   185,   185,   185,   186,   186,   187,   188,   189,   189,
-   190,   190,   191,   191,   192,   192,   192,   193,   193,   194,
-   195,   195,   196,   196,   197,   197,   198,   199,   199,   200,
-   200,   201,   201,   201,   201,   202,   202,   203,   203,   203,
-   203,   203,   204,   204,   205,   205,   206,   206,   207,   207,
-   207,   208,   208,   209,   209,   209,   210,   210,   210,   210,
-   210,   211,   211,   211,   211,   212,   212,   213,   213,   213,
-   213,   213,   213,   213,   213,   214,   214,   214,   214,   215,
-   215,   216,   216,   218,   217,   219,   219,   221,   220,   222,
-   222,   223,   223,   223,   223,   223,   223,   223,   223,   223,
-   223,   224,   224,   225,   225,   226,   226,   226,   226,   226,
-   226,   226,   226,   226,   226,   226,   226,   226,   226,   226,
-   226,   226,   226,   226,   226,   226,   226,   226,   226,   226,
-   226,   226,   226,   226,   226,   226,   226,   226,   226,   226,
-   226,   227,   227,   227,   227,   227,   228,   228,   229,   229,
-   231,   230,   232,   230,   230,   230,   233,   233,   234,   234,
-   235,   236,   236,   237,   237,   238,   238,   239,   239,   240,
-   240,   241,   241,   241,   241,   241,   241,   242,   242,   242,
-   242,   242,   242,   243,   243,   243,   243,   243,   244,   244,
-   244,   245,   245,   245,   246,   246,   247,   247,   247,   247,
-   247,   247,   247,   247,   248,   248,   249,   249,   249,   249,
-   249,   249,   249,   249,   249,   249,   249,   249,   249,   249,
-   249,   249,   249,   250,   250,   251,   251,   252,   252,   252,
-   253,   253,   254,   254,   255,   255,   256,   257,   257,   258,
-   258,   259,   260,   261,   261,   261,   262,   262,   262,   262,
-   263,   263,   263,   264,   264,   265,   265,   266,   266,   267,
-   267,   268,   268,   268,   268,   268,   268,   268,   269,   269,
-   270,   270,   270,   270,   271,   271,   272,   272,   273,   273,
-   273,   273,   273,   273,   273,   273,   273,   273,   274,   274,
-   275,   275,   275,   275,   276,   276,   276,   276,   276,   276,
-   276,   276,   277,   277,   277,   277,   278,   278,   280,   279,
-   281,   281,   282,   282,   283,   283,   284,   285,   286,   287,
-   288,   289,   290
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const short yyr1[] =
+{
+       0,   138,   137,   139,   139,   140,   140,   141,   141,   141,
+     142,   142,   143,   143,   143,   144,   145,   146,   146,   146,
+     146,   146,   146,   147,   148,   148,   149,   149,   150,   150,
+     152,   151,   153,   153,   153,   153,   154,   155,   155,   155,
+     156,   156,   157,   157,   157,   159,   158,   160,   158,   162,
+     161,   161,   164,   165,   163,   166,   167,   163,   168,   169,
+     163,   170,   171,   163,   173,   174,   172,   172,   172,   175,
+     175,   176,   176,   176,   177,   177,   178,   179,   179,   180,
+     180,   180,   180,   181,   181,   182,   182,   182,   183,   183,
+     184,   184,   185,   185,   185,   186,   186,   187,   188,   189,
+     189,   190,   190,   191,   191,   192,   192,   192,   193,   193,
+     194,   195,   195,   196,   196,   197,   197,   198,   199,   199,
+     200,   200,   201,   201,   201,   201,   202,   202,   203,   203,
+     203,   203,   203,   204,   204,   205,   205,   206,   206,   207,
+     207,   207,   208,   208,   209,   209,   209,   210,   210,   210,
+     210,   210,   211,   211,   211,   211,   212,   212,   213,   213,
+     213,   213,   213,   213,   213,   213,   214,   214,   214,   214,
+     215,   215,   216,   216,   218,   217,   219,   219,   221,   220,
+     222,   222,   223,   223,   223,   223,   223,   223,   223,   223,
+     223,   223,   224,   224,   225,   225,   226,   226,   226,   226,
+     226,   226,   226,   226,   226,   226,   226,   226,   226,   226,
+     226,   226,   226,   226,   226,   226,   226,   226,   226,   226,
+     226,   226,   226,   226,   226,   226,   226,   226,   226,   226,
+     226,   226,   227,   227,   227,   227,   227,   228,   228,   229,
+     229,   231,   230,   232,   230,   230,   230,   233,   233,   234,
+     234,   235,   236,   236,   237,   237,   238,   238,   239,   239,
+     240,   240,   241,   241,   241,   241,   241,   241,   242,   242,
+     242,   242,   242,   242,   243,   243,   243,   243,   243,   244,
+     244,   244,   245,   245,   245,   246,   246,   247,   247,   247,
+     247,   247,   247,   247,   247,   248,   248,   249,   249,   249,
+     249,   249,   249,   249,   249,   249,   249,   249,   249,   249,
+     249,   249,   249,   249,   250,   250,   251,   251,   252,   252,
+     252,   253,   253,   254,   254,   255,   255,   256,   257,   257,
+     258,   258,   259,   260,   261,   261,   261,   262,   262,   262,
+     262,   263,   263,   263,   264,   264,   265,   265,   266,   266,
+     267,   267,   268,   268,   268,   268,   268,   268,   268,   269,
+     269,   270,   270,   270,   270,   271,   271,   272,   272,   273,
+     273,   273,   273,   273,   273,   273,   273,   273,   273,   274,
+     274,   275,   275,   275,   275,   276,   276,   276,   276,   276,
+     276,   276,   276,   277,   277,   277,   277,   278,   278,   280,
+     279,   281,   281,   282,   282,   283,   283,   284,   285,   286,
+     287,   288,   289,   290
 };
 
-static const short yyr2[] = {     0,
-     0,     3,     0,     2,     1,     1,     0,     2,     2,     0,
-     2,     1,     1,     1,     3,     3,     1,     1,     1,     1,
-     1,     1,     6,     0,     1,     1,     3,     2,     1,     0,
-     3,     1,     1,     1,     1,     4,     3,     4,     4,     1,
-     1,     1,     1,     1,     0,    13,     0,    14,     0,    13,
-     4,     0,     0,     6,     0,     0,     7,     0,     0,     7,
-     0,     0,     6,     0,     0,     6,     2,     2,     1,     3,
-     1,     3,     1,     1,     3,     1,     1,     3,     1,     4,
-     3,     6,     1,     3,     1,     1,     3,     1,     3,     1,
-     3,     3,     3,     4,     1,     1,     1,     1,     1,     3,
-     1,     3,     0,     2,     3,     2,     2,     0,     2,     4,
-     0,     3,     1,     3,     5,     3,     1,     0,     3,     0,
-     3,     0,     3,     3,     3,     1,     3,     1,     1,     2,
-     1,     1,     0,     3,     0,     3,     0,     1,     1,     1,
-     3,     1,     3,     0,     4,     5,     1,     3,     2,     3,
-     3,     4,     3,     5,     6,     1,     3,     1,     1,     2,
-     2,     3,     3,     3,     4,     1,     3,     4,     3,     0,
-     2,     0,     1,     0,     6,     1,     3,     0,     3,     0,
-     3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-     1,     1,     2,     1,     1,     1,     1,     1,     1,     1,
-     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-     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,     5,     1,     2,     1,     2,
-     0,     6,     0,     6,     2,     2,     0,     1,     1,     2,
-     3,     1,     3,     0,     1,     6,     2,     1,     3,     1,
-     1,     1,     3,     2,     2,     3,     4,     1,     3,     2,
-     2,     3,     4,     1,     2,     2,     3,     4,     2,     2,
-     2,     2,     3,     1,     0,     1,     3,     2,     1,     1,
-     2,     3,     3,     4,     2,     3,     6,     1,     2,     2,
-     3,     3,     4,     4,     5,     3,     4,     4,     5,     2,
-     2,     3,     3,     1,     1,     1,     1,     1,     1,     1,
-     0,     1,     1,     3,     1,     1,     4,     0,     1,     1,
-     3,     1,     1,     6,     1,     3,     1,     4,     3,     3,
-     1,     2,     2,     1,     1,     1,     2,     1,     2,     2,
-     3,     1,     1,     2,     2,     3,     1,     2,     3,     1,
-     5,     3,     4,     2,     3,     2,     1,     3,     3,     1,
-     4,     1,     2,     3,     3,     3,     4,     3,     1,     3,
-     1,     1,     1,     1,     1,     1,     4,     4,     4,     4,
-     6,     4,     1,     1,     1,     1,     1,     2,     0,     3,
-     1,     3,     3,     4,     1,     1,     1,     1,     1,     1,
-     1,     1,     1
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const short yyr2[] =
+{
+       0,     0,     3,     0,     2,     1,     1,     0,     2,     2,
+       0,     2,     1,     1,     1,     3,     3,     1,     1,     1,
+       1,     1,     1,     6,     0,     1,     1,     3,     2,     1,
+       0,     3,     1,     1,     1,     1,     4,     3,     4,     4,
+       1,     1,     1,     1,     1,     0,    13,     0,    14,     0,
+      13,     4,     0,     0,     6,     0,     0,     7,     0,     0,
+       7,     0,     0,     6,     0,     0,     6,     2,     2,     1,
+       3,     1,     3,     1,     1,     3,     1,     1,     3,     1,
+       4,     3,     6,     1,     3,     1,     1,     3,     1,     3,
+       1,     3,     3,     3,     4,     1,     1,     1,     1,     1,
+       3,     1,     3,     0,     2,     3,     2,     2,     0,     2,
+       4,     0,     3,     1,     3,     5,     3,     1,     0,     3,
+       0,     3,     0,     3,     3,     3,     1,     3,     1,     1,
+       2,     1,     1,     0,     3,     0,     3,     0,     1,     1,
+       1,     3,     1,     3,     0,     4,     5,     1,     3,     2,
+       3,     3,     4,     3,     5,     6,     1,     3,     1,     1,
+       2,     2,     3,     3,     3,     4,     1,     3,     4,     3,
+       0,     2,     0,     1,     0,     6,     1,     3,     0,     3,
+       0,     3,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     2,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     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,     5,     1,     2,     1,
+       2,     0,     6,     0,     6,     2,     2,     0,     1,     1,
+       2,     3,     1,     3,     0,     1,     6,     2,     1,     3,
+       1,     1,     1,     3,     2,     2,     3,     4,     1,     3,
+       2,     2,     3,     4,     1,     2,     2,     3,     4,     2,
+       2,     2,     2,     3,     1,     0,     1,     3,     2,     1,
+       1,     2,     3,     3,     4,     2,     3,     6,     1,     2,
+       2,     3,     3,     4,     4,     5,     3,     4,     4,     5,
+       2,     2,     3,     3,     1,     1,     1,     1,     1,     1,
+       1,     0,     1,     1,     3,     1,     1,     4,     0,     1,
+       1,     3,     1,     1,     6,     1,     3,     1,     4,     3,
+       3,     1,     2,     2,     1,     1,     1,     2,     1,     2,
+       2,     3,     1,     1,     2,     2,     3,     1,     2,     3,
+       1,     5,     3,     4,     2,     3,     2,     1,     3,     3,
+       1,     4,     1,     2,     3,     3,     3,     4,     3,     1,
+       3,     1,     1,     1,     1,     1,     1,     4,     4,     4,
+       4,     6,     4,     1,     1,     1,     1,     1,     2,     0,
+       3,     1,     3,     3,     4,     1,     1,     1,     1,     1,
+       1,     1,     1,     1
 };
 
-static const short yydefact[] = {     3,
-     1,     0,     0,     7,     4,     5,     6,     0,   406,   405,
-    73,     0,    69,    71,    76,     0,     0,    77,   412,    79,
-     0,   194,     0,     0,    61,    52,   196,   198,   199,   228,
-   200,   201,   202,   203,   210,   211,   212,   197,   205,   206,
-   209,   207,   208,   230,   231,   213,   214,   215,   216,   217,
-   224,   225,   226,   204,   227,   220,   221,   218,   219,   223,
-   229,   222,    30,     0,   183,     0,   184,   247,   185,   186,
-     0,   187,   188,   189,   191,   247,   247,   190,   182,     0,
-    42,    43,    44,     2,    10,    22,    10,    17,    18,    19,
-     0,    20,    21,    40,    41,   192,   195,   232,     0,     0,
-   233,   234,     0,    15,     0,     0,    83,    16,     0,     0,
-   220,   237,     0,   233,   234,   407,   410,     0,     0,     0,
-     0,     0,     0,    58,     0,    64,     0,     0,   409,   257,
-   408,     0,   241,   245,   243,   246,     0,     8,     9,     0,
-   193,   235,     0,     0,   268,     0,    99,   103,   261,   260,
-   262,    67,    68,    72,    70,     0,    81,    78,   344,   345,
-   321,     0,   319,   314,     0,     0,   315,   320,     0,     0,
-     0,    86,    85,    90,   285,    88,   284,   321,   298,   318,
-   239,   238,     0,     0,   137,     0,   101,     0,     0,     0,
-     0,    31,    32,    33,    34,    35,     0,     0,     0,    24,
-     0,     0,     0,    11,    14,    12,    13,   103,   264,   270,
-     0,     0,    37,     0,     0,    45,     0,     0,   265,     0,
-   271,    84,     0,   323,     0,   322,   310,   311,   321,     0,
-     0,   321,   299,     0,   285,    80,     0,     0,   289,     0,
-   282,   286,   290,     0,     0,   300,   240,     0,    51,   140,
-     0,   138,   139,   285,   142,    36,    62,    53,     0,     0,
-    65,   176,   178,    38,   258,   254,     0,     0,    25,    26,
-    29,     0,     0,    39,    47,   263,   269,   100,     0,     0,
-   399,   408,   395,   396,   393,   394,     0,     0,     0,   386,
-     0,     0,   102,    97,     0,    98,   333,   335,   337,     0,
-   341,   346,   353,   357,   360,   352,   372,   385,     0,   397,
-   413,   370,     0,     0,     0,     0,   104,     0,   266,     0,
-   295,     0,   272,     0,     0,   306,   326,   325,     0,     0,
-   312,   313,     0,   301,     0,   283,    87,    89,    91,     0,
-   288,     0,     0,     0,   291,    93,    92,    96,    95,   316,
-   317,   302,   236,   103,     0,   289,     0,   274,   280,   279,
-   281,     0,     0,    56,    59,     0,     0,   180,   255,     0,
-    28,     0,     0,     0,     0,   249,     0,     0,     0,   364,
-   367,     0,     0,     0,     0,     0,     0,     0,   366,     0,
-     0,     0,     0,   347,   346,   348,   342,   343,   354,   358,
-     0,     0,     0,     0,   381,   382,   383,     0,   384,   355,
-   373,     0,   398,     0,   106,   107,   108,     0,   267,   296,
-   273,    82,   307,   324,   308,   303,     0,   293,   287,   292,
-     0,   328,    94,   304,    49,   141,   143,   275,   289,     0,
-   276,   166,   170,    63,    54,     0,     0,   177,    66,   172,
-   179,   259,   256,    23,    27,     0,   252,   242,   250,   244,
-   108,   369,     0,   362,     0,   400,   401,     0,   379,     0,
-     0,     0,   194,     0,     0,     0,   131,   132,     0,     0,
-   126,   129,   128,   365,   336,   340,   339,   350,   349,     0,
-   411,   359,   376,     0,   374,   375,   378,   356,     0,   332,
-     0,   111,   105,   309,   305,     0,   294,     0,   329,   330,
-     0,   277,     0,     0,     0,    74,     0,    57,    60,   174,
-     0,   173,   251,     0,   111,   363,     0,   368,     0,     0,
-     0,   387,     0,     0,   392,   390,   388,   130,     0,   389,
-   351,   377,   338,   371,     0,     0,   109,   118,   297,     0,
-     0,   111,   278,   169,     0,     0,   167,   171,     0,     0,
-   181,   253,   118,   361,   402,     0,   403,   117,   380,     0,
-     0,   127,     0,   113,     0,     0,     0,   120,   327,   331,
-   120,    75,   168,   103,     0,   120,   404,   334,   391,   112,
-     0,     0,     0,     0,     0,     0,   122,   144,     0,   122,
-   114,     0,   116,   110,   119,     0,     0,   133,     0,   133,
-     0,   133,     0,   121,     0,     0,     0,     0,   135,     0,
-     0,   175,   135,   115,   124,   123,   125,     0,     0,     0,
-     0,   408,     0,   147,     0,     0,    50,     0,   134,     0,
-    46,     0,   149,     0,     0,   145,     0,     0,    48,   136,
-     0,   148,   146,   151,   150,     0,     0,   153,     0,   156,
-   158,     0,   159,   407,     0,   160,     0,     0,   152,   161,
-     0,     0,   163,   157,   162,   164,     0,   154,     0,   165,
-   155,     0,     0,     0
+/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
+   doesn't specify something else to do.  Zero means the default is an
+   error. */
+static const short yydefact[] =
+{
+       3,     1,     0,     0,     7,     4,     5,     6,     0,   406,
+     405,    73,     0,    69,    71,    76,     0,     0,    77,   412,
+      79,     0,   194,     0,     0,    61,    52,   196,   198,   199,
+     228,   200,   201,   202,   203,   210,   211,   212,   197,   205,
+     206,   209,   207,   208,   230,   231,   213,   214,   215,   216,
+     217,   224,   225,   226,   204,   227,   220,   221,   218,   219,
+     223,   229,   222,    30,     0,   183,     0,   184,   247,   185,
+     186,     0,   187,   188,   189,   191,   247,   247,   190,   182,
+       0,    42,    43,    44,     2,    10,    22,    10,    17,    18,
+      19,     0,    20,    21,    40,    41,   192,   195,   232,     0,
+       0,   233,   234,     0,    15,     0,     0,    83,    16,     0,
+       0,   220,   237,     0,   233,   234,   407,   410,     0,     0,
+       0,     0,     0,     0,    58,     0,    64,     0,     0,   409,
+     257,   408,     0,   241,   245,   243,   246,     0,     8,     9,
+       0,   193,   235,     0,     0,   268,     0,    99,   103,   261,
+     260,   262,    67,    68,    72,    70,     0,    81,    78,   344,
+     345,   321,     0,   319,   314,     0,     0,   315,   320,     0,
+       0,     0,    86,    85,    90,   285,    88,   284,   321,   298,
+     318,   239,   238,     0,     0,   137,     0,   101,     0,     0,
+       0,     0,    31,    32,    33,    34,    35,     0,     0,     0,
+      24,     0,     0,     0,    11,    14,    12,    13,   103,   264,
+     270,     0,     0,    37,     0,     0,    45,     0,     0,   265,
+       0,   271,    84,     0,   323,     0,   322,   310,   311,   321,
+       0,     0,   321,   299,     0,   285,    80,     0,     0,   289,
+       0,   282,   286,   290,     0,     0,   300,   240,     0,    51,
+     140,     0,   138,   139,   285,   142,    36,    62,    53,     0,
+       0,    65,   176,   178,    38,   258,   254,     0,     0,    25,
+      26,    29,     0,     0,    39,    47,   263,   269,   100,     0,
+       0,   399,   408,   395,   396,   393,   394,     0,     0,     0,
+     386,     0,     0,   102,    97,     0,    98,   333,   335,   337,
+       0,   341,   346,   353,   357,   360,   352,   372,   385,     0,
+     397,   413,   370,     0,     0,     0,     0,   104,     0,   266,
+       0,   295,     0,   272,     0,     0,   306,   326,   325,     0,
+       0,   312,   313,     0,   301,     0,   283,    87,    89,    91,
+       0,   288,     0,     0,     0,   291,    93,    92,    96,    95,
+     316,   317,   302,   236,   103,     0,   289,     0,   274,   280,
+     279,   281,     0,     0,    56,    59,     0,     0,   180,   255,
+       0,    28,     0,     0,     0,     0,   249,     0,     0,     0,
+     364,   367,     0,     0,     0,     0,     0,     0,     0,   366,
+       0,     0,     0,     0,   347,   346,   348,   342,   343,   354,
+     358,     0,     0,     0,     0,   381,   382,   383,     0,   384,
+     355,   373,     0,   398,     0,   106,   107,   108,     0,   267,
+     296,   273,    82,   307,   324,   308,   303,     0,   293,   287,
+     292,     0,   328,    94,   304,    49,   141,   143,   275,   289,
+       0,   276,   166,   170,    63,    54,     0,     0,   177,    66,
+     172,   179,   259,   256,    23,    27,     0,   252,   242,   250,
+     244,   108,   369,     0,   362,     0,   400,   401,     0,   379,
+       0,     0,     0,   194,     0,     0,     0,   131,   132,     0,
+       0,   126,   129,   128,   365,   336,   340,   339,   350,   349,
+       0,   411,   359,   376,     0,   374,   375,   378,   356,     0,
+     332,     0,   111,   105,   309,   305,     0,   294,     0,   329,
+     330,     0,   277,     0,     0,     0,    74,     0,    57,    60,
+     174,     0,   173,   251,     0,   111,   363,     0,   368,     0,
+       0,     0,   387,     0,     0,   392,   390,   388,   130,     0,
+     389,   351,   377,   338,   371,     0,     0,   109,   118,   297,
+       0,     0,   111,   278,   169,     0,     0,   167,   171,     0,
+       0,   181,   253,   118,   361,   402,     0,   403,   117,   380,
+       0,     0,   127,     0,   113,     0,     0,     0,   120,   327,
+     331,   120,    75,   168,   103,     0,   120,   404,   334,   391,
+     112,     0,     0,     0,     0,     0,     0,   122,   144,     0,
+     122,   114,     0,   116,   110,   119,     0,     0,   133,     0,
+     133,     0,   133,     0,   121,     0,     0,     0,     0,   135,
+       0,     0,   175,   135,   115,   124,   123,   125,     0,     0,
+       0,     0,   408,     0,   147,     0,     0,    50,     0,   134,
+       0,    46,     0,   149,     0,     0,   145,     0,     0,    48,
+     136,     0,   148,   146,   151,   150,     0,     0,   153,     0,
+     156,   158,     0,   159,   407,     0,   160,     0,     0,   152,
+     161,     0,     0,   163,   157,   162,   164,     0,   154,     0,
+     165,   155,     0,     0,     0
 };
 
-static const short yydefgoto[] = {   682,
-     4,     1,     5,    84,   138,   204,     6,   205,   206,    86,
-   268,   269,   270,   207,   125,   192,    88,    89,    90,    91,
-    92,   316,   378,    93,   511,    94,   122,   363,   123,   446,
-   191,   447,   121,   362,    95,   197,   367,    12,    13,   515,
-    14,    17,    18,   106,   171,   172,   173,   174,   346,   293,
-   294,   146,   147,   216,   317,   502,   547,   548,   573,   574,
-   567,   578,   597,   608,   480,   481,   619,   630,   251,   342,
-   253,   610,   654,   634,   659,   660,   444,   517,   521,   522,
-   560,   261,   262,   368,   451,    96,    97,    98,    99,   254,
-   482,   182,   114,   201,   202,   128,   375,   376,   456,   370,
-   115,   266,   187,   149,   150,   360,   255,   176,   241,   242,
-   243,   177,   295,   352,   179,   225,   226,   465,   433,   508,
-   509,   499,   500,   297,   298,   299,   300,   301,   397,   398,
-   302,   303,   304,   305,   382,   306,   470,   411,   307,   308,
-   309,   310,   383,   466,   467,   311,   662,   312,   130,   119,
-   492,    20,   313
+static const short yydefgoto[] =
+{
+     682,     4,     1,     5,    84,   138,   204,     6,   205,   206,
+      86,   268,   269,   270,   207,   125,   192,    88,    89,    90,
+      91,    92,   316,   378,    93,   511,    94,   122,   363,   123,
+     446,   191,   447,   121,   362,    95,   197,   367,    12,    13,
+     515,    14,    17,    18,   106,   171,   172,   173,   174,   346,
+     293,   294,   146,   147,   216,   317,   502,   547,   548,   573,
+     574,   567,   578,   597,   608,   480,   481,   619,   630,   251,
+     342,   253,   610,   654,   634,   659,   660,   444,   517,   521,
+     522,   560,   261,   262,   368,   451,    96,    97,    98,    99,
+     254,   482,   182,   114,   201,   202,   128,   375,   376,   456,
+     370,   115,   266,   187,   149,   150,   360,   255,   176,   241,
+     242,   243,   177,   295,   352,   179,   225,   226,   465,   433,
+     508,   509,   499,   500,   297,   298,   299,   300,   301,   397,
+     398,   302,   303,   304,   305,   382,   306,   470,   411,   307,
+     308,   309,   310,   383,   466,   467,   311,   662,   312,   130,
+     119,   492,    20,   313
 };
 
-static const short yypact[] = {-32768,
-   -25,   136,   368,  1350,-32768,-32768,-32768,   181,-32768,-32768,
--32768,    94,-32768,-32768,-32768,   181,   110,-32768,-32768,    33,
-  2903,-32768,   182,  2903,-32768,    17,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,   -11,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,  2903,-32768,  2903,-32768,   181,-32768,-32768,
-   108,-32768,-32768,-32768,-32768,   181,   181,-32768,-32768,  2903,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-  2903,-32768,-32768,-32768,-32768,-32768,   399,-32768,  2903,   408,
-   155,   192,   205,-32768,   136,   204,-32768,-32768,   368,  1152,
--32768,   233,   223,-32768,-32768,   266,-32768,   181,   305,   408,
-   211,   235,   264,-32768,  1445,-32768,   408,   339,-32768,   347,
--32768,   377,-32768,   347,-32768,   347,   408,  1247,  1247,   408,
--32768,-32768,   408,   408,-32768,   196,-32768,   259,   322,   409,
--32768,-32768,-32768,-32768,-32768,   181,   387,-32768,-32768,-32768,
-   386,   181,-32768,-32768,   181,   534,-32768,-32768,   403,  2903,
-   410,   445,   453,-32768,   360,   439,-32768,   386,   474,-32768,
--32768,   496,  2903,   497,  2319,   239,   470,   486,   492,   401,
-   404,-32768,-32768,-32768,-32768,-32768,   408,   282,   493,  2414,
-   488,   494,   288,-32768,-32768,-32768,-32768,-32768,   322,   409,
-   121,   141,-32768,   408,  3200,  1836,  1933,  3059,-32768,  2030,
--32768,-32768,  1152,-32768,   499,   122,-32768,-32768,   386,   181,
-   181,   386,   502,   421,   360,-32768,  1152,  1152,   360,  1741,
--32768,   454,-32768,   328,    80,-32768,-32768,   525,-32768,-32768,
-   504,-32768,   507,   380,-32768,-32768,-32768,-32768,   522,   524,
-   515,-32768,-32768,-32768,-32768,   518,  2903,   514,   520,-32768,
--32768,  2903,  2903,-32768,  1836,-32768,-32768,-32768,  3200,  3109,
--32768,   266,-32768,-32768,-32768,-32768,   544,  3200,   545,-32768,
-   549,   551,-32768,-32768,  3033,-32768,   550,-32768,   114,  3226,
--32768,   374,   382,   382,   535,   193,-32768,-32768,   273,-32768,
--32768,-32768,   555,   560,   562,   536,-32768,   408,-32768,   537,
--32768,   539,-32768,   540,   541,   552,-32768,-32768,   553,   547,
--32768,-32768,    80,-32768,   554,-32768,   453,   439,-32768,   439,
-   454,   548,   177,  2127,-32768,   556,-32768,-32768,-32768,-32768,
--32768,   557,-32768,-32768,  2509,   380,  1644,-32768,   322,   469,
--32768,    47,    47,-32768,-32768,   408,   564,   538,   561,   559,
--32768,   569,  2414,   408,  2611,-32768,  2713,   558,    36,   565,
--32768,   293,   108,  3200,    10,  3200,  1022,   762,-32768,   220,
-  3200,  3226,  3226,-32768,-32768,   268,   374,   374,   275,   275,
-   181,  3150,   181,   181,-32768,-32768,-32768,   181,-32768,   382,
--32768,  3200,-32768,  3200,-32768,-32768,-32768,   314,-32768,-32768,
--32768,-32768,-32768,-32768,   563,   568,   566,-32768,-32768,-32768,
-   573,   181,-32768,-32768,  1836,-32768,-32768,   469,   354,  2224,
--32768,-32768,   165,-32768,-32768,    47,    47,-32768,-32768,   530,
--32768,-32768,-32768,-32768,-32768,   317,-32768,-32768,-32768,-32768,
--32768,-32768,   181,   567,  3200,   570,-32768,   572,   550,   362,
-  3200,   579,   581,   575,   577,   578,-32768,-32768,  2903,   384,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   268,
--32768,-32768,-32768,   157,-32768,-32768,-32768,   275,   583,-32768,
-   397,    -8,-32768,-32768,-32768,   574,-32768,   590,   591,-32768,
-   571,-32768,   587,   592,   363,-32768,  1547,-32768,-32768,-32768,
-   594,-32768,-32768,   408,    -8,-32768,   181,-32768,   108,  2808,
-  3200,-32768,    28,  3200,-32768,-32768,-32768,-32768,   892,-32768,
--32768,-32768,-32768,-32768,   108,  2903,-32768,   582,-32768,   181,
-   181,   576,-32768,-32768,   181,   593,-32768,-32768,   408,   605,
--32768,-32768,   582,-32768,-32768,  2903,-32768,-32768,   550,  3200,
-   600,-32768,   331,-32768,   103,   408,  3200,   521,-32768,-32768,
-   521,-32768,-32768,-32768,   629,   521,-32768,   550,-32768,-32768,
-   108,  2903,  3200,   336,   634,  3200,   584,   597,  3200,   584,
--32768,   601,-32768,-32768,-32768,   639,   632,   596,   615,   596,
-   613,   596,  3200,-32768,   644,   648,   337,  3200,   608,    49,
-   623,-32768,   608,-32768,-32768,-32768,-32768,   652,  3200,   625,
-    49,   651,    50,-32768,   653,   631,-32768,   627,-32768,   658,
--32768,    63,-32768,   272,    49,-32768,   208,   642,-32768,-32768,
-    49,-32768,-32768,   660,-32768,   222,   222,-32768,   419,   666,
--32768,   661,-32768,-32768,   668,-32768,    41,   222,-32768,   316,
-   432,   468,-32768,   666,-32768,-32768,   426,-32768,   430,-32768,
--32768,   670,   676,-32768
+static const short yypact[] =
+{
+  -32768,   -25,   136,   368,  1350,-32768,-32768,-32768,   181,-32768,
+  -32768,-32768,    94,-32768,-32768,-32768,   181,   110,-32768,-32768,
+      33,  2903,-32768,   182,  2903,-32768,    17,-32768,-32768,-32768,
+  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+  -32768,-32768,-32768,-32768,-32768,-32768,   -11,-32768,-32768,-32768,
+  -32768,-32768,-32768,-32768,  2903,-32768,  2903,-32768,   181,-32768,
+  -32768,   108,-32768,-32768,-32768,-32768,   181,   181,-32768,-32768,
+    2903,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+  -32768,  2903,-32768,-32768,-32768,-32768,-32768,   399,-32768,  2903,
+     408,   155,   192,   205,-32768,   136,   204,-32768,-32768,   368,
+    1152,-32768,   233,   223,-32768,-32768,   266,-32768,   181,   305,
+     408,   211,   235,   264,-32768,  1445,-32768,   408,   339,-32768,
+     347,-32768,   377,-32768,   347,-32768,   347,   408,  1247,  1247,
+     408,-32768,-32768,   408,   408,-32768,   196,-32768,   259,   322,
+     409,-32768,-32768,-32768,-32768,-32768,   181,   387,-32768,-32768,
+  -32768,   386,   181,-32768,-32768,   181,   534,-32768,-32768,   403,
+    2903,   410,   445,   453,-32768,   360,   439,-32768,   386,   474,
+  -32768,-32768,   496,  2903,   497,  2319,   239,   470,   486,   492,
+     401,   404,-32768,-32768,-32768,-32768,-32768,   408,   282,   493,
+    2414,   488,   494,   288,-32768,-32768,-32768,-32768,-32768,   322,
+     409,   121,   141,-32768,   408,  3200,  1836,  1933,  3059,-32768,
+    2030,-32768,-32768,  1152,-32768,   499,   122,-32768,-32768,   386,
+     181,   181,   386,   502,   421,   360,-32768,  1152,  1152,   360,
+    1741,-32768,   454,-32768,   328,    80,-32768,-32768,   525,-32768,
+  -32768,   504,-32768,   507,   380,-32768,-32768,-32768,-32768,   522,
+     524,   515,-32768,-32768,-32768,-32768,   518,  2903,   514,   520,
+  -32768,-32768,  2903,  2903,-32768,  1836,-32768,-32768,-32768,  3200,
+    3109,-32768,   266,-32768,-32768,-32768,-32768,   544,  3200,   545,
+  -32768,   549,   551,-32768,-32768,  3033,-32768,   550,-32768,   114,
+    3226,-32768,   374,   382,   382,   535,   193,-32768,-32768,   273,
+  -32768,-32768,-32768,   555,   560,   562,   536,-32768,   408,-32768,
+     537,-32768,   539,-32768,   540,   541,   552,-32768,-32768,   553,
+     547,-32768,-32768,    80,-32768,   554,-32768,   453,   439,-32768,
+     439,   454,   548,   177,  2127,-32768,   556,-32768,-32768,-32768,
+  -32768,-32768,   557,-32768,-32768,  2509,   380,  1644,-32768,   322,
+     469,-32768,    47,    47,-32768,-32768,   408,   564,   538,   561,
+     559,-32768,   569,  2414,   408,  2611,-32768,  2713,   558,    36,
+     565,-32768,   293,   108,  3200,    10,  3200,  1022,   762,-32768,
+     220,  3200,  3226,  3226,-32768,-32768,   268,   374,   374,   275,
+     275,   181,  3150,   181,   181,-32768,-32768,-32768,   181,-32768,
+     382,-32768,  3200,-32768,  3200,-32768,-32768,-32768,   314,-32768,
+  -32768,-32768,-32768,-32768,-32768,   563,   568,   566,-32768,-32768,
+  -32768,   573,   181,-32768,-32768,  1836,-32768,-32768,   469,   354,
+    2224,-32768,-32768,   165,-32768,-32768,    47,    47,-32768,-32768,
+     530,-32768,-32768,-32768,-32768,-32768,   317,-32768,-32768,-32768,
+  -32768,-32768,-32768,   181,   567,  3200,   570,-32768,   572,   550,
+     362,  3200,   579,   581,   575,   577,   578,-32768,-32768,  2903,
+     384,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+     268,-32768,-32768,-32768,   157,-32768,-32768,-32768,   275,   583,
+  -32768,   397,    -8,-32768,-32768,-32768,   574,-32768,   590,   591,
+  -32768,   571,-32768,   587,   592,   363,-32768,  1547,-32768,-32768,
+  -32768,   594,-32768,-32768,   408,    -8,-32768,   181,-32768,   108,
+    2808,  3200,-32768,    28,  3200,-32768,-32768,-32768,-32768,   892,
+  -32768,-32768,-32768,-32768,-32768,   108,  2903,-32768,   582,-32768,
+     181,   181,   576,-32768,-32768,   181,   593,-32768,-32768,   408,
+     605,-32768,-32768,   582,-32768,-32768,  2903,-32768,-32768,   550,
+    3200,   600,-32768,   331,-32768,   103,   408,  3200,   521,-32768,
+  -32768,   521,-32768,-32768,-32768,   629,   521,-32768,   550,-32768,
+  -32768,   108,  2903,  3200,   336,   634,  3200,   584,   597,  3200,
+     584,-32768,   601,-32768,-32768,-32768,   639,   632,   596,   615,
+     596,   613,   596,  3200,-32768,   644,   648,   337,  3200,   608,
+      49,   623,-32768,   608,-32768,-32768,-32768,-32768,   652,  3200,
+     625,    49,   651,    50,-32768,   653,   631,-32768,   627,-32768,
+     658,-32768,    63,-32768,   272,    49,-32768,   208,   642,-32768,
+  -32768,    49,-32768,-32768,   660,-32768,   222,   222,-32768,   419,
+     666,-32768,   661,-32768,-32768,   668,-32768,    41,   222,-32768,
+     316,   432,   468,-32768,   666,-32768,-32768,   426,-32768,   430,
+  -32768,-32768,   670,   676,-32768
 };
 
-static const short yypgoto[] = {-32768,
--32768,-32768,-32768,-32768,   595,-32768,-32768,   678,   677,-32768,
--32768,-32768,   307,   679,-32768,-32768,   610,   612,   616,-32768,
-  -121,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   580,-32768,
-    -6,-32768,   585,-32768,   461,-32768,   451,   452,-32768,-32768,
-   471,  -108,   478,  -188,-32768,   232,-32768,  -458,-32768,   127,
-  -473,   175,  -169,   142,   137,   206,  -206,   120,-32768,  -180,
--32768,-32768,  -507,-32768,  -190,  -230,  -318,-32768,-32768,-32768,
--32768,-32768,   381,-32768,-32768,   -89,-32768,-32768,-32768,    -3,
-   -18,-32768,    32,-32768,-32768,   407,   476,    68,-32768,-32768,
-    56,-32768,   -93,  -127,   344,   398,  -187,   257,  -182,  -213,
-  -101,   511,    30,  -267,   603,  -137,-32768,   586,-32768,-32768,
--32768,  -531,  -204,  -254,-32768,   105,   -46,   466,-32768,-32768,
-  -278,   455,-32768,-32768,   472,  -265,  -205,-32768,-32768,  -372,
--32768,  -303,-32768,-32768,   242,     7,   -23,   -38,   423,   656,
-  -377,    19,   531
+static const short yypgoto[] =
+{
+  -32768,-32768,-32768,-32768,-32768,   595,-32768,-32768,   678,   677,
+  -32768,-32768,-32768,   307,   679,-32768,-32768,   610,   612,   616,
+  -32768,  -121,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   580,
+  -32768,    -6,-32768,   585,-32768,   461,-32768,   451,   452,-32768,
+  -32768,   471,  -108,   478,  -188,-32768,   232,-32768,  -458,-32768,
+     127,  -473,   175,  -169,   142,   137,   206,  -206,   120,-32768,
+    -180,-32768,-32768,  -507,-32768,  -190,  -230,  -318,-32768,-32768,
+  -32768,-32768,-32768,   381,-32768,-32768,   -89,-32768,-32768,-32768,
+      -3,   -18,-32768,    32,-32768,-32768,   407,   476,    68,-32768,
+  -32768,    56,-32768,   -93,  -127,   344,   398,  -187,   257,  -182,
+    -213,  -101,   511,    30,  -267,   603,  -137,-32768,   586,-32768,
+  -32768,-32768,  -531,  -204,  -254,-32768,   105,   -46,   466,-32768,
+  -32768,  -278,   455,-32768,-32768,   472,  -265,  -205,-32768,-32768,
+    -372,-32768,  -303,-32768,-32768,   242,     7,   -23,   -38,   423,
+     656,  -377,    19,   531
 };
 
 
 #define        YYLAST          3340
 
 
-static const short yytable[] = {   118,
-   100,   103,   113,   196,   252,   413,   148,   141,    15,    19,
-   296,   186,   271,   296,    15,   209,   211,   112,   198,   275,
-   120,   395,    19,   391,   379,   341,   343,   389,   203,   117,
-   497,     2,   132,   385,   107,   101,   320,   399,   400,   324,
-   245,   391,   110,   670,   445,   595,   208,   219,   221,   391,
-   124,   545,   336,   442,   510,   643,   644,   645,   631,   102,
-   126,   151,   127,   180,   606,   426,   563,   611,   643,   651,
-   645,   361,   462,   632,   129,   381,   137,   673,   570,   371,
-   443,   151,   129,   129,   646,   526,   628,   140,   151,     3,
-   381,   330,   587,   581,   333,   142,   546,   640,   151,   652,
-   104,   151,   350,   263,   151,   151,   175,   219,   221,   219,
-   221,    15,   633,   -55,   351,    19,   108,   488,   602,   180,
-   471,   100,   484,   642,   117,   105,   359,   518,   519,   469,
-   217,   218,   131,   592,   100,   100,   485,   655,     8,   178,
-   345,   109,   341,   343,   498,   327,   392,   469,   593,   564,
-   220,   218,   393,   328,   347,     9,   101,   276,   151,   469,
-    10,   152,    19,   431,   248,   435,   235,   437,   227,   101,
-   101,   228,   579,   580,   222,   151,   180,   277,    11,   112,
-   102,   472,   475,   483,     9,   271,   344,   218,   531,    10,
-   180,   180,   542,   102,   102,   232,   494,   180,   153,   514,
-     9,     9,   213,   402,   403,    10,   116,   154,   501,   418,
-   656,   541,   318,   429,   164,   151,   533,   657,   404,   175,
-   405,   406,   407,   408,   656,   341,   167,   214,   209,   211,
-   409,   657,   632,   175,   175,   156,   331,   332,   181,   345,
-   157,   345,   350,   327,   658,   256,   632,   283,   284,   285,
-   286,   328,   178,   183,   351,   396,   585,   219,   441,   513,
-   528,   283,   284,   285,   286,  -101,   178,   178,   374,   374,
-   214,   318,   263,   178,   661,  -405,   569,   279,   280,   151,
-   457,   631,   412,   661,   661,   402,   403,     9,   264,   164,
-  -101,   215,   282,   281,   274,   661,   632,   661,   661,   661,
-   404,   167,   405,   406,   407,   408,   653,   283,   284,   285,
-   286,   209,   409,   214,   185,   588,   327,   151,   151,   214,
-   503,   287,   188,   523,   328,   657,   289,   151,   464,   571,
-   159,   217,   218,   160,   483,   151,   441,   590,   161,   162,
-   632,   163,   604,   627,   468,   214,   189,     9,   524,   164,
-   489,   490,    10,   165,   166,   283,   284,   285,   286,   439,
-   190,   167,   591,   357,   218,   239,   168,   214,   539,   240,
-   218,   374,   199,   374,   290,   291,   159,    16,   131,   160,
-  -248,   292,   169,   474,   112,   356,   200,     9,   603,   357,
-   218,   279,    10,   531,   555,   558,   223,   556,   532,   358,
-   151,     9,   483,   621,   131,   623,   282,   491,   624,   495,
-   496,   598,   224,   143,   491,   539,   600,   144,   220,   218,
-   540,   283,   284,   285,   286,   666,   667,   145,   531,   234,
-   562,   318,   131,   544,   656,   287,   516,   674,   491,   675,
-   289,   657,   459,    65,   459,    67,   236,    69,    70,    15,
-   668,    72,    73,    74,    75,   669,   632,   668,    78,    79,
-   538,   668,   680,   344,   218,   584,   681,   594,   676,   491,
-   656,   283,   284,   285,   286,   112,   237,   657,   440,   218,
-   677,   679,   133,   135,   238,   151,   210,   212,   290,   291,
-   468,   244,   632,   338,   340,   292,   486,   487,   134,   136,
-   246,   247,   215,   249,   678,   257,   575,   283,   284,   285,
-   286,   258,   259,   559,    65,   260,    67,   265,    69,    70,
-   151,   272,    72,    73,    74,    75,   568,   273,   334,    78,
-    79,   335,   353,   491,   326,   112,   159,   151,   355,   160,
-   354,   364,   576,   365,   229,   230,   366,   163,   582,   369,
-   372,   373,   575,   384,   386,   164,   491,   491,   387,   231,
-   388,    15,   568,   391,   414,   401,   415,   167,   416,   417,
-   449,   450,   168,   419,   420,   454,   421,   422,   423,   424,
-   427,   636,   425,   434,   428,   452,   432,   520,   568,   504,
-  -406,   461,   636,   453,   505,   463,   635,   527,   554,   583,
-   549,   529,   530,   112,   552,   636,   636,   635,   663,   507,
-   534,   535,   636,   536,   537,   550,   506,   663,   663,   543,
-   635,   635,   551,   553,   665,   281,   596,   635,   561,   663,
-   577,   663,   663,   663,   159,   545,   589,   160,   599,    21,
-   605,   279,   280,   609,   607,   614,   613,   618,   620,   622,
-   625,   473,   281,   164,   626,   629,   282,   637,   639,   641,
-  -407,   649,   647,   648,   650,   167,   664,   645,   670,   683,
-   671,   283,   284,   285,   286,   684,   615,   672,     7,   455,
-    85,   139,    87,   325,   155,   287,   288,   337,   322,   339,
-   289,   278,   525,   158,   616,   477,   478,   479,    27,    28,
-    29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-    39,    40,    41,    42,    43,    44,    45,   601,    46,    47,
-    48,    49,    50,    51,    52,    53,    54,    55,   111,    57,
-    58,    59,    60,    61,   193,    62,   194,   586,   290,   291,
-   195,   612,   638,   617,   572,   292,   448,    65,   377,    67,
-    68,    69,    70,   438,   348,    72,    73,    74,    75,    76,
-   410,    77,    78,    79,   159,   394,   390,   160,   233,    21,
-   565,   279,   280,   184,   349,     0,     0,     0,     0,     0,
-     0,   473,   281,   164,     0,     0,   282,     0,     0,     0,
-     0,     0,     0,     0,     0,   167,     0,     0,     0,     0,
-     0,   283,   284,   285,   286,   476,     0,     0,     0,     0,
-     0,   329,     0,     0,     0,   287,   288,     0,     0,     0,
-   289,     0,     0,     0,     0,   477,   478,   479,    27,    28,
-    29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-    39,    40,    41,    42,    43,    44,    45,     0,    46,    47,
-    48,    49,    50,    51,    52,    53,    54,    55,   111,    57,
-    58,    59,    60,    61,     0,    62,     0,     0,   290,   291,
-     0,     0,     0,     0,     0,   292,     0,    65,     0,    67,
-    68,    69,    70,     0,     0,    72,    73,    74,    75,    76,
-     0,    77,    78,    79,   159,     0,     0,   160,     0,    21,
-     0,   279,   280,     0,     0,     0,     0,     0,     0,     0,
-     0,   473,   281,   164,     0,     0,   282,     0,     0,     0,
-     0,     0,     0,     0,     0,   167,     0,     0,     0,     0,
-     0,   283,   284,   285,   286,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   287,   288,     0,     0,     0,
-   289,     0,     0,     0,     0,   477,   478,   479,    27,    28,
-    29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-    39,    40,    41,    42,    43,    44,    45,     0,    46,    47,
-    48,    49,    50,    51,    52,    53,    54,    55,   111,    57,
-    58,    59,    60,    61,     0,    62,     0,     0,   290,   291,
-     0,     0,     0,     0,     0,   292,     0,    65,     0,    67,
-    68,    69,    70,     0,     0,    72,    73,    74,    75,    76,
-     0,    77,    78,    79,   159,     0,     0,   160,     0,    21,
-     0,   279,   280,     0,     0,     0,     0,     0,     0,     0,
-     0,   473,   281,   164,     0,     0,   282,     0,     0,     0,
-     0,     0,     0,     0,     0,   167,     0,     0,     0,     0,
-     0,   283,   284,   285,   286,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   287,   288,     0,     0,     0,
-   289,     0,     0,     0,     0,     0,     0,     0,    27,    28,
-    29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-    39,    40,    41,    42,    43,    44,    45,     0,    46,    47,
-    48,    49,    50,    51,    52,    53,    54,    55,   111,    57,
-    58,    59,    60,    61,     0,    62,     0,     0,   290,   291,
-     0,     0,     0,     0,     0,   292,     0,    65,     0,    67,
-    68,    69,    70,     0,     0,    72,    73,    74,    75,    76,
-     0,    77,    78,    79,   159,     0,     0,   160,     0,    21,
-     0,     0,   161,   162,     0,   163,     0,     0,     0,     0,
-     0,    22,     0,   164,     0,     0,     0,   165,   166,     0,
-     0,     0,     0,     0,     0,   167,     0,     0,     0,     0,
-   168,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   169,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   170,    27,    28,
-    29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-    39,    40,    41,    42,    43,    44,    45,     0,    46,    47,
-    48,    49,    50,    51,    52,    53,    54,    55,   111,    57,
-    58,    59,    60,    61,    21,    62,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    22,    65,     0,    67,
-    68,    69,    70,     0,     0,    72,    73,    74,    75,    76,
-     0,    77,    78,    79,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    23,     0,    24,     0,     0,     0,
-     0,     0,    25,     0,     0,     0,     0,     0,    26,     0,
-     0,     0,     0,    27,    28,    29,    30,    31,    32,    33,
-    34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-    44,    45,     0,    46,    47,    48,    49,    50,    51,    52,
-    53,    54,    55,    56,    57,    58,    59,    60,    61,     0,
-    62,     0,     0,     0,     0,    63,     0,    21,     0,    64,
-     0,     3,    65,    66,    67,    68,    69,    70,    71,    22,
-    72,    73,    74,    75,    76,     0,    77,    78,    79,    80,
-    81,    82,    83,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,    23,     0,    24,
-     0,     0,     0,     0,     0,    25,     0,     0,     0,     0,
-     0,    26,     0,     0,     0,     0,    27,    28,    29,    30,
-    31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-    41,    42,    43,    44,    45,     0,    46,    47,    48,    49,
-    50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-    60,    61,    21,    62,     0,     0,     0,     0,    63,     0,
-     0,     0,    64,     0,    22,    65,    66,    67,    68,    69,
-    70,    71,     0,    72,    73,    74,    75,    76,     0,    77,
-    78,    79,    80,    81,    82,    83,     0,     0,     0,     0,
-     0,     0,     0,     0,    24,     0,     0,     0,     0,     0,
-    25,     0,     0,     0,     0,     0,    26,     0,     0,     0,
-     0,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-    36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-     0,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-    55,    56,    57,    58,    59,    60,    61,     0,    62,     0,
-     0,     0,     0,     0,    21,     0,     0,    64,     0,     0,
-    65,    66,    67,    68,    69,    70,    22,     0,    72,    73,
-    74,    75,    76,     0,    77,    78,    79,    80,    81,    82,
-    83,   557,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,    27,    28,    29,    30,    31,    32,    33,
-    34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-    44,    45,     0,    46,    47,    48,    49,    50,    51,    52,
-    53,    54,    55,   111,    57,    58,    59,    60,    61,   439,
-    62,    21,     0,   357,   218,     0,     0,     0,     0,     0,
-     0,     0,    65,    22,    67,    68,    69,    70,   131,     0,
-    72,    73,    74,    75,    76,     0,    77,    78,    79,     0,
-    81,    82,    83,     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,
-    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-    37,    38,    39,    40,    41,    42,    43,    44,    45,     0,
-    46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-   111,    57,    58,    59,    60,    61,   239,    62,    21,     0,
-   240,   218,     0,     0,     0,     0,     0,     0,     0,    65,
-    22,    67,    68,    69,    70,     0,     0,    72,    73,    74,
-    75,    76,   250,    77,    78,    79,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,    27,    28,    29,
-    30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-    40,    41,    42,    43,    44,    45,     0,    46,    47,    48,
-    49,    50,    51,    52,    53,    54,    55,   111,    57,    58,
-    59,    60,    61,    21,    62,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,    22,    65,     0,    67,    68,
-    69,    70,     0,     0,    72,    73,    74,    75,    76,   250,
-    77,    78,    79,     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,   314,
-   315,     0,    27,    28,    29,    30,    31,    32,    33,    34,
-    35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-    45,     0,    46,    47,    48,    49,    50,    51,    52,    53,
-    54,    55,   111,    57,    58,    59,    60,    61,     0,    62,
-    21,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    65,    22,    67,    68,    69,    70,     0,     0,    72,
-    73,    74,    75,    76,     0,    77,    78,    79,     0,   319,
-     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,    27,
-    28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-    38,    39,    40,    41,    42,    43,    44,    45,     0,    46,
-    47,    48,    49,    50,    51,    52,    53,    54,    55,   111,
-    57,    58,    59,    60,    61,     0,    62,    21,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    65,    22,
-    67,    68,    69,    70,     0,     0,    72,    73,    74,    75,
-    76,   250,    77,    78,    79,     0,   323,     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,    27,    28,    29,    30,
-    31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-    41,    42,    43,    44,    45,     0,    46,    47,    48,    49,
-    50,    51,    52,    53,    54,    55,   111,    57,    58,    59,
-    60,    61,     0,    62,    21,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,    65,    22,    67,    68,    69,
-    70,     0,     0,    72,    73,    74,    75,    76,   250,    77,
-    78,    79,     0,   430,     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,    27,    28,    29,    30,    31,    32,    33,
-    34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-    44,    45,     0,    46,    47,    48,    49,    50,    51,    52,
-    53,    54,    55,   111,    57,    58,    59,    60,    61,     0,
-    62,    21,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,    65,    22,    67,    68,    69,    70,     0,     0,
-    72,    73,    74,    75,    76,   250,    77,    78,    79,     0,
-   512,     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,
-    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-    37,    38,    39,    40,    41,    42,    43,    44,    45,     0,
-    46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-   111,    57,    58,    59,    60,    61,    21,    62,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    22,    65,
-     0,    67,    68,    69,    70,     0,     0,    72,    73,    74,
-    75,    76,   250,    77,    78,    79,     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,    27,    28,    29,    30,    31,
-    32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-    42,    43,    44,    45,     0,    46,    47,    48,    49,    50,
-    51,    52,    53,    54,    55,   111,    57,    58,    59,    60,
-    61,    21,    62,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,    22,    65,     0,    67,    68,    69,    70,
-     0,     0,    72,    73,    74,    75,    76,   250,    77,    78,
-    79,     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,
-    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-    37,    38,    39,    40,    41,    42,    43,    44,    45,     0,
-    46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-   111,    57,    58,    59,    60,    61,    21,    62,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    22,    65,
-     0,    67,    68,    69,    70,     0,   267,    72,    73,    74,
-    75,    76,     0,    77,    78,    79,     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,    27,    28,    29,    30,    31,
-    32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-    42,    43,    44,    45,     0,    46,    47,    48,    49,    50,
-    51,    52,    53,    54,    55,   111,    57,    58,    59,    60,
-    61,     0,    62,     0,     0,     0,     0,     0,    21,     0,
-     0,     0,     0,     0,    65,     0,    67,    68,    69,    70,
-    22,     0,    72,    73,    74,    75,    76,   436,    77,    78,
-    79,     0,     0,     0,     0,   458,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,    27,    28,    29,
-    30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-    40,    41,    42,    43,    44,    45,     0,    46,    47,    48,
-    49,    50,    51,    52,    53,    54,    55,   111,    57,    58,
-    59,    60,    61,     0,    62,     0,     0,     0,     0,     0,
-    21,     0,     0,     0,     0,     0,    65,     0,    67,    68,
-    69,    70,    22,     0,    72,    73,    74,    75,    76,     0,
-    77,    78,    79,     0,     0,     0,     0,   460,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,    27,
-    28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-    38,    39,    40,    41,    42,    43,    44,    45,     0,    46,
-    47,    48,    49,    50,    51,    52,    53,    54,    55,   111,
-    57,    58,    59,    60,    61,    21,    62,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,    22,    65,     0,
-    67,    68,    69,    70,     0,     0,    72,    73,    74,    75,
-    76,     0,    77,    78,    79,     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,   566,    27,    28,    29,    30,    31,    32,
-    33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-    43,    44,    45,     0,    46,    47,    48,    49,    50,    51,
-    52,    53,    54,    55,   111,    57,    58,    59,    60,    61,
-    21,    62,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,    22,    65,     0,    67,    68,    69,    70,     0,
-     0,    72,    73,    74,    75,    76,     0,    77,    78,    79,
-     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,    27,
-    28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-    38,    39,    40,    41,    42,    43,    44,    45,     0,    46,
-    47,    48,    49,    50,    51,    52,    53,    54,    55,   111,
-    57,    58,    59,    60,    61,     0,    62,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    65,     0,
-    67,    68,    69,    70,     0,     0,    72,    73,    74,    75,
-    76,     0,    77,    78,    79,   159,     0,     0,   160,     0,
-     0,     0,   279,   280,     0,     0,     0,     0,     0,     0,
-     0,     0,     9,   281,   164,   350,     0,   282,     0,     0,
-     0,   159,     0,     0,   160,     0,   167,   351,   279,   280,
-     0,     0,   283,   284,   285,   286,     0,     0,     9,   281,
-   164,     0,     0,   282,     0,     0,   287,   288,     0,     0,
-     0,   289,   167,     0,   321,     0,     0,     0,   283,   284,
-   285,   286,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   159,   287,   288,   160,     0,     0,   289,   279,   280,
-     0,     0,     0,     0,     0,     0,     0,     0,     9,   281,
-   164,     0,     0,   282,     0,     0,     0,     0,     0,   290,
-   291,     0,   167,     0,   380,     0,   292,     0,   283,   284,
-   285,   286,   159,     0,     0,   160,     0,     0,     0,   279,
-   280,     0,   287,   288,     0,   290,   291,   289,     0,     9,
-   281,   164,   292,     0,   282,     0,     0,     0,     0,     0,
-     0,     0,     0,   167,     0,   493,     0,     0,     0,   283,
-   284,   285,   286,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   159,   287,   288,   160,     0,     0,   289,   279,
-   280,     0,     0,     0,     0,   290,   291,     0,     0,     9,
-   281,   164,   292,     0,   282,     0,     0,     0,   159,     0,
-     0,   160,     0,   167,     0,   279,   280,     0,     0,   283,
-   284,   285,   286,     0,     0,     9,     0,   164,     0,     0,
-   282,     0,     0,   287,   288,     0,   290,   291,   289,   167,
-     0,     0,     0,   292,     0,   283,   284,   285,   286,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   287,
-     0,     0,     0,     0,   289,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   290,   291,     0,     0,
-     0,     0,     0,   292,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   290,   291,     0,     0,     0,     0,     0,   292
+static const short yytable[] =
+{
+     118,   100,   103,   113,   196,   252,   413,   148,   141,    15,
+      19,   296,   186,   271,   296,    15,   209,   211,   112,   198,
+     275,   120,   395,    19,   391,   379,   341,   343,   389,   203,
+     117,   497,     2,   132,   385,   107,   101,   320,   399,   400,
+     324,   245,   391,   110,   670,   445,   595,   208,   219,   221,
+     391,   124,   545,   336,   442,   510,   643,   644,   645,   631,
+     102,   126,   151,   127,   180,   606,   426,   563,   611,   643,
+     651,   645,   361,   462,   632,   129,   381,   137,   673,   570,
+     371,   443,   151,   129,   129,   646,   526,   628,   140,   151,
+       3,   381,   330,   587,   581,   333,   142,   546,   640,   151,
+     652,   104,   151,   350,   263,   151,   151,   175,   219,   221,
+     219,   221,    15,   633,   -55,   351,    19,   108,   488,   602,
+     180,   471,   100,   484,   642,   117,   105,   359,   518,   519,
+     469,   217,   218,   131,   592,   100,   100,   485,   655,     8,
+     178,   345,   109,   341,   343,   498,   327,   392,   469,   593,
+     564,   220,   218,   393,   328,   347,     9,   101,   276,   151,
+     469,    10,   152,    19,   431,   248,   435,   235,   437,   227,
+     101,   101,   228,   579,   580,   222,   151,   180,   277,    11,
+     112,   102,   472,   475,   483,     9,   271,   344,   218,   531,
+      10,   180,   180,   542,   102,   102,   232,   494,   180,   153,
+     514,     9,     9,   213,   402,   403,    10,   116,   154,   501,
+     418,   656,   541,   318,   429,   164,   151,   533,   657,   404,
+     175,   405,   406,   407,   408,   656,   341,   167,   214,   209,
+     211,   409,   657,   632,   175,   175,   156,   331,   332,   181,
+     345,   157,   345,   350,   327,   658,   256,   632,   283,   284,
+     285,   286,   328,   178,   183,   351,   396,   585,   219,   441,
+     513,   528,   283,   284,   285,   286,  -101,   178,   178,   374,
+     374,   214,   318,   263,   178,   661,  -405,   569,   279,   280,
+     151,   457,   631,   412,   661,   661,   402,   403,     9,   264,
+     164,  -101,   215,   282,   281,   274,   661,   632,   661,   661,
+     661,   404,   167,   405,   406,   407,   408,   653,   283,   284,
+     285,   286,   209,   409,   214,   185,   588,   327,   151,   151,
+     214,   503,   287,   188,   523,   328,   657,   289,   151,   464,
+     571,   159,   217,   218,   160,   483,   151,   441,   590,   161,
+     162,   632,   163,   604,   627,   468,   214,   189,     9,   524,
+     164,   489,   490,    10,   165,   166,   283,   284,   285,   286,
+     439,   190,   167,   591,   357,   218,   239,   168,   214,   539,
+     240,   218,   374,   199,   374,   290,   291,   159,    16,   131,
+     160,  -248,   292,   169,   474,   112,   356,   200,     9,   603,
+     357,   218,   279,    10,   531,   555,   558,   223,   556,   532,
+     358,   151,     9,   483,   621,   131,   623,   282,   491,   624,
+     495,   496,   598,   224,   143,   491,   539,   600,   144,   220,
+     218,   540,   283,   284,   285,   286,   666,   667,   145,   531,
+     234,   562,   318,   131,   544,   656,   287,   516,   674,   491,
+     675,   289,   657,   459,    65,   459,    67,   236,    69,    70,
+      15,   668,    72,    73,    74,    75,   669,   632,   668,    78,
+      79,   538,   668,   680,   344,   218,   584,   681,   594,   676,
+     491,   656,   283,   284,   285,   286,   112,   237,   657,   440,
+     218,   677,   679,   133,   135,   238,   151,   210,   212,   290,
+     291,   468,   244,   632,   338,   340,   292,   486,   487,   134,
+     136,   246,   247,   215,   249,   678,   257,   575,   283,   284,
+     285,   286,   258,   259,   559,    65,   260,    67,   265,    69,
+      70,   151,   272,    72,    73,    74,    75,   568,   273,   334,
+      78,    79,   335,   353,   491,   326,   112,   159,   151,   355,
+     160,   354,   364,   576,   365,   229,   230,   366,   163,   582,
+     369,   372,   373,   575,   384,   386,   164,   491,   491,   387,
+     231,   388,    15,   568,   391,   414,   401,   415,   167,   416,
+     417,   449,   450,   168,   419,   420,   454,   421,   422,   423,
+     424,   427,   636,   425,   434,   428,   452,   432,   520,   568,
+     504,  -406,   461,   636,   453,   505,   463,   635,   527,   554,
+     583,   549,   529,   530,   112,   552,   636,   636,   635,   663,
+     507,   534,   535,   636,   536,   537,   550,   506,   663,   663,
+     543,   635,   635,   551,   553,   665,   281,   596,   635,   561,
+     663,   577,   663,   663,   663,   159,   545,   589,   160,   599,
+      21,   605,   279,   280,   609,   607,   614,   613,   618,   620,
+     622,   625,   473,   281,   164,   626,   629,   282,   637,   639,
+     641,  -407,   649,   647,   648,   650,   167,   664,   645,   670,
+     683,   671,   283,   284,   285,   286,   684,   615,   672,     7,
+     455,    85,   139,    87,   325,   155,   287,   288,   337,   322,
+     339,   289,   278,   525,   158,   616,   477,   478,   479,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,   601,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,   111,
+      57,    58,    59,    60,    61,   193,    62,   194,   586,   290,
+     291,   195,   612,   638,   617,   572,   292,   448,    65,   377,
+      67,    68,    69,    70,   438,   348,    72,    73,    74,    75,
+      76,   410,    77,    78,    79,   159,   394,   390,   160,   233,
+      21,   565,   279,   280,   184,   349,     0,     0,     0,     0,
+       0,     0,   473,   281,   164,     0,     0,   282,     0,     0,
+       0,     0,     0,     0,     0,     0,   167,     0,     0,     0,
+       0,     0,   283,   284,   285,   286,   476,     0,     0,     0,
+       0,     0,   329,     0,     0,     0,   287,   288,     0,     0,
+       0,   289,     0,     0,     0,     0,   477,   478,   479,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,     0,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,   111,
+      57,    58,    59,    60,    61,     0,    62,     0,     0,   290,
+     291,     0,     0,     0,     0,     0,   292,     0,    65,     0,
+      67,    68,    69,    70,     0,     0,    72,    73,    74,    75,
+      76,     0,    77,    78,    79,   159,     0,     0,   160,     0,
+      21,     0,   279,   280,     0,     0,     0,     0,     0,     0,
+       0,     0,   473,   281,   164,     0,     0,   282,     0,     0,
+       0,     0,     0,     0,     0,     0,   167,     0,     0,     0,
+       0,     0,   283,   284,   285,   286,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   287,   288,     0,     0,
+       0,   289,     0,     0,     0,     0,   477,   478,   479,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,     0,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,   111,
+      57,    58,    59,    60,    61,     0,    62,     0,     0,   290,
+     291,     0,     0,     0,     0,     0,   292,     0,    65,     0,
+      67,    68,    69,    70,     0,     0,    72,    73,    74,    75,
+      76,     0,    77,    78,    79,   159,     0,     0,   160,     0,
+      21,     0,   279,   280,     0,     0,     0,     0,     0,     0,
+       0,     0,   473,   281,   164,     0,     0,   282,     0,     0,
+       0,     0,     0,     0,     0,     0,   167,     0,     0,     0,
+       0,     0,   283,   284,   285,   286,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   287,   288,     0,     0,
+       0,   289,     0,     0,     0,     0,     0,     0,     0,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,     0,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,   111,
+      57,    58,    59,    60,    61,     0,    62,     0,     0,   290,
+     291,     0,     0,     0,     0,     0,   292,     0,    65,     0,
+      67,    68,    69,    70,     0,     0,    72,    73,    74,    75,
+      76,     0,    77,    78,    79,   159,     0,     0,   160,     0,
+      21,     0,     0,   161,   162,     0,   163,     0,     0,     0,
+       0,     0,    22,     0,   164,     0,     0,     0,   165,   166,
+       0,     0,     0,     0,     0,     0,   167,     0,     0,     0,
+       0,   168,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   169,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   170,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,     0,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,   111,
+      57,    58,    59,    60,    61,    21,    62,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    22,    65,     0,
+      67,    68,    69,    70,     0,     0,    72,    73,    74,    75,
+      76,     0,    77,    78,    79,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    23,     0,    24,     0,     0,
+       0,     0,     0,    25,     0,     0,     0,     0,     0,    26,
+       0,     0,     0,     0,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,     0,    46,    47,    48,    49,    50,    51,
+      52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
+       0,    62,     0,     0,     0,     0,    63,     0,    21,     0,
+      64,     0,     3,    65,    66,    67,    68,    69,    70,    71,
+      22,    72,    73,    74,    75,    76,     0,    77,    78,    79,
+      80,    81,    82,    83,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    23,     0,
+      24,     0,     0,     0,     0,     0,    25,     0,     0,     0,
+       0,     0,    26,     0,     0,     0,     0,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,     0,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+      59,    60,    61,    21,    62,     0,     0,     0,     0,    63,
+       0,     0,     0,    64,     0,    22,    65,    66,    67,    68,
+      69,    70,    71,     0,    72,    73,    74,    75,    76,     0,
+      77,    78,    79,    80,    81,    82,    83,     0,     0,     0,
+       0,     0,     0,     0,     0,    24,     0,     0,     0,     0,
+       0,    25,     0,     0,     0,     0,     0,    26,     0,     0,
+       0,     0,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,     0,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,    57,    58,    59,    60,    61,     0,    62,
+       0,     0,     0,     0,     0,    21,     0,     0,    64,     0,
+       0,    65,    66,    67,    68,    69,    70,    22,     0,    72,
+      73,    74,    75,    76,     0,    77,    78,    79,    80,    81,
+      82,    83,   557,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,     0,    46,    47,    48,    49,    50,    51,
+      52,    53,    54,    55,   111,    57,    58,    59,    60,    61,
+     439,    62,    21,     0,   357,   218,     0,     0,     0,     0,
+       0,     0,     0,    65,    22,    67,    68,    69,    70,   131,
+       0,    72,    73,    74,    75,    76,     0,    77,    78,    79,
+       0,    81,    82,    83,     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,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+       0,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,   111,    57,    58,    59,    60,    61,   239,    62,    21,
+       0,   240,   218,     0,     0,     0,     0,     0,     0,     0,
+      65,    22,    67,    68,    69,    70,     0,     0,    72,    73,
+      74,    75,    76,   250,    77,    78,    79,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,     0,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,   111,    57,
+      58,    59,    60,    61,    21,    62,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    22,    65,     0,    67,
+      68,    69,    70,     0,     0,    72,    73,    74,    75,    76,
+     250,    77,    78,    79,     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,
+     314,   315,     0,    27,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,     0,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,   111,    57,    58,    59,    60,    61,     0,
+      62,    21,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    65,    22,    67,    68,    69,    70,     0,     0,
+      72,    73,    74,    75,    76,     0,    77,    78,    79,     0,
+     319,     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,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,     0,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+     111,    57,    58,    59,    60,    61,     0,    62,    21,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    65,
+      22,    67,    68,    69,    70,     0,     0,    72,    73,    74,
+      75,    76,   250,    77,    78,    79,     0,   323,     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,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,     0,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,   111,    57,    58,
+      59,    60,    61,     0,    62,    21,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    65,    22,    67,    68,
+      69,    70,     0,     0,    72,    73,    74,    75,    76,   250,
+      77,    78,    79,     0,   430,     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,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,     0,    46,    47,    48,    49,    50,    51,
+      52,    53,    54,    55,   111,    57,    58,    59,    60,    61,
+       0,    62,    21,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    65,    22,    67,    68,    69,    70,     0,
+       0,    72,    73,    74,    75,    76,   250,    77,    78,    79,
+       0,   512,     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,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+       0,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,   111,    57,    58,    59,    60,    61,    21,    62,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    22,
+      65,     0,    67,    68,    69,    70,     0,     0,    72,    73,
+      74,    75,    76,   250,    77,    78,    79,     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,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,     0,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,   111,    57,    58,    59,
+      60,    61,    21,    62,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    22,    65,     0,    67,    68,    69,
+      70,     0,     0,    72,    73,    74,    75,    76,   250,    77,
+      78,    79,     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,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+       0,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,   111,    57,    58,    59,    60,    61,    21,    62,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    22,
+      65,     0,    67,    68,    69,    70,     0,   267,    72,    73,
+      74,    75,    76,     0,    77,    78,    79,     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,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,     0,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,   111,    57,    58,    59,
+      60,    61,     0,    62,     0,     0,     0,     0,     0,    21,
+       0,     0,     0,     0,     0,    65,     0,    67,    68,    69,
+      70,    22,     0,    72,    73,    74,    75,    76,   436,    77,
+      78,    79,     0,     0,     0,     0,   458,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,     0,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,   111,    57,
+      58,    59,    60,    61,     0,    62,     0,     0,     0,     0,
+       0,    21,     0,     0,     0,     0,     0,    65,     0,    67,
+      68,    69,    70,    22,     0,    72,    73,    74,    75,    76,
+       0,    77,    78,    79,     0,     0,     0,     0,   460,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,     0,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+     111,    57,    58,    59,    60,    61,    21,    62,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    22,    65,
+       0,    67,    68,    69,    70,     0,     0,    72,    73,    74,
+      75,    76,     0,    77,    78,    79,     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,   566,    27,    28,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,     0,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,   111,    57,    58,    59,    60,
+      61,    21,    62,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    22,    65,     0,    67,    68,    69,    70,
+       0,     0,    72,    73,    74,    75,    76,     0,    77,    78,
+      79,     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,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,     0,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+     111,    57,    58,    59,    60,    61,     0,    62,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    65,
+       0,    67,    68,    69,    70,     0,     0,    72,    73,    74,
+      75,    76,     0,    77,    78,    79,   159,     0,     0,   160,
+       0,     0,     0,   279,   280,     0,     0,     0,     0,     0,
+       0,     0,     0,     9,   281,   164,   350,     0,   282,     0,
+       0,     0,   159,     0,     0,   160,     0,   167,   351,   279,
+     280,     0,     0,   283,   284,   285,   286,     0,     0,     9,
+     281,   164,     0,     0,   282,     0,     0,   287,   288,     0,
+       0,     0,   289,   167,     0,   321,     0,     0,     0,   283,
+     284,   285,   286,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   159,   287,   288,   160,     0,     0,   289,   279,
+     280,     0,     0,     0,     0,     0,     0,     0,     0,     9,
+     281,   164,     0,     0,   282,     0,     0,     0,     0,     0,
+     290,   291,     0,   167,     0,   380,     0,   292,     0,   283,
+     284,   285,   286,   159,     0,     0,   160,     0,     0,     0,
+     279,   280,     0,   287,   288,     0,   290,   291,   289,     0,
+       9,   281,   164,   292,     0,   282,     0,     0,     0,     0,
+       0,     0,     0,     0,   167,     0,   493,     0,     0,     0,
+     283,   284,   285,   286,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   159,   287,   288,   160,     0,     0,   289,
+     279,   280,     0,     0,     0,     0,   290,   291,     0,     0,
+       9,   281,   164,   292,     0,   282,     0,     0,     0,   159,
+       0,     0,   160,     0,   167,     0,   279,   280,     0,     0,
+     283,   284,   285,   286,     0,     0,     9,     0,   164,     0,
+       0,   282,     0,     0,   287,   288,     0,   290,   291,   289,
+     167,     0,     0,     0,   292,     0,   283,   284,   285,   286,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     287,     0,     0,     0,     0,   289,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   290,   291,     0,
+       0,     0,     0,     0,   292,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   290,   291,     0,     0,     0,     0,     0,
+     292
 };
 
-static const short yycheck[] = {    23,
-     4,     8,    21,   125,   185,   309,   100,    97,     2,     3,
-   215,   120,   200,   218,     8,   143,   144,    21,   127,   208,
-    24,   300,    16,    14,   279,   239,   240,   295,   137,    23,
-   408,    57,    71,   288,    16,     4,   217,   303,   304,   220,
-   178,    14,    10,     3,   363,   577,   140,   149,   150,    14,
-    62,    60,   235,     7,   432,     6,     7,     8,    10,     4,
-    64,   100,    66,   110,   596,   333,   525,   599,     6,     7,
-     8,   254,    37,    25,    68,   280,    80,    37,    51,   267,
-    34,   120,    76,    77,    35,   463,   618,    91,   127,   115,
-   295,   229,   566,   552,   232,    99,   105,   629,   137,    37,
-     7,   140,    23,   197,   143,   144,   110,   209,   210,   211,
-   212,   105,   620,    97,    35,   109,     7,   396,   592,   166,
-   111,   125,   390,   631,   118,    32,   254,   446,   447,   384,
-    10,    11,    25,    31,   138,   139,   391,   645,     3,   110,
-   242,    32,   356,   357,   410,    24,    33,   402,    46,   527,
-    10,    11,    39,    32,   244,    20,   125,    37,   197,   414,
-    25,     7,   156,   344,   183,   354,   170,   355,   162,   138,
-   139,   165,   550,   551,   156,   214,   223,    37,    43,   183,
-   125,   386,   387,   388,    20,   373,    10,    11,    32,    25,
-   237,   238,    36,   138,   139,   166,   402,   244,     7,    35,
-    20,    20,     7,    11,    12,    25,    25,     3,   414,   318,
-     3,   490,   216,    37,    22,   254,   471,    10,    26,   223,
-    28,    29,    30,    31,     3,   439,    34,    32,   356,   357,
-    38,    10,    25,   237,   238,    32,   230,   231,     6,   341,
-    37,   343,    23,    24,    37,     7,    25,    40,    41,    42,
-    43,    32,   223,    31,    35,   302,   560,   359,   360,   440,
-   465,    40,    41,    42,    43,     7,   237,   238,   272,   273,
-    32,   275,   366,   244,   647,    10,   531,    10,    11,   318,
-   374,    10,    10,   656,   657,    11,    12,    20,     7,    22,
-    32,    33,    25,    21,     7,   668,    25,   670,   671,   672,
-    26,    34,    28,    29,    30,    31,    35,    40,    41,    42,
-    43,   439,    38,    32,    10,   570,    24,   356,   357,    32,
-     7,    54,   112,     7,    32,    10,    59,   366,    36,   534,
-     3,    10,    11,     6,   539,   374,   438,     7,    11,    12,
-    25,    14,     7,     7,   383,    32,   112,    20,    32,    22,
-   397,   398,    25,    26,    27,    40,    41,    42,    43,     6,
-    97,    34,    32,    10,    11,     6,    39,    32,    32,    10,
-    11,   375,    34,   377,   107,   108,     3,    10,    25,     6,
-    34,   114,    55,   387,   388,     6,    10,    20,   593,    10,
-    11,    10,    25,    32,    32,   517,    10,    35,    37,    20,
-   439,    20,   607,   610,    25,   612,    25,   401,   613,   403,
-   404,   581,    27,     6,   408,    32,   586,    10,    10,    11,
-    37,    40,    41,    42,    43,   656,   657,    20,    32,    27,
-   524,   435,    25,    37,     3,    54,   443,   668,   432,   670,
-    59,    10,   375,   116,   377,   118,    37,   120,   121,   443,
-    32,   124,   125,   126,   127,    37,    25,    32,   131,   132,
-   479,    32,    37,    10,    11,   559,    37,   576,    37,   463,
-     3,    40,    41,    42,    43,   479,    32,    10,    10,    11,
-   671,   672,    76,    77,    32,   524,   143,   144,   107,   108,
-   529,    53,    25,   237,   238,   114,   392,   393,    76,    77,
-    27,     6,    33,     7,    37,    20,   545,    40,    41,    42,
-    43,    20,   112,   517,   116,   112,   118,    25,   120,   121,
-   559,    34,   124,   125,   126,   127,   530,    34,    27,   131,
-   132,   111,     8,   527,    36,   539,     3,   576,    32,     6,
-    37,    20,   546,    20,    11,    12,    32,    14,   555,    32,
-    37,    32,   591,    10,    10,    22,   550,   551,    10,    26,
-    10,   555,   566,    14,    10,    31,     7,    34,     7,    34,
-     7,    34,    39,    37,    36,     7,    37,    37,    27,    27,
-    27,   620,    36,    27,    37,    25,    31,    58,   592,    27,
-    10,    34,   631,    35,    27,    31,   620,    31,     7,     7,
-    27,    32,    31,   607,    34,   644,   645,   631,   647,    37,
-    32,    37,   651,    37,    37,    26,    51,   656,   657,    37,
-   644,   645,    32,    37,   648,    21,   106,   651,    35,   668,
-    49,   670,   671,   672,     3,    60,    37,     6,    10,     8,
-     7,    10,    11,    47,    61,     7,    46,    52,    34,    37,
-     7,    20,    21,    22,     7,    48,    25,    35,     7,    35,
-    10,    35,    10,    33,     7,    34,    25,     8,     3,     0,
-    10,    40,    41,    42,    43,     0,    45,    10,     1,   373,
-     4,    87,     4,   223,   105,    54,    55,   237,   218,   238,
-    59,   214,   461,   109,    63,    64,    65,    66,    67,    68,
-    69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-    79,    80,    81,    82,    83,    84,    85,   591,    87,    88,
-    89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
-    99,   100,   101,   102,   125,   104,   125,   563,   107,   108,
-   125,   600,   623,   607,   539,   114,   366,   116,   273,   118,
-   119,   120,   121,   356,   244,   124,   125,   126,   127,   128,
-   306,   130,   131,   132,     3,   300,   295,     6,   166,     8,
-   529,    10,    11,   118,   244,    -1,    -1,    -1,    -1,    -1,
-    -1,    20,    21,    22,    -1,    -1,    25,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    34,    -1,    -1,    -1,    -1,
-    -1,    40,    41,    42,    43,    44,    -1,    -1,    -1,    -1,
-    -1,   226,    -1,    -1,    -1,    54,    55,    -1,    -1,    -1,
-    59,    -1,    -1,    -1,    -1,    64,    65,    66,    67,    68,
-    69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-    79,    80,    81,    82,    83,    84,    85,    -1,    87,    88,
-    89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
-    99,   100,   101,   102,    -1,   104,    -1,    -1,   107,   108,
-    -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,   118,
-   119,   120,   121,    -1,    -1,   124,   125,   126,   127,   128,
-    -1,   130,   131,   132,     3,    -1,    -1,     6,    -1,     8,
-    -1,    10,    11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    20,    21,    22,    -1,    -1,    25,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    34,    -1,    -1,    -1,    -1,
-    -1,    40,    41,    42,    43,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    54,    55,    -1,    -1,    -1,
-    59,    -1,    -1,    -1,    -1,    64,    65,    66,    67,    68,
-    69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-    79,    80,    81,    82,    83,    84,    85,    -1,    87,    88,
-    89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
-    99,   100,   101,   102,    -1,   104,    -1,    -1,   107,   108,
-    -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,   118,
-   119,   120,   121,    -1,    -1,   124,   125,   126,   127,   128,
-    -1,   130,   131,   132,     3,    -1,    -1,     6,    -1,     8,
-    -1,    10,    11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    20,    21,    22,    -1,    -1,    25,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    34,    -1,    -1,    -1,    -1,
-    -1,    40,    41,    42,    43,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    54,    55,    -1,    -1,    -1,
-    59,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
-    69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-    79,    80,    81,    82,    83,    84,    85,    -1,    87,    88,
-    89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
-    99,   100,   101,   102,    -1,   104,    -1,    -1,   107,   108,
-    -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,   118,
-   119,   120,   121,    -1,    -1,   124,   125,   126,   127,   128,
-    -1,   130,   131,   132,     3,    -1,    -1,     6,    -1,     8,
-    -1,    -1,    11,    12,    -1,    14,    -1,    -1,    -1,    -1,
-    -1,    20,    -1,    22,    -1,    -1,    -1,    26,    27,    -1,
-    -1,    -1,    -1,    -1,    -1,    34,    -1,    -1,    -1,    -1,
-    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    68,
-    69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-    79,    80,    81,    82,    83,    84,    85,    -1,    87,    88,
-    89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
-    99,   100,   101,   102,     8,   104,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    20,   116,    -1,   118,
-   119,   120,   121,    -1,    -1,   124,   125,   126,   127,   128,
-    -1,   130,   131,   132,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    48,    -1,    50,    -1,    -1,    -1,
-    -1,    -1,    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,
-    -1,    -1,    -1,    67,    68,    69,    70,    71,    72,    73,
-    74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-    84,    85,    -1,    87,    88,    89,    90,    91,    92,    93,
-    94,    95,    96,    97,    98,    99,   100,   101,   102,    -1,
-   104,    -1,    -1,    -1,    -1,   109,    -1,     8,    -1,   113,
-    -1,   115,   116,   117,   118,   119,   120,   121,   122,    20,
-   124,   125,   126,   127,   128,    -1,   130,   131,   132,   133,
-   134,   135,   136,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,    50,
-    -1,    -1,    -1,    -1,    -1,    56,    -1,    -1,    -1,    -1,
-    -1,    62,    -1,    -1,    -1,    -1,    67,    68,    69,    70,
-    71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-    81,    82,    83,    84,    85,    -1,    87,    88,    89,    90,
-    91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
-   101,   102,     8,   104,    -1,    -1,    -1,    -1,   109,    -1,
-    -1,    -1,   113,    -1,    20,   116,   117,   118,   119,   120,
-   121,   122,    -1,   124,   125,   126,   127,   128,    -1,   130,
-   131,   132,   133,   134,   135,   136,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,
-    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    -1,
-    -1,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-    76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
-    -1,    87,    88,    89,    90,    91,    92,    93,    94,    95,
-    96,    97,    98,    99,   100,   101,   102,    -1,   104,    -1,
-    -1,    -1,    -1,    -1,     8,    -1,    -1,   113,    -1,    -1,
-   116,   117,   118,   119,   120,   121,    20,    -1,   124,   125,
-   126,   127,   128,    -1,   130,   131,   132,   133,   134,   135,
-   136,    35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    67,    68,    69,    70,    71,    72,    73,
-    74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-    84,    85,    -1,    87,    88,    89,    90,    91,    92,    93,
-    94,    95,    96,    97,    98,    99,   100,   101,   102,     6,
-   104,     8,    -1,    10,    11,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   116,    20,   118,   119,   120,   121,    25,    -1,
-   124,   125,   126,   127,   128,    -1,   130,   131,   132,    -1,
-   134,   135,   136,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-    77,    78,    79,    80,    81,    82,    83,    84,    85,    -1,
-    87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-    97,    98,    99,   100,   101,   102,     6,   104,     8,    -1,
-    10,    11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   116,
-    20,   118,   119,   120,   121,    -1,    -1,   124,   125,   126,
-   127,   128,   129,   130,   131,   132,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    69,
-    70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-    80,    81,    82,    83,    84,    85,    -1,    87,    88,    89,
-    90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
-   100,   101,   102,     8,   104,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    20,   116,    -1,   118,   119,
-   120,   121,    -1,    -1,   124,   125,   126,   127,   128,   129,
-   130,   131,   132,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,
-    65,    -1,    67,    68,    69,    70,    71,    72,    73,    74,
-    75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-    85,    -1,    87,    88,    89,    90,    91,    92,    93,    94,
-    95,    96,    97,    98,    99,   100,   101,   102,    -1,   104,
-     8,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   116,    20,   118,   119,   120,   121,    -1,    -1,   124,
-   125,   126,   127,   128,    -1,   130,   131,   132,    -1,    37,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
-    68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-    78,    79,    80,    81,    82,    83,    84,    85,    -1,    87,
-    88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
-    98,    99,   100,   101,   102,    -1,   104,     8,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   116,    20,
-   118,   119,   120,   121,    -1,    -1,   124,   125,   126,   127,
-   128,   129,   130,   131,   132,    -1,    37,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    69,    70,
-    71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-    81,    82,    83,    84,    85,    -1,    87,    88,    89,    90,
-    91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
-   101,   102,    -1,   104,     8,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   116,    20,   118,   119,   120,
-   121,    -1,    -1,   124,   125,   126,   127,   128,   129,   130,
-   131,   132,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    67,    68,    69,    70,    71,    72,    73,
-    74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-    84,    85,    -1,    87,    88,    89,    90,    91,    92,    93,
-    94,    95,    96,    97,    98,    99,   100,   101,   102,    -1,
-   104,     8,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   116,    20,   118,   119,   120,   121,    -1,    -1,
-   124,   125,   126,   127,   128,   129,   130,   131,   132,    -1,
-    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-    77,    78,    79,    80,    81,    82,    83,    84,    85,    -1,
-    87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-    97,    98,    99,   100,   101,   102,     8,   104,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,   116,
-    -1,   118,   119,   120,   121,    -1,    -1,   124,   125,   126,
-   127,   128,   129,   130,   131,   132,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    67,    68,    69,    70,    71,
-    72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-    82,    83,    84,    85,    -1,    87,    88,    89,    90,    91,
-    92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
-   102,     8,   104,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    20,   116,    -1,   118,   119,   120,   121,
-    -1,    -1,   124,   125,   126,   127,   128,   129,   130,   131,
-   132,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-    77,    78,    79,    80,    81,    82,    83,    84,    85,    -1,
-    87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-    97,    98,    99,   100,   101,   102,     8,   104,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,   116,
-    -1,   118,   119,   120,   121,    -1,   123,   124,   125,   126,
-   127,   128,    -1,   130,   131,   132,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    67,    68,    69,    70,    71,
-    72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-    82,    83,    84,    85,    -1,    87,    88,    89,    90,    91,
-    92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
-   102,    -1,   104,    -1,    -1,    -1,    -1,    -1,     8,    -1,
-    -1,    -1,    -1,    -1,   116,    -1,   118,   119,   120,   121,
-    20,    -1,   124,   125,   126,   127,   128,   129,   130,   131,
-   132,    -1,    -1,    -1,    -1,    35,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    69,
-    70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-    80,    81,    82,    83,    84,    85,    -1,    87,    88,    89,
-    90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
-   100,   101,   102,    -1,   104,    -1,    -1,    -1,    -1,    -1,
-     8,    -1,    -1,    -1,    -1,    -1,   116,    -1,   118,   119,
-   120,   121,    20,    -1,   124,   125,   126,   127,   128,    -1,
-   130,   131,   132,    -1,    -1,    -1,    -1,    35,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
-    68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-    78,    79,    80,    81,    82,    83,    84,    85,    -1,    87,
-    88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
-    98,    99,   100,   101,   102,     8,   104,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,   116,    -1,
-   118,   119,   120,   121,    -1,    -1,   124,   125,   126,   127,
-   128,    -1,   130,   131,   132,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    66,    67,    68,    69,    70,    71,    72,
-    73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
-    83,    84,    85,    -1,    87,    88,    89,    90,    91,    92,
-    93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
-     8,   104,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    20,   116,    -1,   118,   119,   120,   121,    -1,
-    -1,   124,   125,   126,   127,   128,    -1,   130,   131,   132,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
-    68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-    78,    79,    80,    81,    82,    83,    84,    85,    -1,    87,
-    88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
-    98,    99,   100,   101,   102,    -1,   104,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   116,    -1,
-   118,   119,   120,   121,    -1,    -1,   124,   125,   126,   127,
-   128,    -1,   130,   131,   132,     3,    -1,    -1,     6,    -1,
-    -1,    -1,    10,    11,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    20,    21,    22,    23,    -1,    25,    -1,    -1,
-    -1,     3,    -1,    -1,     6,    -1,    34,    35,    10,    11,
-    -1,    -1,    40,    41,    42,    43,    -1,    -1,    20,    21,
-    22,    -1,    -1,    25,    -1,    -1,    54,    55,    -1,    -1,
-    -1,    59,    34,    -1,    36,    -1,    -1,    -1,    40,    41,
-    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,     3,    54,    55,     6,    -1,    -1,    59,    10,    11,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    21,
-    22,    -1,    -1,    25,    -1,    -1,    -1,    -1,    -1,   107,
-   108,    -1,    34,    -1,    36,    -1,   114,    -1,    40,    41,
-    42,    43,     3,    -1,    -1,     6,    -1,    -1,    -1,    10,
-    11,    -1,    54,    55,    -1,   107,   108,    59,    -1,    20,
-    21,    22,   114,    -1,    25,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    34,    -1,    36,    -1,    -1,    -1,    40,
-    41,    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,     3,    54,    55,     6,    -1,    -1,    59,    10,
-    11,    -1,    -1,    -1,    -1,   107,   108,    -1,    -1,    20,
-    21,    22,   114,    -1,    25,    -1,    -1,    -1,     3,    -1,
-    -1,     6,    -1,    34,    -1,    10,    11,    -1,    -1,    40,
-    41,    42,    43,    -1,    -1,    20,    -1,    22,    -1,    -1,
-    25,    -1,    -1,    54,    55,    -1,   107,   108,    59,    34,
-    -1,    -1,    -1,   114,    -1,    40,    41,    42,    43,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    54,
-    -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   107,   108,    -1,    -1,
-    -1,    -1,    -1,   114,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   107,   108,    -1,    -1,    -1,    -1,    -1,   114
+static const short yycheck[] =
+{
+      23,     4,     8,    21,   125,   185,   309,   100,    97,     2,
+       3,   215,   120,   200,   218,     8,   143,   144,    21,   127,
+     208,    24,   300,    16,    14,   279,   239,   240,   295,   137,
+      23,   408,    57,    71,   288,    16,     4,   217,   303,   304,
+     220,   178,    14,    10,     3,   363,   577,   140,   149,   150,
+      14,    62,    60,   235,     7,   432,     6,     7,     8,    10,
+       4,    64,   100,    66,   110,   596,   333,   525,   599,     6,
+       7,     8,   254,    37,    25,    68,   280,    80,    37,    51,
+     267,    34,   120,    76,    77,    35,   463,   618,    91,   127,
+     115,   295,   229,   566,   552,   232,    99,   105,   629,   137,
+      37,     7,   140,    23,   197,   143,   144,   110,   209,   210,
+     211,   212,   105,   620,    97,    35,   109,     7,   396,   592,
+     166,   111,   125,   390,   631,   118,    32,   254,   446,   447,
+     384,    10,    11,    25,    31,   138,   139,   391,   645,     3,
+     110,   242,    32,   356,   357,   410,    24,    33,   402,    46,
+     527,    10,    11,    39,    32,   244,    20,   125,    37,   197,
+     414,    25,     7,   156,   344,   183,   354,   170,   355,   162,
+     138,   139,   165,   550,   551,   156,   214,   223,    37,    43,
+     183,   125,   386,   387,   388,    20,   373,    10,    11,    32,
+      25,   237,   238,    36,   138,   139,   166,   402,   244,     7,
+      35,    20,    20,     7,    11,    12,    25,    25,     3,   414,
+     318,     3,   490,   216,    37,    22,   254,   471,    10,    26,
+     223,    28,    29,    30,    31,     3,   439,    34,    32,   356,
+     357,    38,    10,    25,   237,   238,    32,   230,   231,     6,
+     341,    37,   343,    23,    24,    37,     7,    25,    40,    41,
+      42,    43,    32,   223,    31,    35,   302,   560,   359,   360,
+     440,   465,    40,    41,    42,    43,     7,   237,   238,   272,
+     273,    32,   275,   366,   244,   647,    10,   531,    10,    11,
+     318,   374,    10,    10,   656,   657,    11,    12,    20,     7,
+      22,    32,    33,    25,    21,     7,   668,    25,   670,   671,
+     672,    26,    34,    28,    29,    30,    31,    35,    40,    41,
+      42,    43,   439,    38,    32,    10,   570,    24,   356,   357,
+      32,     7,    54,   112,     7,    32,    10,    59,   366,    36,
+     534,     3,    10,    11,     6,   539,   374,   438,     7,    11,
+      12,    25,    14,     7,     7,   383,    32,   112,    20,    32,
+      22,   397,   398,    25,    26,    27,    40,    41,    42,    43,
+       6,    97,    34,    32,    10,    11,     6,    39,    32,    32,
+      10,    11,   375,    34,   377,   107,   108,     3,    10,    25,
+       6,    34,   114,    55,   387,   388,     6,    10,    20,   593,
+      10,    11,    10,    25,    32,    32,   517,    10,    35,    37,
+      20,   439,    20,   607,   610,    25,   612,    25,   401,   613,
+     403,   404,   581,    27,     6,   408,    32,   586,    10,    10,
+      11,    37,    40,    41,    42,    43,   656,   657,    20,    32,
+      27,   524,   435,    25,    37,     3,    54,   443,   668,   432,
+     670,    59,    10,   375,   116,   377,   118,    37,   120,   121,
+     443,    32,   124,   125,   126,   127,    37,    25,    32,   131,
+     132,   479,    32,    37,    10,    11,   559,    37,   576,    37,
+     463,     3,    40,    41,    42,    43,   479,    32,    10,    10,
+      11,   671,   672,    76,    77,    32,   524,   143,   144,   107,
+     108,   529,    53,    25,   237,   238,   114,   392,   393,    76,
+      77,    27,     6,    33,     7,    37,    20,   545,    40,    41,
+      42,    43,    20,   112,   517,   116,   112,   118,    25,   120,
+     121,   559,    34,   124,   125,   126,   127,   530,    34,    27,
+     131,   132,   111,     8,   527,    36,   539,     3,   576,    32,
+       6,    37,    20,   546,    20,    11,    12,    32,    14,   555,
+      32,    37,    32,   591,    10,    10,    22,   550,   551,    10,
+      26,    10,   555,   566,    14,    10,    31,     7,    34,     7,
+      34,     7,    34,    39,    37,    36,     7,    37,    37,    27,
+      27,    27,   620,    36,    27,    37,    25,    31,    58,   592,
+      27,    10,    34,   631,    35,    27,    31,   620,    31,     7,
+       7,    27,    32,    31,   607,    34,   644,   645,   631,   647,
+      37,    32,    37,   651,    37,    37,    26,    51,   656,   657,
+      37,   644,   645,    32,    37,   648,    21,   106,   651,    35,
+     668,    49,   670,   671,   672,     3,    60,    37,     6,    10,
+       8,     7,    10,    11,    47,    61,     7,    46,    52,    34,
+      37,     7,    20,    21,    22,     7,    48,    25,    35,     7,
+      35,    10,    35,    10,    33,     7,    34,    25,     8,     3,
+       0,    10,    40,    41,    42,    43,     0,    45,    10,     1,
+     373,     4,    87,     4,   223,   105,    54,    55,   237,   218,
+     238,    59,   214,   461,   109,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    83,    84,    85,   591,    87,
+      88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
+      98,    99,   100,   101,   102,   125,   104,   125,   563,   107,
+     108,   125,   600,   623,   607,   539,   114,   366,   116,   273,
+     118,   119,   120,   121,   356,   244,   124,   125,   126,   127,
+     128,   306,   130,   131,   132,     3,   300,   295,     6,   166,
+       8,   529,    10,    11,   118,   244,    -1,    -1,    -1,    -1,
+      -1,    -1,    20,    21,    22,    -1,    -1,    25,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    34,    -1,    -1,    -1,
+      -1,    -1,    40,    41,    42,    43,    44,    -1,    -1,    -1,
+      -1,    -1,   226,    -1,    -1,    -1,    54,    55,    -1,    -1,
+      -1,    59,    -1,    -1,    -1,    -1,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    83,    84,    85,    -1,    87,
+      88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
+      98,    99,   100,   101,   102,    -1,   104,    -1,    -1,   107,
+     108,    -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,
+     118,   119,   120,   121,    -1,    -1,   124,   125,   126,   127,
+     128,    -1,   130,   131,   132,     3,    -1,    -1,     6,    -1,
+       8,    -1,    10,    11,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    20,    21,    22,    -1,    -1,    25,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    34,    -1,    -1,    -1,
+      -1,    -1,    40,    41,    42,    43,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    54,    55,    -1,    -1,
+      -1,    59,    -1,    -1,    -1,    -1,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    83,    84,    85,    -1,    87,
+      88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
+      98,    99,   100,   101,   102,    -1,   104,    -1,    -1,   107,
+     108,    -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,
+     118,   119,   120,   121,    -1,    -1,   124,   125,   126,   127,
+     128,    -1,   130,   131,   132,     3,    -1,    -1,     6,    -1,
+       8,    -1,    10,    11,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    20,    21,    22,    -1,    -1,    25,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    34,    -1,    -1,    -1,
+      -1,    -1,    40,    41,    42,    43,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    54,    55,    -1,    -1,
+      -1,    59,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    83,    84,    85,    -1,    87,
+      88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
+      98,    99,   100,   101,   102,    -1,   104,    -1,    -1,   107,
+     108,    -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,
+     118,   119,   120,   121,    -1,    -1,   124,   125,   126,   127,
+     128,    -1,   130,   131,   132,     3,    -1,    -1,     6,    -1,
+       8,    -1,    -1,    11,    12,    -1,    14,    -1,    -1,    -1,
+      -1,    -1,    20,    -1,    22,    -1,    -1,    -1,    26,    27,
+      -1,    -1,    -1,    -1,    -1,    -1,    34,    -1,    -1,    -1,
+      -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    83,    84,    85,    -1,    87,
+      88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
+      98,    99,   100,   101,   102,     8,   104,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,   116,    -1,
+     118,   119,   120,   121,    -1,    -1,   124,   125,   126,   127,
+     128,    -1,   130,   131,   132,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    48,    -1,    50,    -1,    -1,
+      -1,    -1,    -1,    56,    -1,    -1,    -1,    -1,    -1,    62,
+      -1,    -1,    -1,    -1,    67,    68,    69,    70,    71,    72,
+      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
+      83,    84,    85,    -1,    87,    88,    89,    90,    91,    92,
+      93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
+      -1,   104,    -1,    -1,    -1,    -1,   109,    -1,     8,    -1,
+     113,    -1,   115,   116,   117,   118,   119,   120,   121,   122,
+      20,   124,   125,   126,   127,   128,    -1,   130,   131,   132,
+     133,   134,   135,   136,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,
+      50,    -1,    -1,    -1,    -1,    -1,    56,    -1,    -1,    -1,
+      -1,    -1,    62,    -1,    -1,    -1,    -1,    67,    68,    69,
+      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
+      80,    81,    82,    83,    84,    85,    -1,    87,    88,    89,
+      90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
+     100,   101,   102,     8,   104,    -1,    -1,    -1,    -1,   109,
+      -1,    -1,    -1,   113,    -1,    20,   116,   117,   118,   119,
+     120,   121,   122,    -1,   124,   125,   126,   127,   128,    -1,
+     130,   131,   132,   133,   134,   135,   136,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,
+      -1,    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
+      -1,    -1,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      85,    -1,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,    99,   100,   101,   102,    -1,   104,
+      -1,    -1,    -1,    -1,    -1,     8,    -1,    -1,   113,    -1,
+      -1,   116,   117,   118,   119,   120,   121,    20,    -1,   124,
+     125,   126,   127,   128,    -1,   130,   131,   132,   133,   134,
+     135,   136,    35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    67,    68,    69,    70,    71,    72,
+      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
+      83,    84,    85,    -1,    87,    88,    89,    90,    91,    92,
+      93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
+       6,   104,     8,    -1,    10,    11,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   116,    20,   118,   119,   120,   121,    25,
+      -1,   124,   125,   126,   127,   128,    -1,   130,   131,   132,
+      -1,   134,   135,   136,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+      -1,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,   100,   101,   102,     6,   104,     8,
+      -1,    10,    11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     116,    20,   118,   119,   120,   121,    -1,    -1,   124,   125,
+     126,   127,   128,   129,   130,   131,   132,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
+      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
+      79,    80,    81,    82,    83,    84,    85,    -1,    87,    88,
+      89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
+      99,   100,   101,   102,     8,   104,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    20,   116,    -1,   118,
+     119,   120,   121,    -1,    -1,   124,   125,   126,   127,   128,
+     129,   130,   131,   132,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      64,    65,    -1,    67,    68,    69,    70,    71,    72,    73,
+      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
+      84,    85,    -1,    87,    88,    89,    90,    91,    92,    93,
+      94,    95,    96,    97,    98,    99,   100,   101,   102,    -1,
+     104,     8,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   116,    20,   118,   119,   120,   121,    -1,    -1,
+     124,   125,   126,   127,   128,    -1,   130,   131,   132,    -1,
+      37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+      77,    78,    79,    80,    81,    82,    83,    84,    85,    -1,
+      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
+      97,    98,    99,   100,   101,   102,    -1,   104,     8,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   116,
+      20,   118,   119,   120,   121,    -1,    -1,   124,   125,   126,
+     127,   128,   129,   130,   131,   132,    -1,    37,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    69,
+      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
+      80,    81,    82,    83,    84,    85,    -1,    87,    88,    89,
+      90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
+     100,   101,   102,    -1,   104,     8,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   116,    20,   118,   119,
+     120,   121,    -1,    -1,   124,   125,   126,   127,   128,   129,
+     130,   131,   132,    -1,    37,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    67,    68,    69,    70,    71,    72,
+      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
+      83,    84,    85,    -1,    87,    88,    89,    90,    91,    92,
+      93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
+      -1,   104,     8,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   116,    20,   118,   119,   120,   121,    -1,
+      -1,   124,   125,   126,   127,   128,   129,   130,   131,   132,
+      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+      -1,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,   100,   101,   102,     8,   104,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,
+     116,    -1,   118,   119,   120,   121,    -1,    -1,   124,   125,
+     126,   127,   128,   129,   130,   131,   132,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    69,    70,
+      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+      81,    82,    83,    84,    85,    -1,    87,    88,    89,    90,
+      91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
+     101,   102,     8,   104,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    20,   116,    -1,   118,   119,   120,
+     121,    -1,    -1,   124,   125,   126,   127,   128,   129,   130,
+     131,   132,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+      -1,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,   100,   101,   102,     8,   104,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,
+     116,    -1,   118,   119,   120,   121,    -1,   123,   124,   125,
+     126,   127,   128,    -1,   130,   131,   132,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    69,    70,
+      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+      81,    82,    83,    84,    85,    -1,    87,    88,    89,    90,
+      91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
+     101,   102,    -1,   104,    -1,    -1,    -1,    -1,    -1,     8,
+      -1,    -1,    -1,    -1,    -1,   116,    -1,   118,   119,   120,
+     121,    20,    -1,   124,   125,   126,   127,   128,   129,   130,
+     131,   132,    -1,    -1,    -1,    -1,    35,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
+      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
+      79,    80,    81,    82,    83,    84,    85,    -1,    87,    88,
+      89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
+      99,   100,   101,   102,    -1,   104,    -1,    -1,    -1,    -1,
+      -1,     8,    -1,    -1,    -1,    -1,    -1,   116,    -1,   118,
+     119,   120,   121,    20,    -1,   124,   125,   126,   127,   128,
+      -1,   130,   131,   132,    -1,    -1,    -1,    -1,    35,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+      77,    78,    79,    80,    81,    82,    83,    84,    85,    -1,
+      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
+      97,    98,    99,   100,   101,   102,     8,   104,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,   116,
+      -1,   118,   119,   120,   121,    -1,    -1,   124,   125,   126,
+     127,   128,    -1,   130,   131,   132,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    66,    67,    68,    69,    70,    71,
+      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
+      82,    83,    84,    85,    -1,    87,    88,    89,    90,    91,
+      92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
+     102,     8,   104,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    20,   116,    -1,   118,   119,   120,   121,
+      -1,    -1,   124,   125,   126,   127,   128,    -1,   130,   131,
+     132,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+      77,    78,    79,    80,    81,    82,    83,    84,    85,    -1,
+      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
+      97,    98,    99,   100,   101,   102,    -1,   104,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   116,
+      -1,   118,   119,   120,   121,    -1,    -1,   124,   125,   126,
+     127,   128,    -1,   130,   131,   132,     3,    -1,    -1,     6,
+      -1,    -1,    -1,    10,    11,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    20,    21,    22,    23,    -1,    25,    -1,
+      -1,    -1,     3,    -1,    -1,     6,    -1,    34,    35,    10,
+      11,    -1,    -1,    40,    41,    42,    43,    -1,    -1,    20,
+      21,    22,    -1,    -1,    25,    -1,    -1,    54,    55,    -1,
+      -1,    -1,    59,    34,    -1,    36,    -1,    -1,    -1,    40,
+      41,    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,     3,    54,    55,     6,    -1,    -1,    59,    10,
+      11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,
+      21,    22,    -1,    -1,    25,    -1,    -1,    -1,    -1,    -1,
+     107,   108,    -1,    34,    -1,    36,    -1,   114,    -1,    40,
+      41,    42,    43,     3,    -1,    -1,     6,    -1,    -1,    -1,
+      10,    11,    -1,    54,    55,    -1,   107,   108,    59,    -1,
+      20,    21,    22,   114,    -1,    25,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    34,    -1,    36,    -1,    -1,    -1,
+      40,    41,    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,     3,    54,    55,     6,    -1,    -1,    59,
+      10,    11,    -1,    -1,    -1,    -1,   107,   108,    -1,    -1,
+      20,    21,    22,   114,    -1,    25,    -1,    -1,    -1,     3,
+      -1,    -1,     6,    -1,    34,    -1,    10,    11,    -1,    -1,
+      40,    41,    42,    43,    -1,    -1,    20,    -1,    22,    -1,
+      -1,    25,    -1,    -1,    54,    55,    -1,   107,   108,    59,
+      34,    -1,    -1,    -1,   114,    -1,    40,    41,    42,    43,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      54,    -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,   108,    -1,
+      -1,    -1,    -1,    -1,   114,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   107,   108,    -1,    -1,    -1,    -1,    -1,
+     114
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 
-/* This file comes from bison-1.28.  */
-
 /* Skeleton output parser for bison,
-   Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
+   Copyright 1984, 1989, 1990, 2000, 2001 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -1616,62 +1646,64 @@ static const short yycheck[] = {    23,
    This special exception was added by the Free Software Foundation
    in version 1.24 of Bison.  */
 
-/* This is the parser code that is written into each bison parser
-  when the %semantic_parser declaration is not specified in the grammar.
-  It was written by Richard Stallman by simplifying the hairy parser
-  used when %semantic_parser is specified.  */
+/* This is the parser code that is written into each bison parser when
+   the %semantic_parser declaration is not specified in the grammar.
+   It was written by Richard Stallman by simplifying the hairy parser
+   used when %semantic_parser is specified.  */
 
 #ifndef YYSTACK_USE_ALLOCA
-#ifdef alloca
-#define YYSTACK_USE_ALLOCA
-#else /* alloca not defined */
-#ifdef __GNUC__
-#define YYSTACK_USE_ALLOCA
-#define alloca __builtin_alloca
-#else /* not GNU C.  */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
-#define YYSTACK_USE_ALLOCA
-#include <alloca.h>
-#else /* not sparc */
-/* We think this test detects Watcom and Microsoft C.  */
-/* This used to test MSDOS, but that is a bad idea
-   since that symbol is in the user namespace.  */
-#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
-#if 0 /* No need for malloc.h, which pollutes the namespace;
-        instead, just don't use alloca.  */
-#include <malloc.h>
-#endif
-#else /* not MSDOS, or __TURBOC__ */
-#if defined(_AIX)
-/* I don't know what this was needed for, but it pollutes the namespace.
-   So I turned it off.   rms, 2 May 1997.  */
-/* #include <malloc.h>  */
+# ifdef alloca
+#  define YYSTACK_USE_ALLOCA 1
+# else /* alloca not defined */
+#  ifdef __GNUC__
+#   define YYSTACK_USE_ALLOCA 1
+#   define alloca __builtin_alloca
+#  else /* not GNU C.  */
+#   if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
+#    define YYSTACK_USE_ALLOCA 1
+#    include <alloca.h>
+#   else /* not sparc */
+     /* We think this test detects Watcom and Microsoft C.  */
+     /* This used to test MSDOS, but that is a bad idea since that
+       symbol is in the user namespace.  */
+#    if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
+#     if 0
+       /* No need for malloc.h, which pollutes the namespace; instead,
+         just don't use alloca.  */
+#      include <malloc.h>
+#     endif
+#    else /* not MSDOS, or __TURBOC__ */
+#     if defined(_AIX)
+       /* I don't know what this was needed for, but it pollutes the
+         namespace.  So I turned it off.  rms, 2 May 1997.  */
+       /* #include <malloc.h>  */
  #pragma alloca
-#define YYSTACK_USE_ALLOCA
-#else /* not MSDOS, or __TURBOC__, or _AIX */
-#if 0
-#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
-                and on HPUX 10.  Eventually we can turn this on.  */
-#define YYSTACK_USE_ALLOCA
-#define alloca __builtin_alloca
-#endif /* __hpux */
-#endif
-#endif /* not _AIX */
-#endif /* not MSDOS, or __TURBOC__ */
-#endif /* not sparc */
-#endif /* not GNU C */
-#endif /* alloca not defined */
+#      define YYSTACK_USE_ALLOCA 1
+#     else /* not MSDOS, or __TURBOC__, or _AIX */
+#      if 0
+       /* haible@ilog.fr says this works for HPUX 9.05 and up, and on
+          HPUX 10.  Eventually we can turn this on.  */
+#       ifdef __hpux
+#        define YYSTACK_USE_ALLOCA 1
+#        define alloca __builtin_alloca
+#      endif /* __hpux */
+#      endif
+#     endif /* not _AIX */
+#    endif /* not MSDOS, or __TURBOC__ */
+#   endif /* not sparc */
+#  endif /* not GNU C */
+# endif /* alloca not defined */
 #endif /* YYSTACK_USE_ALLOCA not defined */
 
-#ifdef YYSTACK_USE_ALLOCA
-#define YYSTACK_ALLOC alloca
-#else
-#define YYSTACK_ALLOC malloc
+#ifndef YYSTACK_USE_ALLOCA
+# define YYSTACK_USE_ALLOCA 0
 #endif
 
-/* Note: there must be only one dollar sign in this file.
-   It is replaced by the list of actions, each action
-   as one case of the switch.  */
+#if YYSTACK_USE_ALLOCA
+# define YYSTACK_ALLOC alloca
+#else
+# define YYSTACK_ALLOC malloc
+#endif
 
 #define yyerrok                (yyerrstatus = 0)
 #define yyclearin      (yychar = YYEMPTY)
@@ -1680,84 +1712,96 @@ static const short yycheck[] = {    23,
 #define YYACCEPT       goto yyacceptlab
 #define YYABORT        goto yyabortlab
 #define YYERROR                goto yyerrlab1
-/* Like YYERROR except do call yyerror.
-   This remains here temporarily to ease the
-   transition to the new meaning of YYERROR, for GCC.
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
    Once GCC version 2 has supplanted version 1, this can go.  */
 #define YYFAIL         goto yyerrlab
 #define YYRECOVERING()  (!!yyerrstatus)
-#define YYBACKUP(token, value) \
+#define YYBACKUP(Token, Value)                                 \
 do                                                             \
   if (yychar == YYEMPTY && yylen == 1)                         \
-    { yychar = (token), yylval = (value);                      \
+    {                                                          \
+      yychar = (Token);                                                \
+      yylval = (Value);                                                \
       yychar1 = YYTRANSLATE (yychar);                          \
       YYPOPSTACK;                                              \
       goto yybackup;                                           \
     }                                                          \
   else                                                         \
-    { yyerror ("syntax error: cannot back up"); YYERROR; }     \
+    {                                                          \
+      yyerror ("syntax error: cannot back up");                        \
+      YYERROR;                                                 \
+    }                                                          \
 while (0)
 
 #define YYTERROR       1
 #define YYERRCODE      256
 
-#ifndef YYPURE
-#define YYLEX          yylex()
-#endif
-
-#ifdef YYPURE
-#ifdef YYLSP_NEEDED
-#ifdef YYLEX_PARAM
-#define YYLEX          yylex(&yylval, &yylloc, YYLEX_PARAM)
-#else
-#define YYLEX          yylex(&yylval, &yylloc)
-#endif
-#else /* not YYLSP_NEEDED */
-#ifdef YYLEX_PARAM
-#define YYLEX          yylex(&yylval, YYLEX_PARAM)
-#else
-#define YYLEX          yylex(&yylval)
-#endif
-#endif /* not YYLSP_NEEDED */
-#endif
 
-/* If nonreentrant, generate the variables here */
+/* YYLLOC_DEFAULT -- Compute the default location (before the actions
+   are run).
 
-#ifndef YYPURE
+   When YYLLOC_DEFAULT is run, CURRENT is set the location of the
+   first token.  By default, to implement support for ranges, extend
+   its range to the last symbol.  */
 
-int    yychar;                 /*  the lookahead symbol                */
-YYSTYPE        yylval;                 /*  the semantic value of the           */
-                               /*  lookahead symbol                    */
-
-#ifdef YYLSP_NEEDED
-YYLTYPE yylloc;                        /*  location data for the lookahead     */
-                               /*  symbol                              */
-#endif
-
-int yynerrs;                   /*  number of parse errors so far       */
-#endif  /* not YYPURE */
-
-#if YYDEBUG != 0
-int yydebug;                   /*  nonzero means print parse trace     */
-/* Since this is uninitialized, it does not stop multiple parsers
-   from coexisting.  */
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)               \
+   Current.last_line   = Rhs[N].last_line;     \
+   Current.last_column = Rhs[N].last_column;
 #endif
 
-/*  YYINITDEPTH indicates the initial size of the parser's stacks      */
 
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#if YYPURE
+# if YYLSP_NEEDED
+#  ifdef YYLEX_PARAM
+#   define YYLEX               yylex (&yylval, &yylloc, YYLEX_PARAM)
+#  else
+#   define YYLEX               yylex (&yylval, &yylloc)
+#  endif
+# else /* !YYLSP_NEEDED */
+#  ifdef YYLEX_PARAM
+#   define YYLEX               yylex (&yylval, YYLEX_PARAM)
+#  else
+#   define YYLEX               yylex (&yylval)
+#  endif
+# endif /* !YYLSP_NEEDED */
+#else /* !YYPURE */
+# define YYLEX                 yylex ()
+#endif /* !YYPURE */
+
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+# define YYDPRINTF(Args)                       \
+do {                                           \
+  if (yydebug)                                 \
+    fprintf Args;                              \
+} while (0)
+/* Nonzero means print parse trace. [The following comment makes no
+   sense to me.  Could someone clarify it?  --akim] Since this is
+   uninitialized, it does not stop multiple parsers from coexisting.
+   */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+#endif /* !YYDEBUG */
+
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
 #ifndef        YYINITDEPTH
-#define YYINITDEPTH 200
+# define YYINITDEPTH 200
 #endif
 
-/*  YYMAXDEPTH is the maximum size the stacks can grow to
-    (effective only if the built-in stack extension method is used).  */
-
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).  */
 #if YYMAXDEPTH == 0
-#undef YYMAXDEPTH
+# undef YYMAXDEPTH
 #endif
 
 #ifndef YYMAXDEPTH
-#define YYMAXDEPTH 10000
+# define YYMAXDEPTH 10000
 #endif
 \f
 /* Define __yy_memcpy.  Note that the size argument
@@ -1766,42 +1810,29 @@ int yydebug;                    /*  nonzero means print parse trace     */
    of type size_t, but it can handle unsigned int.  */
 
 #if __GNUC__ > 1               /* GNU C and GNU C++ define this.  */
-#define __yy_memcpy(TO,FROM,COUNT)     __builtin_memcpy(TO,FROM,COUNT)
+# define __yy_memcpy(To, From, Count)  __builtin_memcpy (To, From, Count)
 #else                          /* not GNU C or C++ */
-#ifndef __cplusplus
 
 /* This is the most reliable way to avoid incompatibilities
    in available built-in functions on various systems.  */
 static void
+# ifndef __cplusplus
 __yy_memcpy (to, from, count)
      char *to;
-     char *from;
+     const char *from;
      unsigned int count;
+# else /* __cplusplus */
+__yy_memcpy (char *to, const char *from, unsigned int count)
+# endif
 {
-  register char *f = from;
-  register char *t = to;
-  register int i = count;
-
-  while (i-- > 0)
-    *t++ = *f++;
-}
-
-#else /* __cplusplus */
-
-/* This is the most reliable way to avoid incompatibilities
-   in available built-in functions on various systems.  */
-static void
-__yy_memcpy (char *to, char *from, unsigned int count)
-{
+  register const char *f = from;
   register char *t = to;
-  register char *f = from;
   register int i = count;
 
   while (i-- > 0)
     *t++ = *f++;
 }
 
-#endif
 #endif
 \f
 
@@ -1813,76 +1844,121 @@ __yy_memcpy (char *to, char *from, unsigned int count)
    to the proper pointer type.  */
 
 #ifdef YYPARSE_PARAM
-#ifdef __cplusplus
-#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL
-#else /* not __cplusplus */
-#define YYPARSE_PARAM_ARG YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
-#endif /* not __cplusplus */
-#else /* not YYPARSE_PARAM */
-#define YYPARSE_PARAM_ARG
-#define YYPARSE_PARAM_DECL
-#endif /* not YYPARSE_PARAM */
+# ifdef __cplusplus
+#  define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
+#  define YYPARSE_PARAM_DECL
+# else /* !__cplusplus */
+#  define YYPARSE_PARAM_ARG YYPARSE_PARAM
+#  define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
+# endif /* !__cplusplus */
+#else /* !YYPARSE_PARAM */
+# define YYPARSE_PARAM_ARG
+# define YYPARSE_PARAM_DECL
+#endif /* !YYPARSE_PARAM */
 
 /* Prevent warning if -Wstrict-prototypes.  */
 #ifdef __GNUC__
-#ifdef YYPARSE_PARAM
+# ifdef YYPARSE_PARAM
 int yyparse (void *);
-#else
+# else
 int yyparse (void);
+# endif
 #endif
+
+/* YY_DECL_VARIABLES -- depending whether we use a pure parser,
+   variables are global, or local to YYPARSE.  */
+
+#define _YY_DECL_VARIABLES                             \
+/* The lookahead symbol.  */                           \
+int yychar;                                            \
+                                                       \
+/* The semantic value of the lookahead symbol. */      \
+YYSTYPE yylval;                                                \
+                                                       \
+/* Number of parse errors so far.  */                  \
+int yynerrs;
+
+#if YYLSP_NEEDED
+# define YY_DECL_VARIABLES                     \
+_YY_DECL_VARIABLES                             \
+                                               \
+/* Location data for the lookahead symbol.  */ \
+YYLTYPE yylloc;
+#else
+# define YY_DECL_VARIABLES                     \
+_YY_DECL_VARIABLES
 #endif
 
+
+/* If nonreentrant, generate the variables here. */
+
+#if !YYPURE
+YY_DECL_VARIABLES
+#endif  /* !YYPURE */
+
 int
-yyparse(YYPARSE_PARAM_ARG)
+yyparse (YYPARSE_PARAM_ARG)
      YYPARSE_PARAM_DECL
 {
+  /* If reentrant, generate the variables here. */
+#if YYPURE
+  YY_DECL_VARIABLES
+#endif  /* !YYPURE */
+
   register int yystate;
   register int yyn;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Lookahead token as an internal (translated) token number.  */
+  int yychar1 = 0;
+
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yysv': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack. */
+  short        yyssa[YYINITDEPTH];
+  short *yyss = yyssa;
   register short *yyssp;
-  register YYSTYPE *yyvsp;
-  int yyerrstatus;     /*  number of tokens to shift before error messages enabled */
-  int yychar1 = 0;             /*  lookahead token as an internal (translated) token number */
-
-  short        yyssa[YYINITDEPTH];     /*  the state stack                     */
-  YYSTYPE yyvsa[YYINITDEPTH];  /*  the semantic value stack            */
 
-  short *yyss = yyssa;         /*  refer to the stacks thru separate pointers */
-  YYSTYPE *yyvs = yyvsa;       /*  to allow yyoverflow to reallocate them elsewhere */
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  register YYSTYPE *yyvsp;
 
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylsa[YYINITDEPTH];  /*  the location stack                  */
+#if YYLSP_NEEDED
+  /* The location stack.  */
+  YYLTYPE yylsa[YYINITDEPTH];
   YYLTYPE *yyls = yylsa;
   YYLTYPE *yylsp;
+#endif
 
-#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
+#if YYLSP_NEEDED
+# define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
 #else
-#define YYPOPSTACK   (yyvsp--, yyssp--)
+# define YYPOPSTACK   (yyvsp--, yyssp--)
 #endif
 
   int yystacksize = YYINITDEPTH;
   int yyfree_stacks = 0;
 
-#ifdef YYPURE
-  int yychar;
-  YYSTYPE yylval;
-  int yynerrs;
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylloc;
-#endif
-#endif
 
-  YYSTYPE yyval;               /*  the variable used to return         */
-                               /*  semantic values from the action     */
-                               /*  routines                            */
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+# if YYLSP_NEEDED
+  YYLTYPE yyloc;
+# endif
 
+  /* When reducing, the number of symbols on the RHS of the reduced
+     rule. */
   int yylen;
 
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Starting parse\n");
-#endif
+  YYDPRINTF ((stderr, "Starting parse\n"));
 
   yystate = 0;
   yyerrstatus = 0;
@@ -1894,26 +1970,33 @@ yyparse(YYPARSE_PARAM_ARG)
      so that they stay on the same level as the state stack.
      The wasted elements are never initialized.  */
 
-  yyssp = yyss - 1;
+  yyssp = yyss;
   yyvsp = yyvs;
-#ifdef YYLSP_NEEDED
+#if YYLSP_NEEDED
   yylsp = yyls;
 #endif
+  goto yysetstate;
 
-/* Push a new state, which is found in  yystate  .  */
-/* In all cases, when you get here, the value and location stacks
-   have just been pushed. so pushing a state here evens the stacks.  */
-yynewstate:
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed. so pushing a state here evens the stacks.
+     */
+  yyssp++;
 
-  *++yyssp = yystate;
+ yysetstate:
+  *yyssp = yystate;
 
   if (yyssp >= yyss + yystacksize - 1)
     {
-      /* Give user a chance to reallocate the stack */
-      /* Use copies of these so that the &'s don't force the real ones into memory. */
+      /* Give user a chance to reallocate the stack. Use copies of
+        these so that the &'s don't force the real ones into memory.
+        */
       YYSTYPE *yyvs1 = yyvs;
       short *yyss1 = yyss;
-#ifdef YYLSP_NEEDED
+#if YYLSP_NEEDED
       YYLTYPE *yyls1 = yyls;
 #endif
 
@@ -1921,83 +2004,82 @@ yynewstate:
       int size = yyssp - yyss + 1;
 
 #ifdef yyoverflow
-      /* Each stack pointer address is followed by the size of
-        the data in use in that stack, in bytes.  */
-#ifdef YYLSP_NEEDED
+      /* Each stack pointer address is followed by the size of the
+        data in use in that stack, in bytes.  */
+# if YYLSP_NEEDED
       /* This used to be a conditional around just the two extra args,
         but that might be undefined if yyoverflow is a macro.  */
-      yyoverflow("parser stack overflow",
-                &yyss1, size * sizeof (*yyssp),
-                &yyvs1, size * sizeof (*yyvsp),
-                &yyls1, size * sizeof (*yylsp),
-                &yystacksize);
-#else
-      yyoverflow("parser stack overflow",
-                &yyss1, size * sizeof (*yyssp),
-                &yyvs1, size * sizeof (*yyvsp),
-                &yystacksize);
-#endif
+      yyoverflow ("parser stack overflow",
+                 &yyss1, size * sizeof (*yyssp),
+                 &yyvs1, size * sizeof (*yyvsp),
+                 &yyls1, size * sizeof (*yylsp),
+                 &yystacksize);
+# else
+      yyoverflow ("parser stack overflow",
+                 &yyss1, size * sizeof (*yyssp),
+                 &yyvs1, size * sizeof (*yyvsp),
+                 &yystacksize);
+# endif
 
       yyss = yyss1; yyvs = yyvs1;
-#ifdef YYLSP_NEEDED
+# if YYLSP_NEEDED
       yyls = yyls1;
-#endif
+# endif
 #else /* no yyoverflow */
       /* Extend the stack our own way.  */
       if (yystacksize >= YYMAXDEPTH)
        {
-         yyerror("parser stack overflow");
+         yyerror ("parser stack overflow");
          if (yyfree_stacks)
            {
              free (yyss);
              free (yyvs);
-#ifdef YYLSP_NEEDED
+# if YYLSP_NEEDED
              free (yyls);
-#endif
+# endif
            }
          return 2;
        }
       yystacksize *= 2;
       if (yystacksize > YYMAXDEPTH)
        yystacksize = YYMAXDEPTH;
-#ifndef YYSTACK_USE_ALLOCA
+# if !YYSTACK_USE_ALLOCA
       yyfree_stacks = 1;
-#endif
+# endif
       yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
       __yy_memcpy ((char *)yyss, (char *)yyss1,
                   size * (unsigned int) sizeof (*yyssp));
       yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
       __yy_memcpy ((char *)yyvs, (char *)yyvs1,
                   size * (unsigned int) sizeof (*yyvsp));
-#ifdef YYLSP_NEEDED
+# if YYLSP_NEEDED
       yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
       __yy_memcpy ((char *)yyls, (char *)yyls1,
                   size * (unsigned int) sizeof (*yylsp));
-#endif
+# endif
 #endif /* no yyoverflow */
 
       yyssp = yyss + size - 1;
       yyvsp = yyvs + size - 1;
-#ifdef YYLSP_NEEDED
+#if YYLSP_NEEDED
       yylsp = yyls + size - 1;
 #endif
 
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Stack size increased to %d\n", yystacksize);
-#endif
+      YYDPRINTF ((stderr, "Stack size increased to %d\n", yystacksize));
 
       if (yyssp >= yyss + yystacksize - 1)
        YYABORT;
     }
 
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Entering state %d\n", yystate);
-#endif
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
 
   goto yybackup;
- yybackup:
+
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
 
 /* Do appropriate processing given the current state.  */
 /* Read a lookahead token if we need one and don't already have one.  */
@@ -2016,10 +2098,7 @@ yynewstate:
 
   if (yychar == YYEMPTY)
     {
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Reading a token: ");
-#endif
+      YYDPRINTF ((stderr, "Reading a token: "));
       yychar = YYLEX;
     }
 
@@ -2030,24 +2109,23 @@ yynewstate:
       yychar1 = 0;
       yychar = YYEOF;          /* Don't call YYLEX any more */
 
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Now at end of input.\n");
-#endif
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
     }
   else
     {
-      yychar1 = YYTRANSLATE(yychar);
+      yychar1 = YYTRANSLATE (yychar);
 
-#if YYDEBUG != 0
+#if YYDEBUG
+     /* We have to keep this `#if YYDEBUG', since we use variables
+       which are defined only if `YYDEBUG' is set.  */
       if (yydebug)
        {
          fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
-         /* Give the individual parser a way to print the precise meaning
-            of a token, for further debugging info.  */
-#ifdef YYPRINT
+         /* Give the individual parser a way to print the precise
+            meaning of a token, for further debugging info.  */
+# ifdef YYPRINT
          YYPRINT (stderr, yychar, yylval);
-#endif
+# endif
          fprintf (stderr, ")\n");
        }
 #endif
@@ -2080,41 +2158,63 @@ yynewstate:
     YYACCEPT;
 
   /* Shift the lookahead token.  */
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
-#endif
+  YYDPRINTF ((stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]));
 
   /* Discard the token being shifted unless it is eof.  */
   if (yychar != YYEOF)
     yychar = YYEMPTY;
 
   *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
+#if YYLSP_NEEDED
   *++yylsp = yylloc;
 #endif
 
-  /* count tokens shifted since error; after three, turn off error status.  */
-  if (yyerrstatus) yyerrstatus--;
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
 
   yystate = yyn;
   goto yynewstate;
 
-/* Do the default action for the current state.  */
-yydefault:
 
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
   yyn = yydefact[yystate];
   if (yyn == 0)
     goto yyerrlab;
+  goto yyreduce;
+
 
-/* Do a reduction.  yyn is the number of a rule to reduce with.  */
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
 yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
   yylen = yyr2[yyn];
-  if (yylen > 0)
-    yyval = yyvsp[1-yylen]; /* implement default value of the action */
 
-#if YYDEBUG != 0
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
+
+     Otherwise, the following line sets YYVAL to the semantic value of
+     the lookahead token.  This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
+
+#if YYLSP_NEEDED
+  /* Similarly for the default location.  Let the user run additional
+     commands if for instance locations are ranges.  */
+  yyloc = yylsp[1-yylen];
+  YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
+#endif
+
+#if YYDEBUG
+  /* We have to keep this `#if YYDEBUG', since we use variables which
+     are defined only if `YYDEBUG' is set.  */
   if (yydebug)
     {
       int i;
@@ -2129,7 +2229,6 @@ yyreduce:
     }
 #endif
 
-
   switch (yyn) {
 
 case 1:
@@ -2836,13 +2935,13 @@ case 236:
     break;}
 case 238:
 { llassert (lclTypeSpecNode_isDefined (yyvsp[-1].lcltypespec));
-     yyvsp[-1].lcltypespec->pointers = yyvsp[0].pointers; yyval.lcltypespec = yyvsp[-1].lcltypespec; ;
+     yyvsp[-1].lcltypespec->pointers = yyvsp[0].count; yyval.lcltypespec = yyvsp[-1].lcltypespec; ;
     break;}
 case 239:
-{ yyval.pointers = pointers_createLt (yyvsp[0].ltok); ;
+{ yyval.count = 1; ;
     break;}
 case 240:
-{ yyval.pointers = pointers_extend (yyvsp[-1].pointers, pointers_createLt (yyvsp[0].ltok)); ;
+{ yyval.count = yyvsp[-1].count + 1; ;
     break;}
 case 241:
 { (void) checkAndEnterTag (TAG_FWDSTRUCT, ltoken_copy (yyvsp[0].ltok)); ;
@@ -3279,16 +3378,16 @@ case 404:
 { yyval.var = makeVarNode (yyvsp[-3].ltok, TRUE, yyvsp[0].lcltypespec); ;
     break;}
 }
-   /* the action file gets copied in in place of this dollarsign */
+
 
 \f
   yyvsp -= yylen;
   yyssp -= yylen;
-#ifdef YYLSP_NEEDED
+#if YYLSP_NEEDED
   yylsp -= yylen;
 #endif
 
-#if YYDEBUG != 0
+#if YYDEBUG
   if (yydebug)
     {
       short *ssp1 = yyss - 1;
@@ -3300,28 +3399,13 @@ case 404:
 #endif
 
   *++yyvsp = yyval;
-
-#ifdef YYLSP_NEEDED
-  yylsp++;
-  if (yylen == 0)
-    {
-      yylsp->first_line = yylloc.first_line;
-      yylsp->first_column = yylloc.first_column;
-      yylsp->last_line = (yylsp-1)->last_line;
-      yylsp->last_column = (yylsp-1)->last_column;
-      yylsp->text = 0;
-    }
-  else
-    {
-      yylsp->last_line = (yylsp+yylen-1)->last_line;
-      yylsp->last_column = (yylsp+yylen-1)->last_column;
-    }
+#if YYLSP_NEEDED
+  *++yylsp = yyloc;
 #endif
 
-  /* Now "shift" the result of the reduction.
-     Determine what state that goes to,
-     based on the state we popped back to
-     and the rule number reduced by.  */
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
 
   yyn = yyr1[yyn];
 
@@ -3333,10 +3417,13 @@ case 404:
 
   goto yynewstate;
 
-yyerrlab:   /* here on detecting error */
 
-  if (! yyerrstatus)
-    /* If not already recovering from an error, report this error.  */
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
     {
       ++yynerrs;
 
@@ -3352,83 +3439,99 @@ yyerrlab:   /* here on detecting error */
          count = 0;
          /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
          for (x = (yyn < 0 ? -yyn : 0);
-              x < (sizeof(yytname) / sizeof(char *)); x++)
+              x < (int) (sizeof (yytname) / sizeof (char *)); x++)
            if (yycheck[x + yyn] == x)
-             size += strlen(yytname[x]) + 15, count++;
-         msg = (char *) malloc(size + 15);
+             size += strlen (yytname[x]) + 15, count++;
+         size += strlen ("parse error, unexpected `") + 1;
+         size += strlen (yytname[YYTRANSLATE (yychar)]);
+         msg = (char *) malloc (size);
          if (msg != 0)
            {
-             strcpy(msg, "parse error");
+             strcpy (msg, "parse error, unexpected `");
+             strcat (msg, yytname[YYTRANSLATE (yychar)]);
+             strcat (msg, "'");
 
              if (count < 5)
                {
                  count = 0;
                  for (x = (yyn < 0 ? -yyn : 0);
-                      x < (sizeof(yytname) / sizeof(char *)); x++)
+                      x < (int) (sizeof (yytname) / sizeof (char *)); x++)
                    if (yycheck[x + yyn] == x)
                      {
-                       strcat(msg, count == 0 ? ", expecting `" : " or `");
-                       strcat(msg, yytname[x]);
-                       strcat(msg, "'");
+                       strcat (msg, count == 0 ? ", expecting `" : " or `");
+                       strcat (msg, yytname[x]);
+                       strcat (msg, "'");
                        count++;
                      }
                }
-             yyerror(msg);
-             free(msg);
+             yyerror (msg);
+             free (msg);
            }
          else
            yyerror ("parse error; also virtual memory exceeded");
        }
       else
 #endif /* YYERROR_VERBOSE */
-       yyerror("parse error");
+       yyerror ("parse error");
     }
-
   goto yyerrlab1;
-yyerrlab1:   /* here on error raised explicitly by an action */
 
+
+/*--------------------------------------------------.
+| yyerrlab1 -- error raised explicitly by an action |
+`--------------------------------------------------*/
+yyerrlab1:
   if (yyerrstatus == 3)
     {
-      /* if just tried and failed to reuse lookahead token after an error, discard it.  */
+      /* If just tried and failed to reuse lookahead token after an
+        error, discard it.  */
 
       /* return failure if at end of input */
       if (yychar == YYEOF)
        YYABORT;
-
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
-#endif
-
+      YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
+                 yychar, yytname[yychar1]));
       yychar = YYEMPTY;
     }
 
-  /* Else will try to reuse lookahead token
-     after shifting the error token.  */
+  /* Else will try to reuse lookahead token after shifting the error
+     token.  */
 
   yyerrstatus = 3;             /* Each real token shifted decrements this */
 
   goto yyerrhandle;
 
-yyerrdefault:  /* current state does not do anything special for the error token. */
 
+/*-------------------------------------------------------------------.
+| yyerrdefault -- current state does not do anything special for the |
+| error token.                                                       |
+`-------------------------------------------------------------------*/
+yyerrdefault:
 #if 0
   /* This is wrong; only states that explicitly want error tokens
      should shift them.  */
-  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
-  if (yyn) goto yydefault;
+
+  /* If its default is to accept any token, ok.  Otherwise pop it.  */
+  yyn = yydefact[yystate];
+  if (yyn)
+    goto yydefault;
 #endif
 
-yyerrpop:   /* pop the current state because it cannot handle the error token */
 
-  if (yyssp == yyss) YYABORT;
+/*---------------------------------------------------------------.
+| yyerrpop -- pop the current state because it cannot handle the |
+| error token                                                    |
+`---------------------------------------------------------------*/
+yyerrpop:
+  if (yyssp == yyss)
+    YYABORT;
   yyvsp--;
   yystate = *--yyssp;
-#ifdef YYLSP_NEEDED
+#if YYLSP_NEEDED
   yylsp--;
 #endif
 
-#if YYDEBUG != 0
+#if YYDEBUG
   if (yydebug)
     {
       short *ssp1 = yyss - 1;
@@ -3439,8 +3542,10 @@ yyerrpop:   /* pop the current state because it cannot handle the error token */
     }
 #endif
 
+/*--------------.
+| yyerrhandle.  |
+`--------------*/
 yyerrhandle:
-
   yyn = yypact[yystate];
   if (yyn == YYFLAG)
     goto yyerrdefault;
@@ -3463,38 +3568,41 @@ yyerrhandle:
   if (yyn == YYFINAL)
     YYACCEPT;
 
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting error token, ");
-#endif
+  YYDPRINTF ((stderr, "Shifting error token, "));
 
   *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
+#if YYLSP_NEEDED
   *++yylsp = yylloc;
 #endif
 
   yystate = yyn;
   goto yynewstate;
 
- yyacceptlab:
-  /* YYACCEPT comes here.  */
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
   if (yyfree_stacks)
     {
       free (yyss);
       free (yyvs);
-#ifdef YYLSP_NEEDED
+#if YYLSP_NEEDED
       free (yyls);
 #endif
     }
   return 0;
 
- yyabortlab:
-  /* YYABORT comes here.  */
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
   if (yyfree_stacks)
     {
       free (yyss);
       free (yyvs);
-#ifdef YYLSP_NEEDED
+#if YYLSP_NEEDED
       free (yyls);
 #endif
     }
index 09ce6ba25f08c77d14dc209fde54e3fd9460f75e..24039b079722d51f493c1fa30829ac2c36ae6d73 100644 (file)
@@ -105,7 +105,6 @@ bool g_inTypeDef = FALSE;
   /*@only@*/ abstBodyNode abstbody;
   /*@only@*/ abstractNode abstract;
   /*@only@*/ exposedNode exposed;
-  /*@only@*/ pointers pointers;
   /*    taggedUnionNode taggedunion; */
   /*@only@*/ globalList globals;
   /*@only@*/ constDeclarationNode constdeclaration;
@@ -319,8 +318,7 @@ bool g_inTypeDef = FALSE;
 %type <opform> opForm
 %type <signature> signature
 %type <typname> typeName
-%type <count> middle placeList 
-%type <pointers> pointers 
+%type <count> middle placeList pointers 
 %type <abstDecl> optAbstDeclarator 
 %type <lcltypespec> lclTypeSpec lclType sortSpec
 %type <ltokenList> enumeratorList postfixOps
@@ -887,8 +885,8 @@ lclType
      $1->pointers = $2; $$ = $1; }
 
 pointers   
- : LLT_MULOP          { $$ = pointers_createLt ($1); }
- | pointers LLT_MULOP { $$ = pointers_extend ($1, pointers_createLt ($2)); }
+ : LLT_MULOP          { $$ = 1; }
+ | pointers LLT_MULOP { $$ = $1 + 1; } 
 
 structOrUnionSpec  
  : LLT_STRUCT optTagId 
index 5d4c546404ccdb12c410af7ecd8d38d97642a385..a3793be4541881eb8aceba01f32b605ce4c3b6cc 100644 (file)
@@ -51,7 +51,6 @@
 # include "splintMacros.nf"
 # include "llbasic.h"
 # include "osd.h"
-# include "help.h"
 
 # ifndef NOLCL
 # include "gram.h"
@@ -71,6 +70,7 @@
 # endif
 
 # include "Headers/version.h" /* Visual C++ finds the wrong version.h */
+# include "fileIdList.h"
 # include "lcllib.h"
 # include "cgrammar.h"
 # include "llmain.h"
 
 
 extern /*@external@*/ int yydebug;
-static void cleanupFiles (void);
-/*
-** evans 2002-07-03: renamed from interrupt to avoid conflict with WATCOM compiler keyword
-**    (Suggested by Adam Clarke)
-*/
 
-static void llinterrupt (int p_i);
+static void printMail (void);
+static void printMaintainer (void);
+static void printReferences (void);
+static void printFlags (void);
+static void printAnnotations (void);
+static void printParseErrors (void);
+static void printComments (void);
+static void describePrefixCodes (void);
+static void cleanupFiles (void);
+static void showHelp (void);
+static void interrupt (int p_i);
+
+static bool readOptionsFile (cstring p_fname,
+                            cstringSList *p_passThroughArgs,
+                            bool p_report) 
+   /*@modifies fileSystem, internalState, *p_passThroughArgs@*/ ;
+   
+static void loadrc (FILE *p_rcfile, cstringSList *p_passThroughArgs)
+   /*@modifies *p_passThroughArgs, p_rcfile@*/
+   /*@ensures closed p_rcfile@*/ ;
 
 static void describeVars (void);
 static bool specialFlagsHelp (char *p_next);
@@ -95,6 +109,8 @@ static char *specFullName (char *p_specfile, /*@out@*/ char **p_inpath)
 static bool anylcl = FALSE;
 static clock_t inittime;
 
+static /*@only@*/ /*@null@*/ inputStream initFile = inputStream_undefined;
+
 static fileIdList preprocessFiles (fileIdList, bool)
   /*@modifies fileSystem@*/ ;
 
@@ -135,6 +151,163 @@ void lslCleanup (void)
   sort_destroyMod (); 
 }
 
+static
+  void lslInit (void)
+  /*@globals undef g_symtab; @*/
+  /*@modifies g_symtab, internalState, fileSystem; @*/
+{
+  /*
+  ** Open init file provided by user, or use the default LCL init file 
+  */
+  
+  cstring larchpath = context_getLarchPath ();
+  inputStream LSLinitFile = inputStream_undefined;
+
+  setCodePoint ();
+
+  if (inputStream_isUndefined (initFile))
+    {
+      initFile = inputStream_create (cstring_makeLiteral (INITFILENAME), 
+                                    cstring_makeLiteralTemp (LCLINIT_SUFFIX),
+                                    FALSE);
+      
+      if (!inputStream_getPath (larchpath, initFile))
+       {
+         lldiagmsg (message ("Continuing without LCL init file: %s",
+                             inputStream_fileName (initFile)));
+       }
+      else 
+       {
+         if (!inputStream_open (initFile))
+           {
+             lldiagmsg (message ("Continuing without LCL init file: %s",
+                                 inputStream_fileName (initFile)));
+           }
+       }
+    }
+  else 
+    {
+      if (!inputStream_open (initFile))
+       {
+         lldiagmsg (message ("Continuing without LCL init file: %s",
+                             inputStream_fileName (initFile)));
+       }
+    }
+
+  /* Initialize checker */
+
+  lsymbol_initMod ();
+  LCLSynTableInit ();
+
+  setCodePoint ();
+
+  LCLSynTableReset ();
+  LCLTokenTableInit ();
+
+  setCodePoint ();
+
+  LCLScanLineInit ();
+  setCodePoint ();
+  LCLScanLineReset ();
+  setCodePoint ();
+  LCLScanInit ();
+
+  setCodePoint ();
+
+  /* need this to initialize LCL checker */
+
+  llassert (inputStream_isDefined (initFile));      
+  if (inputStream_isOpen (initFile))
+    {
+      setCodePoint ();
+
+      LCLScanReset (initFile);
+      LCLProcessInitFileInit ();
+      LCLProcessInitFileReset ();
+
+      setCodePoint ();
+      LCLProcessInitFile ();
+      LCLProcessInitFileCleanup ();
+
+      setCodePoint ();
+      check (inputStream_close (initFile));
+    }
+  
+  /* Initialize LSL init files, for parsing LSL signatures from LSL */
+  
+  LSLinitFile = inputStream_create (cstring_makeLiteral ("lslinit.lsi"), 
+                                   cstring_makeLiteralTemp (".lsi"),
+                                   FALSE);
+  
+  if (!inputStream_getPath (larchpath, LSLinitFile))
+    {
+      lldiagmsg (message ("Continuing without LSL init file: %s",
+                         inputStream_fileName (LSLinitFile)));
+    }
+  else 
+    {
+      if (!inputStream_open (LSLinitFile))
+       {
+         lldiagmsg (message ("Continuing without LSL init file: %s",
+                             inputStream_fileName (LSLinitFile)));
+       }
+    }
+      
+  setCodePoint ();
+  lsynTableInit ();
+  lsynTableReset ();
+
+  setCodePoint ();
+  ltokenTableInit ();
+
+  setCodePoint ();
+  lscanLineInit ();
+  lscanLineReset ();
+  LSLScanInit ();
+
+  if (inputStream_isOpen (LSLinitFile))
+    {
+      setCodePoint ();
+      LSLScanReset (LSLinitFile);
+      LSLProcessInitFileInit ();
+      setCodePoint ();
+      LSLProcessInitFile ();
+      setCodePoint ();
+      check (inputStream_close (LSLinitFile));
+    }
+      
+  inputStream_free (LSLinitFile);
+  
+  if (lclHadError ())
+    {
+      lclplainerror 
+       (cstring_makeLiteral ("LSL init file error.  Attempting to continue."));
+    }
+  
+  setCodePoint ();
+  g_symtab = symtable_new ();
+  
+  /* 
+  ** sort_init must come after symtab has been initialized 
+  */
+  sort_init ();
+  abstract_init ();
+  setCodePoint ();
+  
+  inittime = clock ();
+  
+  /* 
+  ** Equivalent to importing old spec_csupport.lcl
+  ** define immutable LCL type "bool" and bool constants TRUE and FALSE
+  ** and initialized them to be equal to LSL's "true" and "false".
+  **
+  ** Reads in CTrait.syms (derived from CTrait.lsl) on LARCH_PATH.
+  */
+      
+  LCLBuiltins (); 
+  LCLReportEolTokens (FALSE);
+}
+
 static void
 lslProcess (fileIdList lclfiles)
    /*@globals undef g_currentSpec, undef g_currentSpecName, g_currentloc,
@@ -145,9 +318,8 @@ lslProcess (fileIdList lclfiles)
   bool parser_status = FALSE;
   bool overallStatus = FALSE;
   
-  lslinit_process ();
-  inittime = clock ();
-    
+  lslInit ();
+  
   context_resetSpecLines ();
 
   fileIdList_elements (lclfiles, fid)
@@ -362,6 +534,88 @@ void showHerald (void)
     }
 }
 
+static cstring findLarchPathFile (/*@temp@*/ cstring s)
+{
+  cstring pathName;
+  filestatus status;
+  
+  status = osd_getPath (context_getLarchPath (), s, &pathName);
+  
+  if (status == OSD_FILEFOUND)
+    {
+      return pathName;
+    }
+  else if (status == OSD_FILENOTFOUND)
+    {
+      showHerald ();
+      lldiagmsg        (message ("Cannot find file on LARCH_PATH: %s", s));
+    }
+  else if (status == OSD_PATHTOOLONG)
+    {
+      /* Directory and filename are too long.  Report error. */
+      llbuglit ("soure_getPath: Filename plus directory from search path too long");
+    }
+  else
+    {
+      BADBRANCH;
+    }
+
+  return cstring_undefined;
+}
+
+static void addLarchPathFile (fileIdList files, /*@temp@*/ cstring s)
+{
+  cstring pathName = findLarchPathFile (s);
+
+  if (cstring_isDefined (pathName))
+    {
+      if (fileTable_exists (context_fileTable (), pathName))
+       {
+         showHerald ();
+         lldiagmsg (message ("File listed multiple times: %s", pathName));
+         cstring_free (pathName);
+       }
+      else
+       {
+         fileIdList_add (files, fileTable_addFileOnly (context_fileTable (), pathName));
+       }
+    }
+}
+
+static void addFile (fileIdList files, /*@only@*/ cstring s)
+{
+  if (fileTable_exists (context_fileTable (), s))
+    {
+      showHerald ();
+      lldiagmsg (message ("File listed multiple times: %s", s));
+      cstring_free (s);
+    }
+  else
+    {
+      fileIdList_add (files, fileTable_addFileOnly (context_fileTable (), s));
+    }
+}
+
+static void addXHFile (fileIdList files, /*@temp@*/ cstring s)
+{
+  cstring pathName = findLarchPathFile (s);
+
+  if (cstring_isDefined (pathName))
+    {
+      if (fileTable_exists (context_fileTable (), pathName))
+       {
+         showHerald ();
+         lldiagmsg (message ("File listed multiple times: %s", s));
+       }
+      else
+       {
+         fileIdList_add (files, fileTable_addXHFile (context_fileTable (), pathName));
+       }
+    }
+
+  cstring_free (pathName);
+}
+
 /*
 ** Disable MSVC++ warning about return value.  Methinks humbly splint control
 ** comments are a mite more legible.
@@ -382,22 +636,27 @@ int main (int argc, char *argv[])
   @*/
 # else
   /*@globals killed undef g_currentloc,
+            killed undef initFile,
             killed       g_localSpecPath,  
             killed undef g_currentSpec,
             killed undef g_currentSpecName,
             killed undef yyin,
                     undef g_warningstream, g_messagestream, g_errorstream;
    @*/
-  /*@modifies g_currentloc, g_localSpecPath, g_currentSpec, g_currentSpecName, 
-              fileSystem, yyin; 
+  /*@modifies g_currentloc, initFile, 
+              g_localSpecPath, g_currentSpec, g_currentSpecName, fileSystem,
+             yyin; 
   @*/
 # endif
 {
   bool first_time = TRUE;
+  bool showhelp = FALSE;
+  bool allhelp = TRUE;
   bool expsuccess;
   inputStream sourceFile = inputStream_undefined;
  
   fileIdList dercfiles;
+  cstringSList fl = cstringSList_undefined;
   cstringSList passThroughArgs = cstringSList_undefined;
   fileIdList cfiles, xfiles, lclfiles, mtfiles;
   clock_t before, lcltime, libtime, pptime, cptime, rstime;
@@ -411,8 +670,13 @@ int main (int argc, char *argv[])
   g_messagestream = stderr;
   g_errorstream = stderr;
 
-  (void) signal (SIGINT, llinterrupt);
-  (void) signal (SIGSEGV, llinterrupt); 
+  (void) signal (SIGINT, interrupt);
+  (void) signal (SIGSEGV, interrupt); 
+
+  cfiles = fileIdList_create ();
+  xfiles = fileIdList_create ();
+  lclfiles = fileIdList_create ();
+  mtfiles = fileIdList_create ();
 
   flags_initMod ();
   clabstract_initMod ();
@@ -431,19 +695,8 @@ int main (int argc, char *argv[])
 
   if (argc <= 1)
     {
-      help_showAvailableHelp ();
-      llexit (LLSUCCESS);
-    }
-  
-  /* -help must be the first flag to get help */
-  if (flagcode_isHelpFlag (flags_identifyFlag (cstring_fromChars (argv[1]))))
-    {
-      /*
-      ** Skip first flag and help flag
-      */
-
-      help_processFlags (argc - 2, argv + 2);
-      llexit (LLSUCCESS);
+      showHelp ();
+      llexit (LLGIVEUP);
     }
 
   setCodePoint ();
@@ -506,7 +759,6 @@ int main (int argc, char *argv[])
       {
        /* Put C_INCLUDE_PATH directories in sysdirs */
        cstring cincval = osd_getEnvironmentVariable (cstring_makeLiteralTemp ("C_INCLUDE_PATH"));
-
        if (cstring_isDefined (cincval))
          {
            context_setString (FLG_SYSTEMDIRS, cstring_copy (cincval));
@@ -521,10 +773,6 @@ int main (int argc, char *argv[])
   ** check RCFILE for default flags
   */
 
-  /*
-  ** Process command line message formatting flags before reading rc file
-  */
-
   {
     cstring home = osd_getHomeDir ();
     cstring fname  = cstring_undefined;
@@ -572,12 +820,10 @@ int main (int argc, char *argv[])
                      }
                    else
                      {
-                       voptgenerror
-                         (FLG_BADFLAG,
-                          message
+                       llfatalerror 
+                         (message
                           ("Flag %s must be followed by a string",
-                           flagcode_unparse (opt)),
-                          g_currentloc);
+                           flagcode_unparse (opt)));
                      }
                  }
              }
@@ -587,7 +833,7 @@ int main (int argc, char *argv[])
                  {
                    defaultf = FALSE;
                    fname = cstring_fromChars (argv[i]);
-                   (void) rcfiles_read (fname, &passThroughArgs, TRUE);
+                   (void) readOptionsFile (fname, &passThroughArgs, TRUE);
                  }
                else
                  llfatalerror
@@ -618,7 +864,7 @@ int main (int argc, char *argv[])
 
                homename = message ("%s%h%s", home, CONNECTCHAR,
                                 cstring_fromChars (RCFILE));
-               readhomerc = rcfiles_read (homename, &passThroughArgs, FALSE);
+               readhomerc = readOptionsFile (homename, &passThroughArgs, FALSE);
                
                /*
                ** Try ~/.splintrc also for historical accuracy
@@ -626,7 +872,7 @@ int main (int argc, char *argv[])
                
                altname = message ("%s%h%s", home, CONNECTCHAR,
                                 cstring_fromChars (ALTRCFILE));
-               readaltrc = rcfiles_read (altname, &passThroughArgs, FALSE);
+               readaltrc = readOptionsFile (altname, &passThroughArgs, FALSE);
 
                if (readhomerc && readaltrc)
                  {
@@ -653,8 +899,8 @@ int main (int argc, char *argv[])
          cstring altname = message ("%s%s",osd_getCurrentDirectory (), cstring_fromChars (ALTRCFILE));
          bool readrc, readaltrc;
          
-         readrc = rcfiles_read (rcname, &passThroughArgs, FALSE);
-         readaltrc = rcfiles_read (altname, &passThroughArgs, FALSE);
+         readrc = readOptionsFile (rcname, &passThroughArgs, FALSE);
+         readaltrc = readOptionsFile (altname, &passThroughArgs, FALSE);
          
          if (readrc && readaltrc)
            {
@@ -673,21 +919,356 @@ int main (int argc, char *argv[])
   }
   
   setCodePoint ();
-  llassert (fileloc_isBuiltin (g_currentloc));
+  
+  for (i = 1; i < argc; i++)
+    {
+      char *thisarg;
+      flagcode opt;
+      
+      thisarg = argv[i];
+      
+      if (showhelp)
+       {
+         if (allhelp)
+           {
+             showHerald ();
+           }
+         
+         allhelp = FALSE;
+         
+         if (*thisarg == '-' || *thisarg == '+')
+           {
+             thisarg++;        /* skip '-' */
+           }
+         if (mstring_equal (thisarg, "modes"))
+           {
+             llmsg (describeModes ());
+           }
+         else if (mstring_equal (thisarg, "vars")
+                  || mstring_equal (thisarg, "env"))
+           {
+             describeVars ();
+           }
+         else if (mstring_equal (thisarg, "annotations"))
+           {
+             printAnnotations ();
+           }
+         else if (mstring_equal (thisarg, "parseerrors"))
+           {
+             printParseErrors ();
+           }
+         else if (mstring_equal (thisarg, "comments"))
+           {
+             printComments ();
+           }
+         else if (mstring_equal (thisarg, "prefixcodes"))
+           {
+             describePrefixCodes ();
+           }
+         else if (mstring_equal (thisarg, "references") 
+                  || mstring_equal (thisarg, "refs"))
+           {
+             printReferences ();
+           }
+         else if (mstring_equal (thisarg, "mail"))
+           {
+             printMail ();
+           }
+         else if (mstring_equal (thisarg, "maintainer")
+                  || mstring_equal (thisarg, "version"))
+           {
+             printMaintainer ();
+           }
+         else if (mstring_equal (thisarg, "flags"))
+           {
+             if (i + 1 < argc)
+               {
+                 char *next = argv[i + 1];
+                 
+                 if (specialFlagsHelp (next))
+                   {
+                     i++;
+                   }
+                 else
+                   {
+                     flagkind k = identifyCategory (cstring_fromChars (next));
+                     
+                     if (k != FK_NONE)
+                       {
+                         printCategory (k);
+                         i++;
+                       }
+                   }
+               }
+             else
+               {
+                 printFlags ();
+               }
+           }
+         else
+           {
+             cstring s = describeFlag (cstring_fromChars (thisarg));
+             
+             if (cstring_isDefined (s))
+               {
+                 llmsg (s);
+               }
+           }
+       }
+      else
+       {
+         if (*thisarg == '-' || *thisarg == '+')
+           {
+             bool set = (*thisarg == '+');
+             cstring flagname;
+             
+             thisarg++;        /* skip '-' */
+             flagname = cstring_fromChars (thisarg);
 
-  cfiles = fileIdList_create ();
-  xfiles = fileIdList_create ();
-  lclfiles = fileIdList_create ();
-  mtfiles = fileIdList_create ();
+             DPRINTF (("Flag: %s", flagname));
+             opt = flags_identifyFlag (flagname);
+             DPRINTF (("Flag: %s", flagcode_unparse (opt)));
+
+             if (flagcode_isMessageControlFlag (opt))
+               {
+                 /*
+                 ** Processed on first pass
+                 */
 
-  /* argv[0] is the program name, don't pass it to flags_processFlags */
-  flags_processFlags (TRUE, xfiles, cfiles,
-                     lclfiles, mtfiles, 
-                     &passThroughArgs,
-                     argc - 1, argv + 1);
+                 if (flagcode_hasArgument (opt))
+                   {
+                     ++i;
+                   }
+               }
+             else if (flagcode_isInvalid (opt))
+               {
+                 DPRINTF (("Invalid: %s", flagname));
+
+                 if (isMode (flagname))
+                   {
+                     context_setMode (flagname);
+                   }
+                 else
+                   {
+                     DPRINTF (("Error!"));
+                     voptgenerror (FLG_BADFLAG,
+                                   message ("Unrecognized option: %s", 
+                                            cstring_fromChars (thisarg)),
+                                   g_currentloc);
+                   }
+               }
+             else
+               {
+                 context_userSetFlag (opt, set);
+                 
+                 if (flagcode_hasArgument (opt))
+                   {
+                     if (opt == FLG_HELP)
+                       {
+                         showhelp = TRUE;
+                       }
+                     else if (flagcode_isPassThrough (opt)) /* -D or -U */
+                       { 
+                         passThroughArgs = cstringSList_add 
+                           (passThroughArgs, cstring_fromChars (thisarg));
+                       }
+                     else if (flagcode_hasNumber (opt))
+                       {
+                         if (++i < argc)
+                           {
+                             setValueFlag (opt, cstring_fromChars (argv[i]));
+                           }
+                         else
+                           {
+                             llfatalerror 
+                               (message
+                                ("Flag %s must be followed by a number",
+                                 flagcode_unparse (opt)));
+                           }
+                       } 
+                     else if (flagcode_hasChar (opt))
+                       {
+                         if (++i < argc)
+                           {
+                             setValueFlag (opt, cstring_fromChars (argv[i]));
+                           }
+                         else
+                           {
+                             llfatalerror 
+                               (message
+                                ("Flag %s must be followed by a character",
+                                 flagcode_unparse (opt)));
+                           }
+                       } 
+                     else if (opt == FLG_INCLUDEPATH || opt == FLG_SPECPATH)
+                       {
+                         cstring dir = cstring_suffix (cstring_fromChars (thisarg), 1); /* skip over I */
+                         
+                         switch (opt)
+                           {
+                           case FLG_INCLUDEPATH:
+                             cppAddIncludeDir (dir);
+                             /*@switchbreak@*/ break;
+                           case FLG_SPECPATH:
+                             /*@-mustfree@*/
+                             g_localSpecPath = cstring_toCharsSafe
+                               (message ("%s%h%s", 
+                                         cstring_fromChars (g_localSpecPath), 
+                                         PATH_SEPARATOR,
+                                         dir));
+                             /*@=mustfree@*/
+                             /*@switchbreak@*/ break;
+                             BADDEFAULT;
+                           }
+                       }
+                     else if (flagcode_hasString (opt)
+                              || opt == FLG_INIT || opt == FLG_OPTF)
+                       {
+                         if (++i < argc)
+                           {
+                             cstring arg = cstring_fromChars (argv[i]);
+                             
+                             if (opt == FLG_OPTF)
+                               {
+                                 ; /* -f already processed */
+                               }
+                             else if (opt == FLG_INIT)
+                               {
+# ifndef NOLCL
+                                 initFile = inputStream_create 
+                                   (arg, 
+                                    cstring_makeLiteralTemp (LCLINIT_SUFFIX),
+                                    FALSE);
+# endif
+                                 break;
+                               }
+                             else
+                               {
+                                 DPRINTF (("String flag: %s / %s",
+                                           flagcode_unparse (opt), arg));
+                                 if (opt == FLG_MTSFILE)
+                                   {
+                                     /*
+                                     ** arg identifies mts files
+                                     */
+                                     cstring tmp =  message ("%s%s", arg, MTS_EXTENSION);
+                                     addLarchPathFile (mtfiles, tmp);
+                                     cstring_free (tmp);
+                                     tmp = message ("%s%s", arg, XH_EXTENSION);
+                                     addXHFile (xfiles, tmp);
+                                     cstring_free (tmp);
+                                   }
+                                 else
+                                   {
+                                     setStringFlag (opt, cstring_copy (arg));
+                                   }
+                               }
+                           }
+                         else
+                           {
+                             llfatalerror 
+                               (message
+                                ("Flag %s must be followed by a string",
+                                 flagcode_unparse (opt)));
+                           }
+                       }
+                     else
+                       {
+                         /* no argument */
+                       }
+                   }
+               }
+           }
+         else /* its a filename */
+           {
+             DPRINTF (("Adding filename: %s", thisarg));
+             fl = cstringSList_add (fl, cstring_fromChars (thisarg));
+           }
+       }
+    }
 
   showHerald (); 
   
+  /*
+  ** create lists of C and LCL files
+  */
+
+  cstringSList_elements (fl, current)
+    {
+      cstring ext = fileLib_getExtension (current);
+      
+      if (cstring_isUndefined (ext))
+       {
+         /* no extension --- both C and LCL with default extensions */
+         
+         addFile (cfiles, message ("%s%s", current, C_EXTENSION));
+         addFile (lclfiles, message ("%s%s", current, LCL_EXTENSION));
+       }
+      else if (cstring_equal (ext, XH_EXTENSION))
+       {
+         addXHFile (xfiles, current);
+       }
+      else if (cstring_equal (ext, PP_EXTENSION))
+       {
+         if (!context_getFlag (FLG_NOPP))
+           {
+             voptgenerror 
+               (FLG_FILEEXTENSIONS,
+                message ("File extension %s used without +nopp flag (will be processed as C source code): %s", 
+                         ext, current),
+                g_currentloc);
+           }
+         
+         addFile (cfiles, cstring_copy (current));
+       }
+      else if (cstring_equal (ext, LCL_EXTENSION)) 
+       {
+         addFile (lclfiles, cstring_copy (current));
+       }
+      else if (fileLib_isCExtension (ext))
+       {
+         addFile (cfiles, cstring_copy (current));
+       }
+      else if (cstring_equal (ext, MTS_EXTENSION))
+       {
+         addLarchPathFile (mtfiles, current);
+       }
+      
+      else if (cstring_equal (ext, OBJECT_EXTENSION))
+       {
+         // Make sure this is the correct default
+         /* Ignore object files */
+       }
+      else 
+       {
+         // drl temporary measure .... //
+         // drl //  make sure this is right
+         // on make it optional with a flag
+         //voptgenerror 
+         //  (FLG_FILEEXTENSIONS,
+         //  message ("Unrecognized file extension: %s (assuming %s is C source code)", 
+         //      current, ext),
+         // g_currentloc);
+         
+         //  addFile (cfiles, cstring_copy (current));
+       }
+    } end_cstringSList_elements;
+  
+  if (showhelp)
+    {
+      if (allhelp)
+       {
+         showHelp ();
+       }
+      fprintf (g_warningstream, "\n");
+
+      fileIdList_free (cfiles);
+      fileIdList_free (xfiles);
+      fileIdList_free (lclfiles);
+      
+      llexit (LLSUCCESS);
+    }
+
 # ifdef DOANNOTS
   initAnnots ();
 # endif
@@ -763,14 +1344,12 @@ int main (int argc, char *argv[])
   */
 
   context_setInCommandLine ();
-  
+
   DPRINTF (("Pass through: %s", cstringSList_unparse (passThroughArgs)));
   
-  cstringSList_elements (passThroughArgs, thisarg)
-    {
-      handlePassThroughFlag (cstring_toCharsSafe (thisarg));
-    } 
-  end_cstringSList_elements;
+  cstringSList_elements (passThroughArgs, thisarg) {
+    handlePassThroughFlag (cstring_toCharsSafe (thisarg));
+  } end_cstringSList_elements;
 
   cstringSList_free (passThroughArgs);
 
@@ -1088,25 +1667,22 @@ int main (int argc, char *argv[])
     {
       clock_t ttime = clock () - before;
       int specLines = context_getSpecLinesProcessed ();
-      cstring specmsg = cstring_undefined;
-
+      
       rstime = clock ();
       
       if (specLines > 0)
        {
-         specmsg = message ("%d spec, ", specLines);
+         fprintf (g_warningstream, "%d spec, ", specLines);
        }
       
 # ifndef CLOCKS_PER_SEC
-      lldiagmsg (message ("%s%d source lines in %d time steps (steps/sec unknown)\n", 
-                         specmsg,
-                         context_getLinesProcessed (), 
-                         (int) ttime));
+      fprintf (g_warningstream, "%d source lines in %ld time steps (steps/sec unknown)\n", 
+              context_getLinesProcessed (), 
+              (long) ttime);
 # else
-      lldiagmsg (message ("%s%d source lines in %f s.\n", 
-                         specmsg,
-                         context_getLinesProcessed (), 
-                         (double) ttime / CLOCKS_PER_SEC));
+      fprintf (g_warningstream, "%d source lines in %.2f s.\n", 
+              context_getLinesProcessed (), 
+              (double) ttime / CLOCKS_PER_SEC);
 # endif
     }
   else
@@ -1124,31 +1700,39 @@ int main (int argc, char *argv[])
          
          if (anylcl)
            {
-             (void) snprintf (msg, 256,
-                       "Time distribution (percent): initialize %.2f / lcl %.2f / "
-                       "pre-process %.2f / c check %.2f / finalize %.2f \n", 
-                       (100.0 * (double) (libtime - before) / ttime),
-                       (100.0 * (double) (lcltime - libtime) / ttime),
-                       (100.0 * (double) (pptime - lcltime) / ttime),
-                       (100.0 * (double) (cptime - pptime) / ttime),
-                       (100.0 * (double) (rstime - cptime) / ttime));
+             sprintf (msg, 
+                      "Time distribution (percent): initialize %.2f / lcl %.2f / "
+                      "pre-process %.2f / c check %.2f / finalize %.2f \n", 
+                      (100.0 * (double) (libtime - before) / ttime),
+                      (100.0 * (double) (lcltime - libtime) / ttime),
+                      (100.0 * (double) (pptime - lcltime) / ttime),
+                      (100.0 * (double) (cptime - pptime) / ttime),
+                      (100.0 * (double) (rstime - cptime) / ttime));
            }
          else
            {
-             (void) snprintf (msg, 256,
-                       "Time distribution (percent): initialize %.2f / "
-                       "pre-process %.2f / c check %.2f / finalize %.2f \n", 
-                       (100.0 * (double) (libtime - before) / ttime),
-                       (100.0 * (double) (pptime - libtime) / ttime),
-                       (100.0 * (double) (cptime - pptime) / ttime),
-                       (100.0 * (double) (rstime - cptime) / ttime));
+             sprintf (msg, 
+                      "Time distribution (percent): initialize %.2f / "
+                      "pre-process %.2f / c check %.2f / finalize %.2f \n", 
+                      (100.0 * (double) (libtime - before) / ttime),
+                      (100.0 * (double) (pptime - libtime) / ttime),
+                      (100.0 * (double) (cptime - pptime) / ttime),
+                      (100.0 * (double) (rstime - cptime) / ttime));
            }
          
          llgenindentmsgnoloc (cstring_fromCharsO (msg));
        }
     }
 
-  llexit (expsuccess ? LLSUCCESS : LLFAILURE);
+  if (context_getFlag(FLG_FORCEEXITSUCESS))
+    {
+      llexit (LLSUCCESS);
+    }
+  else
+    {
+      llexit (expsuccess ? LLSUCCESS : LLFAILURE);
+    }
+  
   BADBRANCHRET (LLFAILURE);
 }
 
@@ -1160,7 +1744,445 @@ int main (int argc, char *argv[])
 # endif 
 
 void
-llinterrupt (int i)
+showHelp (void)
+{
+  showHerald ();
+  
+  llmsg (message ("Source files are .c, .h and %s files.  If there is no suffix,",
+                 LCL_EXTENSION));
+  llmsg (message ("   Splint will look for <file>.c and <file>%s.", LCL_EXTENSION));
+  llmsglit ("");
+  llmsglit ("Use splint -help <topic or flag name> for more information");
+  llmsglit ("");
+  llmsglit ("Topics:");
+  llmsglit ("");
+  llmsglit ("   annotations (describes source-code annotations)");
+  llmsglit ("   comments (describes control comments)");
+  llmsglit ("   flags (describes flag categories)");
+  llmsglit ("   flags <category> (describes flags in category)");
+  llmsglit ("   flags all (short description of all flags)");
+  llmsglit ("   flags alpha (list all flags alphabetically)");
+  llmsglit ("   flags full (full description of all flags)");
+  llmsglit ("   mail (information on mailing lists)");
+  llmsglit ("   modes (show mode settings)");
+  llmsglit ("   parseerrors (help on handling parser errors)");
+  llmsglit ("   prefixcodes (character codes in namespace prefixes)");
+  llmsglit ("   references (sources for more information)");
+  llmsglit ("   vars (environment variables)"); 
+  llmsglit ("   version (information on compilation, maintainer)");
+  llmsglit ("");
+}
+
+static bool
+specialFlagsHelp (char *next)
+{
+  if ((next != NULL) && (*next != '-') && (*next != '+'))
+    {
+      if (mstring_equal (next, "alpha"))
+       {
+         printAlphaFlags ();
+         return TRUE;
+       }
+      else if (mstring_equal (next, "all"))
+       {
+         printAllFlags (TRUE, FALSE);
+         return TRUE;
+       }
+      else if (mstring_equal (next, "categories")
+              || mstring_equal (next, "cats"))
+       {
+         listAllCategories ();
+         return TRUE;
+       }
+      else if (mstring_equal (next, "full"))
+       {
+         printAllFlags (FALSE, TRUE);
+         return TRUE;
+       }
+      else if (mstring_equal (next, "manual"))
+       {
+         printFlagManual (FALSE);
+         return TRUE;
+       }
+      else if (mstring_equal (next, "webmanual"))
+       {
+         printFlagManual (TRUE);
+         return TRUE;
+       }
+      else
+       {
+         return FALSE;
+       }
+    }
+  else
+    {
+      return FALSE;
+    }
+}
+
+void
+printParseErrors (void)
+{
+  llmsglit ("Parse Errors");
+  llmsglit ("------------");
+  llmsglit ("");
+  llmsglit ("Splint will sometimes encounter a parse error for code that "
+           "can be parsed with a local compiler. There are a few likely "
+           "causes for this and a number of techniques that can be used "
+           "to work around the problem.");
+  llmsglit ("");
+  llmsglit ("Compiler extensions --- compilers sometimes extend the C "
+           "language with compiler-specific keywords and syntax. While "
+           "it is not advisible to use these, oftentimes one has no choice "
+           "when the system header files use compiler extensions. ");
+  llmsglit ("");
+  llmsglit ("Splint supports some of the GNU (gcc) compiler extensions, "
+           "if the +gnuextensions flag is set. You may be able to workaround "
+           "other compiler extensions by using a pre-processor define. "
+           "Alternately, you can surround the unparseable code with");
+  llmsglit ("");
+  llmsglit ("   # ifndef S_SPLINT_S");
+  llmsglit ("   ...");
+  llmsglit ("   # endif");
+  llmsglit ("");
+  /* evans 2000-12-21 fixed typo reported by Jeroen Ruigrok/Asmodai */
+  llmsglit ("Missing type definitions --- an undefined type name will usually "
+           "lead to a parse error. This often occurs when a standard header "
+           "file defines some type that is not part of the standard library. ");
+  llmsglit ("By default, Splint does not process the local files corresponding "
+           "to standard library headers, but uses a library specification "
+           "instead so dependencies on local system headers can be detected. "
+           "If another system header file that does not correspond to a "
+           "standard library header uses one of these superfluous types, "
+           "a parse error will result.");
+  llmsglit ("");
+  llmsglit ("If the parse error is inside a posix standard header file, the "
+           "first thing to try is +posixlib. This makes Splint use "
+           "the posix library specification instead of reading the posix "
+           "header files.");
+  llmsglit ("");
+  llmsglit ("Otherwise, you may need to either manually define the problematic "
+           "type (e.g., add -Dmlink_t=int to your .splintrc file) or force "
+           "splint to process the header file that defines it. This is done "
+           "by setting -skipisoheaders or -skipposixheaders before "
+           "the file that defines the type is #include'd.");
+  llmsglit ("(See splint -help "
+           "skipisoheaders and splint -help skipposixheaders for a list of "
+           "standard headers.)  For example, if <sys/local.h> uses a type "
+           "defined by posix header <sys/types.h> but not defined by the "
+           "posix library, we might do: ");
+  llmsglit ("");
+  llmsglit ("   /*@-skipposixheaders@*/");
+  llmsglit ("   # include <sys/types.h>");
+  llmsglit ("   /*@=skipposixheaders@*/");
+  llmsglit ("   # include <sys/local.h>");
+  llmsglit ("");
+  llmsglit ("to force Splint to process <sys/types.h>.");
+  llmsglit ("");
+  llmsglit ("At last resort, +trytorecover can be used to make Splint attempt "
+           "to continue after a parse error.  This is usually not successful "
+           "and the author does not consider assertion failures when +trytorecover "
+           "is used to be bugs.");
+}
+
+void
+printAnnotations (void)
+{
+  llmsglit ("Annotations");
+  llmsglit ("-----------");
+  llmsglit ("");
+  llmsglit ("Annotations are semantic comments that document certain "
+           "assumptions about functions, variables, parameters, and types. ");
+  llmsglit ("");
+  llmsglit ("They may be used to indicate where the representation of a "
+           "user-defined type is hidden, to limit where a global variable may "
+           "be used or modified, to constrain what a function implementation "
+            "may do to its parameters, and to express checked assumptions about "
+           "variables, types, structure fields, function parameters, and "
+           "function results.");
+  llmsglit ("");
+  llmsglit ("Annotations are introduced by \"/*@\". The role of the @ may be "
+           "played by any printable character, selected using -commentchar <char>.");
+  llmsglit ("");
+  llmsglit ("Consult the User's Guide for descriptions of checking associated with each annotation.");
+  llmsglit ("");
+  llmsglit ("Globals: (in function declarations)");
+  llmsglit ("   /*@globals <globitem>,+ @*/");
+  llmsglit ("      globitem is an identifier, internalState or fileSystem");
+  llmsglit ("");
+  llmsglit ("Modifies: (in function declarations)");
+  llmsglit ("   /*@modifies <moditem>,+ @*/");
+  llmsglit ("      moditem is an lvalue");
+  llmsglit ("   /*@modifies nothing @*/");
+  llmsglit ("   /*@*/   (Abbreviation for no globals and modifies nothing.)");
+  llmsglit ("");
+  llmsglit ("Iterators:");
+  llmsglit ("   /*@iter <identifier> (<parameter-type-list>) @*/ - declare an iterator");
+  llmsglit ("");
+  llmsglit ("Constants:");
+  llmsglit ("   /*@constant <declaration> @*/ - declares a constant");
+  llmsglit ("");
+  llmsglit ("Alternate Types:");
+  llmsglit ("   /*@alt <basic-type>,+ @*/");
+  llmsglit ("   (e.g., int /*@alt char@*/ is a type matching either int or char)");
+  llmsglit ("");
+  llmsglit ("Declarator Annotations");
+  llmsglit ("");
+  llmsglit ("Type Definitions:");
+  llmsglit ("   /*@abstract@*/ - representation is hidden from clients");
+  llmsglit ("   /*@concrete@*/ - representation is visible to clients");
+  llmsglit ("   /*@immutable@*/ - instances of the type cannot change value");
+  llmsglit ("   /*@mutable@*/ - instances of the type can change value");
+  llmsglit ("   /*@refcounted@*/ - reference counted type");
+  llmsglit ("");
+  llmsglit ("Global Variables:");
+  llmsglit ("   /*@unchecked@*/ - weakest checking for global use");
+  llmsglit ("   /*@checkmod@*/ - check modification by not use of global");
+  llmsglit ("   /*@checked@*/ - check use and modification of global");
+  llmsglit ("   /*@checkedstrict@*/ - check use of global strictly");
+  llmsglit ("");
+  llmsglit ("Memory Management:");
+  llmsglit ("   /*@dependent@*/ - a reference to externally-owned storage");
+  llmsglit ("   /*@keep@*/ - a parameter that is kept by the called function");
+  llmsglit ("   /*@killref@*/ - a refcounted parameter, killed by the call");
+  llmsglit ("   /*@only@*/ - an unshared reference");
+  llmsglit ("   /*@owned@*/ - owner of storage that may be shared by /*@dependent@*/ references");
+  llmsglit ("   /*@shared@*/ - shared reference that is never deallocated");
+  llmsglit ("   /*@temp@*/ - temporary parameter");
+  llmsglit ("");
+  llmsglit ("Aliasing:");
+  llmsglit ("   /*@unique@*/ - may not be aliased by any other visible reference");
+  llmsglit ("   /*@returned@*/ - may be aliased by the return value");
+  llmsglit ("");
+  llmsglit ("Exposure:");
+  llmsglit ("   /*@observer@*/ - reference that cannot be modified");
+  llmsglit ("   /*@exposed@*/ - exposed reference to storage in another object");
+  llmsglit ("");
+  llmsglit ("Definition State:");
+  llmsglit ("   /*@out@*/ - storage reachable from reference need not be defined");
+  llmsglit ("   /*@in@*/ - all storage reachable from reference must be defined");
+  llmsglit ("   /*@partial@*/ - partially defined, may have undefined fields");
+  llmsglit ("   /*@reldef@*/ - relax definition checking");
+  llmsglit ("");
+  llmsglit ("Global State: (for globals lists, no /*@, since list is already in /*@\'s)");
+  llmsglit ("   undef - variable is undefined before the call");
+  llmsglit ("   killed - variable is undefined after the call");
+  llmsglit ("");
+  llmsglit ("Null State:");
+  llmsglit ("   /*@null@*/ - possibly null pointer");
+  llmsglit ("   /*@notnull@*/ - definitely non-null pointer");
+  llmsglit ("   /*@relnull@*/ - relax null checking");
+  llmsglit ("");
+  llmsglit ("Null Predicates:");
+  llmsglit ("   /*@nullwhentrue@*/ - if result is TRUE, first parameter is NULL");
+  llmsglit ("   /*@falsewhennull@*/ - if result is TRUE, first parameter is not NULL");
+  llmsglit ("");
+  llmsglit ("Execution:");
+  llmsglit ("   /*@noreturn@*/ - function never returns");
+  llmsglit ("   /*@maynotreturn@*/ - function may or may not return");
+  llmsglit ("   /*@noreturnwhentrue@*/ - function does not return if first parameter is TRUE");
+  llmsglit ("   /*@noreturnwhenfalse@*/ - function does not return if first parameter if FALSE");
+  llmsglit ("   /*@alwaysreturns@*/ - function always returns");
+  llmsglit ("");
+  llmsglit ("Side-Effects:");
+  llmsglit ("   /*@sef@*/ - corresponding actual parameter has no side effects");
+  llmsglit ("");
+  llmsglit ("Declaration:");
+  llmsglit ("   /*@unused@*/ - need not be used (no unused errors reported)");
+  llmsglit ("   /*@external@*/ - defined externally (no undefined error reported)");
+  llmsglit ("");
+  llmsglit ("Case:");
+  llmsglit ("   /*@fallthrough@*/ - fall-through case");
+  llmsglit ("");
+  llmsglit ("Break:");
+  llmsglit ("   /*@innerbreak@*/ - break is breaking an inner loop or switch");
+  llmsglit ("   /*@loopbreak@*/ - break is breaking a loop");
+  llmsglit ("   /*@switchbreak@*/ - break is breaking a switch");
+  llmsglit ("   /*@innercontinue@*/ - continue is continuing an inner loop");
+  llmsglit ("");
+  llmsglit ("Unreachable Code:");
+  llmsglit ("   /*@notreached@*/ - statement may be unreachable.");
+  llmsglit ("");
+  llmsglit ("Special Functions:");
+  llmsglit ("   /*@printflike@*/ - check variable arguments like printf");
+  llmsglit ("   /*@scanflike@*/ - check variable arguments like scanf");
+}
+
+void
+printComments (void)
+{
+  llmsglit ("Control Comments");
+  llmsglit ("----------------");
+  llmsglit ("");
+  llmsglit ("Setting Flags");
+  llmsglit ("");
+  llmsglit ("Most flags (all except those characterized as \"globally-settable only\") can be set locally using control comments. A control comment can set flags locally to override the command line settings. The original flag settings are restored before processing the next file.");
+  llmsglit ("");
+  llmsglit ("The syntax for setting flags in control comments is the same as that of the command line, except that flags may also be preceded by = to restore their setting to the original command-line value. For instance,");
+  llmsglit ("   /*@+boolint -modifies =showfunc@*/");
+  llmsglit ("sets boolint on (this makes bool and int indistinguishable types), sets modifies off (this prevents reporting of modification errors), and sets showfunc to its original setting (this controls  whether or not the name of a function is displayed before a message).");
+  llmsglit ("");
+  llmsglit ("Error Suppression");
+  llmsglit ("");
+  llmsglit ("Several comments are provided for suppressing messages. In general, it is usually better to use specific flags to suppress a particular error permanently, but the general error suppression flags may be more convenient for quickly suppressing messages for code that will be corrected or documented later.");
+  llmsglit ("");
+  llmsglit ("/*@ignore@*/ ... /*@end@*/");
+  llgenindentmsgnoloc
+    (cstring_makeLiteral 
+     ("No errors will be reported in code regions between /*@ignore@*/ and /*@end@*/. These comments can be used to easily suppress an unlimited number of messages."));
+  llmsglit ("/*@i@*/");
+    llgenindentmsgnoloc
+    (cstring_makeLiteral 
+     ("No errors will be reported from an /*@i@*/ comment to the end of the line."));
+  llmsglit ("/*@i<n>@*/");
+  llgenindentmsgnoloc
+    (cstring_makeLiteral 
+     ("No errors will be reported from an /*@i<n>@*/ (e.g., /*@i3@*/) comment to the end of the line. If there are not exactly n errors suppressed from the comment point to the end of the line, Splint will report an error."));
+  llmsglit ("/*@t@*/, /*@t<n>@*/");
+  llgenindentmsgnoloc
+    (cstring_makeLiteral 
+     ("Like i and i<n>, except controlled by +tmpcomments flag. These can be used to temporarily suppress certain errors. Then, -tmpcomments can be set to find them again."));
+  llmsglit ("");
+  llmsglit ("Type Access");
+  llmsglit ("");
+  llmsglit ("/*@access <type>@*/"); 
+  llmsglit ("   Allows the following code to access the representation of <type>");
+  llmsglit ("/*@noaccess <type>@*/");
+  llmsglit ("   Hides the representation of <type>");
+  llmsglit ("");
+  llmsglit ("Macro Expansion");
+  llmsglit ("");
+  llmsglit ("/*@notfunction@*/");
+  llgenindentmsgnoloc 
+    (cstring_makeLiteral
+     ("Indicates that the next macro definition is not intended to be a "
+      "function, and should be expanded in line instead of checked as a "
+      "macro function definition."));
+}
+
+  
+void
+printFlags (void)
+{
+  llmsglit ("Flag Categories");
+  llmsglit ("---------------");
+  listAllCategories ();
+  llmsglit ("\nTo see the flags in a flag category, do\n   splint -help flags <category>");
+  llmsglit ("To see a list of all flags in alphabetical order, do\n   splint -help flags alpha");
+  llmsglit ("To see a full description of all flags, do\n   splint -help flags full");
+}
+
+void
+printMaintainer (void)
+{
+  llmsg (message ("Maintainer: %s", cstring_makeLiteralTemp (SPLINT_MAINTAINER)));
+  llmsglit (LCL_COMPILE);
+}
+
+void
+printMail (void)
+{
+  llmsglit ("Mailing Lists");
+  llmsglit ("-------------");
+  llmsglit ("");
+  llmsglit ("There are two mailing lists associated with Splint: ");
+  llmsglit ("");
+  llmsglit ("   lclint-announce@virginia.edu");
+  llmsglit ("");
+  llmsglit ("      Reserved for announcements of new releases and bug fixes.");
+  llmsglit ("      To subscribe, send a message to majordomo@virginia.edu with body: ");
+  llmsglit ("           subscribe lclint-announce");
+  llmsglit ("");
+  llmsglit ("   lclint-interest@virginia.edu");
+  llmsglit ("");
+  llmsglit ("      Informal discussions on the use and development of Splint.");
+  llmsglit ("      To subscribe, send a message to majordomo@virginia.edu with body: ");
+  llmsglit ("           subscribe lclint-interest");
+}
+
+void
+printReferences (void)
+{
+  llmsglit ("References");
+  llmsglit ("----------");
+  llmsglit ("");
+  llmsglit ("For more information, see the Splint web site: http://www.splint.org");
+}
+
+void
+describePrefixCodes (void)
+{
+  llmsglit ("Prefix Codes");
+  llmsglit ("------------");
+  llmsglit ("");
+  llmsglit ("These characters have special meaning in name prefixes:");
+  llmsglit ("");
+  llmsg (message ("   %h  Any uppercase letter [A-Z]", PFX_UPPERCASE));
+  llmsg (message ("   %h  Any lowercase letter [a-z]", PFX_LOWERCASE));
+  llmsg (message ("   %h  Any character (valid in a C identifier)", PFX_ANY));
+  llmsg (message ("   %h  Any digit [0-9]", PFX_DIGIT));
+  llmsg (message ("   %h  Any non-uppercase letter [a-z0-9_]", PFX_NOTUPPER));
+  llmsg (message ("   %h  Any non-lowercase letter [A-Z0-9_]", PFX_NOTLOWER));
+  llmsg (message ("   %h  Any letter [A-Za-z]", PFX_ANYLETTER));
+  llmsg (message ("   %h  Any letter or digit [A-Za-z0-9]", PFX_ANYLETTERDIGIT));
+  llmsglit ("   *  Zero or more repetitions of the previous character class until the end of the name");
+}
+
+void
+describeVars (void)
+{
+  cstring eval;
+  cstring def;
+
+  eval = context_getLarchPath ();
+  def = osd_getEnvironmentVariable (LARCH_PATH);
+
+  if (cstring_isDefined (def) || 
+      !cstring_equal (eval, cstring_fromChars (DEFAULT_LARCHPATH)))
+    {
+      llmsg (message ("LARCH_PATH = %s", eval));
+    }
+  else
+    {
+      llmsg (message ("LARCH_PATH = <not set> (default = %s)",
+                     cstring_fromChars (DEFAULT_LARCHPATH)));
+    }
+  
+  llmsglit ("   --- path used to find larch initialization files and LSL traits");
+
+  eval = context_getLCLImportDir ();
+  def = osd_getEnvironmentVariable (cstring_makeLiteralTemp (LCLIMPORTDIR));
+
+  if (cstring_isDefined (def) ||
+      !cstring_equal (eval, cstring_fromChars (DEFAULT_LCLIMPORTDIR)))
+    {
+      llmsg (message ("%q = %s", cstring_makeLiteral (LCLIMPORTDIR), eval));
+    }
+  else
+    {
+      llmsg (message ("%s = <not set, default: %s>", cstring_makeLiteralTemp (LCLIMPORTDIR), 
+                     cstring_makeLiteralTemp (DEFAULT_LCLIMPORTDIR))); 
+    }
+  
+  llmsglit ("   --- directory containing lcl standard library files "
+           "(import with < ... >)");;
+
+  llmsg (message 
+        ("include path = %q (set by environment variable %s and -I flags)",
+         cppReader_getIncludePath (), INCLUDEPATH_VAR));
+
+  llmsglit ("   --- path used to find #include'd files");
+
+  llmsg (message 
+        ("systemdirs = %s (set by -systemdirs or environment variable %s)", /*@i413223@*/
+         context_getString (FLG_SYSTEMDIRS),
+         INCLUDEPATH_VAR));
+
+  llmsglit ("   --- if file is found on this path, it is treated as a system file for error reporting");
+}
+
+void
+interrupt (int i)
 {
   switch (i)
     {
@@ -1274,6 +2296,371 @@ llexit (int status)
   exit ((status == LLSUCCESS) ? EXIT_SUCCESS : EXIT_FAILURE);
 }
 
+bool readOptionsFile (cstring fname, cstringSList *passThroughArgs, bool report)
+{
+  bool res = FALSE;
+
+  if (fileTable_exists (context_fileTable (), fname))
+    {
+      if (report)
+       {
+         voptgenerror
+           (FLG_WARNRC, 
+            message ("Multiple attempts to read options file: %s", fname),
+            g_currentloc);
+       }
+    }
+  else
+    {
+      FILE *innerf = fileTable_openReadFile (context_fileTable (), fname);
+      
+      if (innerf != NULL)
+       {
+         fileloc fc = g_currentloc;
+         g_currentloc = fileloc_createRc (fname);
+
+         displayScan (message ("< reading options from %q >", 
+                               fileloc_outputFilename (g_currentloc)));
+         
+         loadrc (innerf, passThroughArgs);
+         fileloc_reallyFree (g_currentloc);
+         g_currentloc = fc;
+         res = TRUE;
+       }
+      else 
+       {
+         if (report)
+           {
+             voptgenerror
+               (FLG_WARNRC, 
+                message ("Cannot open options file: %s", fname),
+                g_currentloc);
+           }
+       }
+    }
+
+  return res;
+}
+
+/*
+** This shouldn't be necessary, but Apple Darwin can't handle '"''s.
+*/
+
+void
+loadrc (/*:open:*/ FILE *rcfile, cstringSList *passThroughArgs)
+   /*@modifies rcfile@*/
+   /*@ensures closed rcfile@*/
+{
+  char *s = mstring_create (MAX_LINE_LENGTH);
+  char *os = s;
+  
+  DPRINTF (("Pass through: %s", cstringSList_unparse (*passThroughArgs)));
+
+  s = os;
+
+  while (reader_readLine (rcfile, s, MAX_LINE_LENGTH) != NULL)
+    {
+      char c;
+      bool set = FALSE;            
+      char *thisflag;
+      flagcode opt;
+
+      DPRINTF (("Line: %s", s));
+      DPRINTF (("Pass through: %s", cstringSList_unparse (*passThroughArgs)));
+            
+      while (*s == ' ' || *s == '\t')
+       {
+         s++;
+         incColumn ();
+       }
+      
+      while (*s != '\0')
+       {
+         bool escaped = FALSE;
+         bool quoted = FALSE;
+         c = *s;
+
+         DPRINTF (("Process: %s", s));
+         DPRINTF (("Pass through: %s", cstringSList_unparse (*passThroughArgs)));
+         /* comment characters */
+         if (c == '#' || c == ';' || c == '\n') 
+           {
+             /*@innerbreak@*/
+             break;
+           }
+         
+         if (c == '-' || c == '+')
+           {
+             set = (c == '+');
+           }
+         else
+           {
+             showHerald ();
+             voptgenerror (FLG_BADFLAG, 
+                           message ("Bad flag syntax (+ or - expected, "
+                                    "+ is assumed): %s", 
+                                    cstring_fromChars (s)),
+                           g_currentloc);
+             s--;
+             set = TRUE;
+           }
+         
+         s++;
+         incColumn ();
+         
+         thisflag = s;
+         
+         while ((c = *s) != '\0')
+           { /* remember to handle spaces and quotes in -D and -U ... */
+             if (escaped)
+               {
+                 escaped = FALSE;
+               }
+             else if (quoted)
+               {
+                 if (c == '\\')
+                   {
+                     escaped = TRUE;
+                   }
+                 else if (c == '\"')
+                   {
+                     quoted = FALSE;
+                   }
+                 else
+                   {
+                     ;
+                   }
+               }
+             else if (c == '\"')
+               {
+                 quoted = TRUE;
+               }
+             else
+               {
+                if (c == ' ' || c == '\t' || c == '\n')
+                  {
+                    /*@innerbreak@*/ break;
+                  }
+              }
+                 
+             s++; 
+             incColumn ();
+           }
+
+         DPRINTF (("Nulling: %c", *s));
+         *s = '\0';
+
+         if (mstring_isEmpty (thisflag))
+           {
+             llfatalerror (message ("Missing flag: %s",
+                                    cstring_fromChars (os)));
+           }
+
+         DPRINTF (("Flag: %s", thisflag));
+
+         opt = flags_identifyFlag (cstring_fromChars (thisflag));
+         
+         if (flagcode_isSkip (opt))
+           {
+             ;
+           }
+         else if (flagcode_isInvalid (opt))
+           {
+             DPRINTF (("Invalid: %s", thisflag));
+
+             if (isMode (cstring_fromChars (thisflag)))
+               {
+                 context_setMode (cstring_fromChars (thisflag));
+               }
+             else
+               {
+                 voptgenerror (FLG_BADFLAG,
+                               message ("Unrecognized option: %s", 
+                                        cstring_fromChars (thisflag)),
+                               g_currentloc);
+               }
+           }
+         else
+           {
+             context_userSetFlag (opt, set);
+
+             if (flagcode_hasArgument (opt))
+               {
+                 if (opt == FLG_HELP)
+                   {
+                     showHerald ();
+                     voptgenerror (FLG_BADFLAG,
+                                   message ("Cannot use help in rc files"),
+                                   g_currentloc);
+                   }
+                 else if (flagcode_isPassThrough (opt)) /* -D or -U */
+                   {
+                     cstring arg = cstring_fromCharsNew (thisflag);
+                     cstring_markOwned (arg);
+                     *passThroughArgs = cstringSList_add (*passThroughArgs, arg);
+                     DPRINTF (("Pass through: %s",
+                               cstringSList_unparse (*passThroughArgs)));
+                   }
+                 else if (opt == FLG_INCLUDEPATH 
+                          || opt == FLG_SPECPATH)
+                   {
+                     cstring dir = cstring_suffix (cstring_fromChars (thisflag), 1); /* skip over I/S */
+                                     
+                     switch (opt)
+                       {
+                       case FLG_INCLUDEPATH:
+                         cppAddIncludeDir (dir);
+                         /*@switchbreak@*/ break;
+                       case FLG_SPECPATH:
+                         /*@-mustfree@*/
+                         g_localSpecPath = cstring_toCharsSafe
+                           (message ("%s:%s", cstring_fromChars (g_localSpecPath), dir));
+                         /*@=mustfree@*/
+                         /*@switchbreak@*/ break;
+                         BADDEFAULT;
+                       }
+                   }
+                 else if (flagcode_hasString (opt)
+                          || flagcode_hasNumber (opt)
+                          || flagcode_hasChar (opt)
+                          || opt == FLG_INIT || opt == FLG_OPTF)
+                   {
+                     cstring extra = cstring_undefined;
+                     char *rest, *orest;
+                     char rchar;
+                     
+                     *s = c;
+                     rest = mstring_copy (s);
+                     DPRINTF (("Here: rest = %s", rest));
+                     orest = rest;
+                     *s = '\0';
+                     
+                     while ((rchar = *rest) != '\0'
+                            && (isspace ((int) rchar)))
+                       {
+                         rest++;
+                         s++;
+                       }
+                     
+                     DPRINTF (("Yo: %s", rest));
+
+                     while ((rchar = *rest) != '\0' 
+                            && !isspace ((int) rchar))
+                       {
+                         extra = cstring_appendChar (extra, rchar);
+                         rest++; 
+                         s++;
+                       }
+                     
+                     DPRINTF (("Yo: %s", extra));
+                     sfree (orest);
+
+                     if (cstring_isUndefined (extra))
+                       {
+                         showHerald ();
+                         voptgenerror 
+                           (FLG_BADFLAG,
+                            message
+                            ("Flag %s must be followed by an argument",
+                             flagcode_unparse (opt)),
+                            g_currentloc);
+                       }
+                     else
+                       {
+                         s--;
+                         
+                         DPRINTF (("Here we are: %s", extra));
+
+                         if (flagcode_hasNumber (opt) || flagcode_hasChar (opt))
+                           {
+                             DPRINTF (("Set value flag: %s", extra));
+                             setValueFlag (opt, extra);
+                           }
+                         else if (opt == FLG_OPTF)
+                           {
+                             (void) readOptionsFile (extra, passThroughArgs, TRUE);
+                           }
+                         else if (opt == FLG_INIT)
+                           {
+# ifndef NOLCL
+                             llassert (inputStream_isUndefined (initFile));
+                             
+                             initFile = inputStream_create 
+                               (cstring_copy (extra), 
+                                cstring_makeLiteralTemp (LCLINIT_SUFFIX),
+                                FALSE);
+# endif
+                           }
+                         else if (flagcode_hasString (opt))
+                           {
+                             DPRINTF (("Here: %s", extra));
+
+                             /*
+                             ** If it has "'s, we need to remove them.
+                             */
+
+                             if (cstring_firstChar (extra) == '\"')
+                               {
+                                 if (cstring_lastChar (extra) == '\"')
+                                   {
+                                     cstring unquoted = cstring_copyLength 
+                                       (cstring_toCharsSafe (cstring_suffix (extra, 1)),
+                                        cstring_length (extra) - 2);
+
+                                     DPRINTF (("string flag: %s -> %s", extra, unquoted));
+                                     setStringFlag (opt, unquoted);
+                                     cstring_free (extra);
+                                   }
+                                 else
+                                   {
+                                     voptgenerror
+                                       (FLG_BADFLAG, 
+                                        message ("Unmatched \" in option string: %s", 
+                                                 extra),
+                                        g_currentloc);
+                                     setStringFlag (opt, extra);
+                                   }
+                               }
+                             else
+                               {
+                                 DPRINTF (("No quotes: %s", extra));
+                                 setStringFlag (opt, extra);
+                               }
+
+                             extra = cstring_undefined;
+                           }
+                         else
+                           {
+                             BADEXIT;
+                           }
+                       }
+
+                     cstring_free (extra); 
+                   }
+                 else
+                   {
+                     BADEXIT;
+                   }
+               }
+           }
+         
+         *s = c;
+         DPRINTF (("Pass through: %s", cstringSList_unparse (*passThroughArgs)));
+         while ((c == ' ') || (c == '\t'))
+           {
+             c = *(++s);
+             incColumn ();
+           } 
+       }
+      DPRINTF (("Pass through: %s", cstringSList_unparse (*passThroughArgs)));
+      s = os;
+    }
+
+  DPRINTF (("Pass through: %s", cstringSList_unparse (*passThroughArgs)));
+  sfree (os); 
+  check (fileTable_closeFile (context_fileTable (), rcfile));
+}
+
 static fileIdList preprocessFiles (fileIdList fl, bool xhfiles)
   /*@modifies fileSystem@*/
 {
@@ -1311,11 +2698,13 @@ static fileIdList preprocessFiles (fileIdList fl, bool xhfiles)
              if ((filesprocessed % skip) == 0) 
                {
                  if (filesprocessed == 0) {
-                   displayScanContinue (cstring_makeLiteral (" "));
+                   fprintf (g_messagestream, " ");
                  }
                  else {
-                   displayScanContinue (cstring_makeLiteral ("."));
+                   fprintf (g_messagestream, ".");
                  }
+                 
+                 (void) fflush (g_messagestream);
                }
              filesprocessed++;
            }
index 4906dc5bab323b707bc6341df1e22493eb16920b..ba77b5e7a09cffb2b8df1f40920731ae363ee8ef 100644 (file)
@@ -145,6 +145,11 @@ bool lltok_isRequires (lltok tok)
   return (tok->tok == QPRECLAUSE);
 }
 
+bool lltok_isRbrace (lltok tok)
+{
+  return (tok->tok == TRBRACE);
+}
+
 cstring
 lltok_unparse (lltok tok)
 {
index a0c857add3f55cc02d91756ee029c96a0378d5a7..3c63f9f8d606ccfc67156a96d51d05b60f7c1632 100644 (file)
@@ -26,7 +26,7 @@
 ** loopHeuristics.c
 */
 
-/*This file was formerly called forjunk.c C
+/*This file was formerly called forjunk.c 
   renamed Oct 8, 2001 - DRL
 */
 
 
 /*@access constraint, exprNode @*/  /* !!! NO! */
 
-/*@access constraintExpr @*/ /* !!! NO! */
+/* @access constraintExpr @ */ /* !!! NO! */
 
 /*@-nullderef@*/ /* !!! DRL needs to fix this code! */
 /*@-nullstate@*/ /* !!! DRL needs to fix this code! */
 /*@-nullpass@*/ /* !!! DRL needs to fix this code! */
-/*@-temptrans@*/ /* !!! DRL needs to fix this code! */
+
+/*@access constraintExpr@*/
+
+/*!!!*/
+
+
+/* /* */ //
+//
+
 
 static bool isInc (/*@observer@*/ constraintExpr c) /*@*/
 {
@@ -72,6 +80,52 @@ static bool isInc (/*@observer@*/ constraintExpr c) /*@*/
  return FALSE;
 }
 
+
+
+static bool isDec (/*@observer@*/ constraintExpr c) /*@*/
+{
+  
+  llassert (constraintExpr_isDefined (c) );
+ if (c->kind == binaryexpr )
+    {
+      constraintExprBinaryOpKind binOP;
+      constraintExpr t1, t2;
+      t1 = constraintExprData_binaryExprGetExpr1 (c->data);
+      t2 = constraintExprData_binaryExprGetExpr2 (c->data);
+
+      binOP = constraintExprData_binaryExprGetOp (c->data);
+      if (binOP == BINARYOP_MINUS)
+       if (constraintExpr_isLit (t2) && constraintExpr_getValue (t2) == 1 )
+         {
+           return TRUE;
+         }
+    }
+
+ return FALSE;
+}
+
+/*drl added 06-10-2002*/
+/* look for constraints like cexrp = cexrp + 1 */
+static bool decVar (/*@notnull@*/ constraint c) /*@*/
+{
+  constraintExpr t1;
+  if (c->ar != EQ)
+    {
+      return FALSE;
+    }
+  if (! isDec (c->expr ) )
+    return FALSE;
+
+  llassert (constraintExpr_isDefined (c->expr) );
+  llassert (c->expr->kind == binaryexpr);
+
+  t1 = constraintExprData_binaryExprGetExpr1 (c->expr->data);
+  if (constraintExpr_similar (c->lexpr, t1) )
+    return TRUE;
+
+  return FALSE;
+}
+
 /* look for constraints like cexrp = cexrp + 1 */
 static bool incVar (/*@notnull@*/ constraint c) /*@*/
 {
@@ -112,11 +166,53 @@ static bool increments (/*@observer@*/ constraint c,
     return FALSE;
 }
 
+
+static bool decrements (/*@observer@*/ constraint c,
+                       /*@observer@*/ constraintExpr var)
+{
+  llassert (constraint_isDefined (c) );
+
+  if (constraint_isUndefined (c) )
+    {
+      return FALSE;
+    }
+
+  llassert (decVar (c));
+  if (constraintExpr_similar (c->lexpr, var) )
+    return TRUE;
+  else
+    return FALSE;
+}
+
+/*drl added 06-10-2002 */
+/* this is a bit of a misnomer should probably it asserts equal or something ...
+ */
+static bool sets (/*@observer@*/ constraint c,
+                       /*@observer@*/ constraintExpr var)
+{
+  llassert (constraint_isDefined (c) );
+
+  if (constraint_isUndefined (c) )
+    {
+      return FALSE;
+    }
+  //Should put an llassert type check here at some point...
+  //  llassert (decVar (c));
+
+  if (constraintExpr_similar (c->lexpr, var) )
+    return TRUE;
+  else
+    return FALSE;
+}
+
+
 static bool canGetForTimes (/*@notnull@*/ exprNode forPred, /*@notnull@*/ exprNode forBody)
 {
   
   exprNode init, test, inc, t1, t2;
   lltok tok;
+
+  DPRINTF((message("Entering canGetForTimes") ));
   
   llassert (exprNode_isDefined (forPred) );
   llassert (exprNode_isDefined (forBody) );
@@ -168,12 +264,90 @@ static bool canGetForTimes (/*@notnull@*/ exprNode forPred, /*@notnull@*/ exprNo
 
        if (sRef_sameName (t1->sref, t2->sref) )
          {
+           DPRINTF((message("canGetForTimes: returning true") ));
            return TRUE;
          }
       }
   return FALSE;
 }
 
+/*drl added 6-10-2002*/
+static /*@only@*/ constraintList getGreaterThanConstraints (/*@observer@*/ constraintList c)
+{
+  constraintList ret;
+
+  ret = constraintList_makeNew ();
+  constraintList_elements (c, el)
+    {
+      llassert (constraint_isDefined (el));
+      if ( constraint_isUndefined (el)  )
+       continue;
+      
+      if (el->ar == GT || el->ar == GTE)
+       {
+         constraint temp;
+         temp = constraint_copy (el);
+
+         ret = constraintList_add (ret, temp);
+       }
+    }
+  end_constraintList_elements;
+
+  return ret;
+}
+
+/*drl added 6-10-2002*/
+static /*@only@*/ constraintList getEqualsConstraints (/*@observer@*/ constraintList c)
+{
+  constraintList ret;
+
+  ret = constraintList_makeNew ();
+  constraintList_elements (c, el)
+    {
+      llassert (constraint_isDefined (el));
+      if ( constraint_isUndefined (el)  )
+       continue;
+      
+      if (el->ar == EQ)
+       {
+         constraint temp;
+         temp = constraint_copy (el);
+
+         ret = constraintList_add (ret, temp);
+       }
+    }
+  end_constraintList_elements;
+
+  return ret;
+}
+
+
+/*drl added 6-10-2002*/
+static /*@only@*/ constraintList getDecConstraints (/*@observer@*/ constraintList c)
+{
+  constraintList ret;
+
+  DPRINTF(( message("getDecConstraints called with  %q ", constraintList_print (c) ) ));
+  
+  ret = constraintList_makeNew ();
+  constraintList_elements (c, el)
+    {
+      llassert (constraint_isDefined (el));
+
+      if (decVar (el) )
+       {
+         constraint temp;
+         temp = constraint_copy (el);
+         ret = constraintList_add (ret, temp);
+       }
+    }
+  end_constraintList_elements;
+
+  DPRINTF(( message("getDecConstraints returning %s ", constraintList_print (ret) ) ));
+  
+  return ret;
+}
+
 static /*@only@*/ constraintList getLessThanConstraints (/*@observer@*/ constraintList c)
 {
   constraintList ret;
@@ -219,56 +393,158 @@ static /*@only@*/ constraintList getIncConstraints (/*@observer@*/ constraintLis
   return ret;
 }
 
+static int lastHeuristicNumber;
+
+
 static /*@only@*/ constraintExpr getForTimes (/*@notnull@*/ exprNode forPred, /*@notnull@*/ exprNode forBody)
 {
   
   exprNode init, test, inc, t1, t2;
   constraintList ltCon;
   constraintList incCon;
+
+  constraintList grCon, eqCon, decCon;
+  
   constraintExpr ret;
   
   lltok tok;
-  
+
+  int numTestEnsures;
+    
   init  =  exprData_getTripleInit (forPred->edata);
   test  =  exprData_getTripleTest (forPred->edata);
   inc   =  exprData_getTripleInc (forPred->edata);
 
+  numTestEnsures = constraintList_size(test->trueEnsuresConstraints);
+  
   llassert (exprNode_isDefined (test) );
   llassert (exprNode_isDefined (inc) );
   
   ltCon =  getLessThanConstraints (test->trueEnsuresConstraints);
   incCon = getIncConstraints (inc->ensuresConstraints);
+
+  if (exprNode_isDefined(init) )
+    {
+      eqCon = getEqualsConstraints(init->ensuresConstraints);
+    }
+  else
+    {
+      eqCon = constraintList_makeNew();
+    }
+  
+
   
   DPRINTF (( message ("getForTimes: ltCon: %s from %s", constraintList_print (ltCon), constraintList_print (test->trueEnsuresConstraints) ) ));
   
   DPRINTF (( message ("getForTimes: incCon: %s from %s", constraintList_print (incCon), constraintList_print (inc->ensuresConstraints) ) ));
-   
+  
   constraintList_elements (ltCon, el) 
     {
       constraintList_elements (incCon, el2)
-      {
-       if ( increments (el2, el->lexpr) )
-         {
-           DPRINTF (( message ("getForTimes: %s increments %s", constraint_print (el2), constraint_print (el) ) ));
-           ret =  constraintExpr_copy (el->expr);
-           constraintList_free (ltCon);
-           constraintList_free (incCon);
-           return ret;
-
-         }
-       else
-         {
-           ;
-           DPRINTF (( message ("getForTimes: %s doesn't increment %s", constraint_print (el2), constraint_print (el) )   ));
-         }
-      }
+       {
+         if ( increments (el2, el->lexpr) )
+           {
+             DPRINTF (( message ("getForTimes: %s increments %s", constraint_print (el2), constraint_print (el) ) ));
+             // Ok now that we've have a constraint of the form for (..., i > N; i--)
+             //find out what/if i is initialized to
+             constraintList_elements (eqCon, el3)
+               {
+                 if (sets (el3, el->lexpr) )
+                   {
+                     // /*Fix it to work right */
+
+                     if (numTestEnsures == 1)
+                       lastHeuristicNumber = 1;
+                     else
+                       lastHeuristicNumber = 2;
+
+                     //                      TPRINTF((message("numTestEnsure = %d ", numTestEnsures) ));
+                     ret =  constraintExpr_makeSubtractExpr ( constraintExpr_copy(el->expr), constraintExpr_copy (el3->expr) );
+                     constraintList_free (ltCon);
+                     constraintList_free (incCon);
+                     constraintList_free (eqCon);
+                     return ret;
+                   }
+               }
+             end_constraintList_elements;            
+           }
+         else
+           {
+             DPRINTF (( message ("getForTimes: %s doesn't increment %s", constraint_print (el2), constraint_print (el) )   ));
+           }
+       }
       end_constraintList_elements;
     }
-
+  
   end_constraintList_elements;
 
   constraintList_free (ltCon);
   constraintList_free (incCon);
+
+
+  /* try decrement constraints */
+
+  
+  
+  grCon = getGreaterThanConstraints(test->trueEnsuresConstraints);
+  
+  decCon = getDecConstraints (inc->ensuresConstraints);
+
+  DPRINTF (( message ("getForTimes: grCon: %s from %s", constraintList_print (grCon), constraintList_print (test->trueEnsuresConstraints) ) ));
+  
+  DPRINTF (( message ("getForTimes: decCon: %s from %s", constraintList_print (decCon), constraintList_print (inc->ensuresConstraints) ) ));
+  
+  constraintList_elements (grCon, el) 
+    {
+      constraintList_elements (decCon, el2)
+       {
+         if ( decrements (el2, el->lexpr) )
+           {
+
+             DPRINTF (( message ("getForTimes: %s decrements %s", constraint_print (el2), constraint_print (el) ) ));
+             // Ok now that we've have a constraint of the form for (..., i > N; i--)
+             //find out what/if i is initialized to
+             constraintList_elements (eqCon, el3)
+               {
+                 if (sets (el3, el->lexpr) )
+                   {
+                     // /*Fix it to work right */
+
+                     if (numTestEnsures == 1)
+                       lastHeuristicNumber = 3;
+                     else
+                       lastHeuristicNumber = 4;
+                     
+                                     
+                     //                      TPRINTF((message("numTestEnsure = %d ", numTestEnsures) ));
+
+                     ret =  constraintExpr_makeSubtractExpr (constraintExpr_copy (el3->expr), constraintExpr_copy(el->expr) );
+                     
+                     constraintList_free (grCon);
+                     constraintList_free (decCon);
+                     constraintList_free (eqCon);
+
+                     return ret;
+                   }
+               }
+             end_constraintList_elements;            
+           }
+         else
+           {
+             DPRINTF (( message ("getForTimes: %s doesn't decrement %s", constraint_print (el2), constraint_print (el) )   ));
+           }
+       }
+      end_constraintList_elements;
+    }
+  
+  end_constraintList_elements;
+  
+
+  constraintList_free (grCon);
+  constraintList_free (decCon);
+  constraintList_free (eqCon);
+  
   
   DPRINTF (( message ("getForTimes: %s  %s resorting to ugly hack", exprNode_unparse (forPred), exprNode_unparse (forBody) ) ));
   if (! canGetForTimes (forPred, forBody) )
@@ -423,6 +699,127 @@ static void doAdjust (/*@unused@*/ exprNode e, /*@unused@*/ exprNode forPred, /*
   end_constraintList_elements;
 }
 
+
+/* drl added 05-31-2002*/
+/*this function tries to remove the @ location from a code string
+  so that it is legal C code  
+ */
+static cstring removeLocationInfo (/*@returned@*/ cstring codeStr)
+{
+  char * strPtr;
+
+  llassert (cstring_isDefined(codeStr) );
+  strPtr = cstring_toCharsSafe(codeStr);
+
+  while (*strPtr != NULL)
+    {
+      if (*strPtr == '@')
+       {
+         while ( (*strPtr !=NULL) && *strPtr != ')')
+           {
+             *strPtr = ' ';
+             strPtr++;
+           }
+       }
+      else
+       strPtr++;
+    }
+  return codeStr;
+}
+
+/*drl added 5-27-2002 this function may instrument the loop with
+  code to test the loop heuristics.
+
+  It returns an unparsed version of the instrumented code.
+ */
+
+cstring constraint_unparseInstrumentedLoop (exprNode e)
+{
+  exprNode forPred, forBody;
+  exprNode init, test, inc;
+  constraintExpr iterations;
+  int heuristicNum;
+  
+  cstring ret;
+
+  exprData data;
+
+  DPRINTF((message ("constraint_unparseInstrumentedLoop: entering function") ));
+  
+  data = e->edata;
+  
+  forPred =  exprData_getPairA (data);
+
+  forBody =  exprData_getPairB (data);
+
+    
+  
+  init  =  exprData_getTripleInit (forPred->edata);
+  test =   exprData_getTripleTest (forPred->edata);
+  inc  =   exprData_getTripleInc (forPred->edata);
+
+  /* we don't try to handle these in the loop heuristics so
+     don't try to handle them here
+  */
+  if  (exprNode_isError (test) || exprNode_isError (inc) )
+    {
+      DPRINTF((message("Not doing loop heuristics because for test or inc is empty") ));
+
+      ret = message ("printf(\"spl:no heuristic loop %%s at %s\\n\",getLoopNumber());\n %s %s", (fileloc_unparse(exprNode_loc(e) ) ), exprNode_unparse(forPred), exprNode_unparse(forBody) );
+
+      return ret;
+    }
+  
+  iterations = getForTimes (forPred, forBody );
+
+  heuristicNum = lastHeuristicNumber;
+  
+  if (constraintExpr_isDefined (iterations) )
+    {
+      cstring outputCode;
+
+      outputCode = message("{\nint iterations, expectedIterations;\n"
+                          "char * loopNumber;\n"
+                          "iterations = 0;\nloopNumber = getLoopNumber();"
+                            );
+      
+      outputCode = message("%q\n expectedIterations = (%s) + 1;",
+                          outputCode, removeLocationInfo(constraintExpr_unparse(iterations) )
+                          );
+      
+      outputCode = message("%q\n %s ",
+                          outputCode, exprNode_unparse(forPred) );
+      
+      outputCode = message("%q\n"
+                          "{\niterations++;"
+                          "\nprintf(\"spl:done loop %%s at %s for %%d iterations, expecting %%d (heuristic number %d)\\n\","
+                          " loopNumber, iterations, expectedIterations);\n",
+                          outputCode,fileloc_unparse(exprNode_loc(e)), heuristicNum   );
+      
+      outputCode = message("%q %s\n} ",
+                            outputCode, exprNode_unparse(forBody)
+                          );
+      
+      outputCode = message("%q\nprintf(\"spl:finished loop %%s at %s after %%d iterations(expecting %%d) (heuristic number %d) \\n\","
+                          "loopNumber, iterations, expectedIterations);\n"
+                          "free(loopNumber);\n"
+                          "}",
+                          outputCode,  fileloc_unparse(exprNode_loc(e)), heuristicNum );
+       
+      ret = outputCode;
+
+      
+      DPRINTF(( (message("constraint_unparseInstrumentedLoop: returning heuristic instrumented code ") )
+               ));
+      return ret;
+    }
+
+  DPRINTF((message("Not doing loop heuristics because we couldn't dtermine an estimate for the loop iterations") ));
+  ret = message ("printf(\"spl:no heuristic loop %%s at %s\\n\",getLoopNumber());\n %s %s", (fileloc_unparse(exprNode_loc(e) ) ), exprNode_unparse(forPred), exprNode_unparse(forBody) );
+    
+  return ret;
+}
+
 void exprNode_forLoopHeuristics ( exprNode e, exprNode forPred, exprNode forBody)
 {
   exprNode init, test, inc;
@@ -443,6 +840,9 @@ void exprNode_forLoopHeuristics ( exprNode e, exprNode forPred, exprNode forBody
       doAdjust ( e, forPred, forBody, iterations);
       constraintExpr_free (iterations);
     }
+
+
+  
 }
 
 
index 64d69195e149cb474951e0a5af61fc0fe603d7ca..01fbdad607e9d0d756639a7e6a60ff19a5ecafd4 100644 (file)
@@ -36,7 +36,6 @@
 # include "tokentable.h"
 # include "syntable.h"
 # include "lslinit.h"
-# include "lclinit.h"
 
 /* needed to parse init files */
 # include "shift.h"
@@ -53,8 +52,6 @@ static void LocalUserError (ltoken p_t, /*@temp@*/ char *p_msg)
 
 static /*@only@*/ ltoken nextToken;
 
-static /*@only@*/ /*@null@*/ inputStream s_initFile = inputStream_undefined;
-
 static void InitFile (void) /*@modifies nextToken@*/ ;
 static void InitLines (void) /*@modifies nextToken@*/ ;
 static void InitLine (void) /*@modifies nextToken@*/ ;
@@ -149,10 +146,9 @@ hasFirstChar (ltoken tok)
 }
 
 void
-lslinit_setInitFile (inputStream s)
+LSLProcessInitFile (void)
 {
-  llassert (inputStream_isUndefined (s_initFile));
-  s_initFile = s;
+  InitFile ();
 }
 
 /*
@@ -162,7 +158,8 @@ lslinit_setInitFile (inputStream s)
 **
 */
 
-static void lslinit_processInitFile (void)
+static void
+InitFile (void)
 {
   InitLines ();
   InitReduce (INITFILE1);
@@ -1495,8 +1492,8 @@ static /*@exposed@*/ ltoken insertSimpleToken (char *text)
   return (LSLInsertToken (LST_SIMPLEID, lsymbol_fromChars (text), 0, FALSE));
 }
 
-static void
-lslinit_initProcessInitFile (void)
+void
+LSLProcessInitFileInit (void)
 {
   int i;
 
@@ -1549,154 +1546,10 @@ lslinit_initProcessInitFile (void)
   nextToken = LSLScanNextToken ();            
 }
 
-void lslinit_process (void)
-  /*@globals undef g_symtab; @*/
-  /*@modifies g_symtab, internalState, fileSystem; @*/
-{
-  /*
-  ** Open init file provided by user, or use the default LCL init file 
-  */
-  
-  cstring larchpath = context_getLarchPath ();
-  inputStream initstream = inputStream_undefined;
-
-  setCodePoint ();
-
-  if (inputStream_isUndefined (s_initFile))
-    {
-      s_initFile = inputStream_create (cstring_makeLiteral (INITFILENAME), 
-                                      cstring_makeLiteralTemp (LCLINIT_SUFFIX),
-                                      FALSE);
-      
-      if (!inputStream_getPath (larchpath, s_initFile))
-       {
-         lldiagmsg (message ("Continuing without LCL init file: %s",
-                             inputStream_fileName (s_initFile)));
-       }
-      else 
-       {
-         if (!inputStream_open (s_initFile))
-           {
-             lldiagmsg (message ("Continuing without LCL init file: %s",
-                                 inputStream_fileName (s_initFile)));
-           }
-       }
-    }
-  else 
-    {
-      if (!inputStream_open (s_initFile))
-       {
-         lldiagmsg (message ("Continuing without LCL init file: %s",
-                             inputStream_fileName (s_initFile)));
-       }
-    }
-
-  /* Initialize checker */
-
-  lsymbol_initMod ();
-  LCLSynTableInit ();
-
-  setCodePoint ();
-
-  LCLSynTableReset ();
-  LCLTokenTableInit ();
-
-  setCodePoint ();
-
-  LCLScanLineInit ();
-  setCodePoint ();
-  LCLScanLineReset ();
-  setCodePoint ();
-  LCLScanInit ();
 
-  setCodePoint ();
 
-  /* need this to initialize LCL checker */
 
-  llassert (inputStream_isDefined (s_initFile));      
-  if (inputStream_isOpen (s_initFile))
-    {
-      setCodePoint ();
-
-      LCLScanReset (s_initFile);
-      lclinit_initMod ();
-      lclinit_reset ();
 
-      setCodePoint ();
-      lclinit_process ();
-      lclinit_cleanup ();
-
-      setCodePoint ();
-      check (inputStream_close (s_initFile));
-    }
-  
-  /* Initialize LSL init files, for parsing LSL signatures from LSL */
-  
-  initstream = inputStream_create (cstring_makeLiteral ("lslinit.lsi"), 
-                                   cstring_makeLiteralTemp (".lsi"),
-                                   FALSE);
-  
-  if (!inputStream_getPath (larchpath, initstream))
-    {
-      lldiagmsg (message ("Continuing without LSL init file: %s",
-                         inputStream_fileName (initstream)));
-    }
-  else 
-    {
-      if (!inputStream_open (initstream))
-       {
-         lldiagmsg (message ("Continuing without LSL init file: %s",
-                             inputStream_fileName (initstream)));
-       }
-    }
-      
-  setCodePoint ();
-  lsynTableInit ();
-  lsynTableReset ();
 
-  setCodePoint ();
-  ltokenTableInit ();
 
-  setCodePoint ();
-  lscanLineInit ();
-  lscanLineReset ();
-  LSLScanInit ();
 
-  if (inputStream_isOpen (initstream))
-    {
-      setCodePoint ();
-      LSLScanReset (initstream);
-      lslinit_initProcessInitFile ();
-      lslinit_processInitFile ();
-      check (inputStream_close (initstream));
-    }
-      
-  inputStream_free (initstream);
-  
-  if (lclHadError ())
-    {
-      lclplainerror 
-       (cstring_makeLiteral ("LSL init file error.  Attempting to continue."));
-    }
-  
-  setCodePoint ();
-  g_symtab = symtable_new ();
-  
-  /* 
-  ** sort_init must come after symtab has been initialized 
-  */
-  sort_init ();
-  abstract_init ();
-  setCodePoint ();
-  
-  /* 
-  ** Equivalent to importing old spec_csupport.lcl
-  ** define immutable LCL type "bool" and bool constants TRUE and FALSE
-  ** and initialized them to be equal to LSL's "true" and "false".
-  **
-  ** Reads in CTrait.syms (derived from CTrait.lsl) on LARCH_PATH.
-  */
-      
-  LCLBuiltins (); 
-  LCLReportEolTokens (FALSE);
-}
index 41757a5d070f666bab31005f000fa483a4ce7a62..8a825c95a988f388e79fa1af28bd93984cbcc623 100644 (file)
@@ -42,7 +42,7 @@ typedef enum
 
 /* char *s, anytype v */
 /*@notfunction@*/
-# define GETPRINTF(s,v) (snprintf (strbuf, 64, s, v), mstring_copy (strbuf))
+# define GETPRINTF(s,v) (sprintf (strbuf, s, v), mstring_copy (strbuf))
 
 /*
 ** returns control code indicated by *c, and
@@ -236,7 +236,7 @@ message (/*@temp@*/ char *fmt, ...)
              ret = mstring_concatFree (ret, GETPRINTF ("%d", lastint));
              break;
            case XFLOAT:
-             ret = mstring_concatFree (ret, GETPRINTF ("%.2lf", va_arg (pvar, double)));
+             ret = mstring_concatFree (ret, GETPRINTF ("%e", va_arg (pvar, double)));
              break;
            case XBOOL:
              ret = mstring_concatFree1 (ret, cstring_toCharsSafe 
index a78861f59e99b1ec91beff48015b79e7c918edfc..6a0fea6f6d0b0483140b6503225be43434c34ef0 100644 (file)
--- a/src/osd.c
+++ b/src/osd.c
@@ -1033,7 +1033,6 @@ cstring osd_absolutePath (cstring cwd, cstring filename)
 
 cstring osd_outputPath (cstring filename)
 {
-  /*@i2534 fix this junky code once and for all! */
 # if defined (UNIX) || defined (OS2)
   char *rel_buffer;
   char *rel_buf_p;
@@ -1065,16 +1064,21 @@ cstring osd_outputPath (cstring filename)
       else
        {
          /*@i324 ! splint didn't report an errors for: return ++path_p; */
-         return cstring_fromCharsNew (path_p + 1);
+         return cstring_fromCharsNew (++path_p);
        }
     }
   else
     {
+
+      /* drl   2002-04-14 I had to put this code back*/
+      /* the case that needs it is when splint is given an absolute path name of a file outside of the current directory and the subdirectories below the current directory. e.g. cd /home/; splint /tmp/prog.c
+       */
+      
       /* evans 2002-02-05 This is horrible code, which I've removed.  I couldn't find any
       ** test cases that need it, so I hope I'm not breaking anything.
       */
 
-# if 0      
+
       if (*path_p != '\0')
         {
           --cwd_p;
@@ -1091,7 +1095,7 @@ cstring osd_outputPath (cstring filename)
 
       /* Find out how many directory levels in cwd were *not* matched.  */
       while (*cwd_p != '\0')
-       {s
+       {
          if (osd_isConnectChar (*cwd_p++))
            unmatched_slash_count++;
        }
@@ -1102,7 +1106,8 @@ cstring osd_outputPath (cstring filename)
        {
          return cstring_copy (filename);
        }
-# endif
+
+      /*drl 04-14-2002 end previously removed code */
       
       /* For each of them, put a `../' at the beginning of the short name.  */
       while (unmatched_slash_count-- > 0)
@@ -1131,7 +1136,6 @@ cstring osd_outputPath (cstring filename)
         } /*@-usereleased@*/
       while ((*rel_buf_p++ = *path_p++) != '\0') ;
 
-      
       /*@=usereleased@*/ /*@i523! shouldn't need these */
       --rel_buf_p;
 
index 19df7734c5cba921ed0bf78cb3bbf25f3397ee12..d2849875930ea90304fe65f189c3a0eea4b2d7a6 100644 (file)
@@ -173,6 +173,59 @@ qtype qtype_resolve (/*@returned@*/ qtype q)
   return q;
 }
 
+/* drl 04-24-2002 added for code generation */
+bool qtype_isArray (qtype q) /*@*/
+{
+  if (qtype_isDefined (q))
+    {
+      bool ret;
+      ret = ctype_isArray(q->type);
+      return ret;
+    }
+  else
+    {
+      return FALSE;
+    }
+}
+
+bool qtype_isFixedArray (qtype q) /*@*/
+{
+  if (qtype_isDefined (q))
+    {
+      bool ret;
+      ret = ctype_isFixedArray(q->type);
+      return ret;
+    }
+  else
+    {
+      return FALSE;
+    }
+}
+
+cstring qtype_unparseArrayType (qtype q)
+{
+  cstring ret, temp;
+
+  llassert( qtype_isDefined (q) &&( qtype_isFixedArray(q)|| qtype_isArray(q) ) );
+  
+  temp = message ("%q%s", qualList_unparse (q->quals), ctype_unparse (q->type) );
+  ret = cstring_beforeChar(temp, '[');
+  cstring_free(temp);
+  return ret;
+}
+
+cstring qtype_unparseArraySize (qtype q)
+{
+  cstring ret, temp;
+  
+  llassert( qtype_isDefined (q) && qtype_isFixedArray(q) );
+  
+  temp = message ("%s", ctype_unparse (q->type) );
+  ret = cstring_copy(cstring_afterChar(temp, '[') );
+  cstring_free(temp);
+  return ret;
+}
+
 cstring qtype_unparse (qtype q)
 {
   if (qtype_isDefined (q))
@@ -210,15 +263,18 @@ qtype qtype_newQbase (qtype q1, qtype q2)
   return q1;
 }
 
-void qtype_adjustPointers (pointers n, qtype q)
+void qtype_adjustPointers (int n, qtype q)
 {
   if (qtype_isDefined (q))
     {
-      DPRINTF (("Pointers: %s %s", pointers_unparse (n), qtype_unparse (q)));
       q->type = ctype_adjustPointers (n, q->type);
-    }
 
-  pointers_free (n);
+      if (hasInnerConstQual() )
+       {
+         q->quals = qualList_add (q->quals,   qual_createPlain( QU_INNERCONST) );
+       }
+      resetInnerConstQual ();
+    }
 }
 
 # ifndef NOLCL
index 08af30e14b583481e2203fb471a6ca8c585fb874..ba57d116752b0288ddc99fc5d1764f6f360da804 100644 (file)
@@ -86,84 +86,81 @@ qual qual_fromInt (int q)
 
 cstring qual_unparse (qual q)
 {
-  if (q->kind == QU_USERANNOT) 
-    {
-      return (annotationInfo_unparse (q->info));
-    } 
-  else 
-    {
-      switch (q->kind)
-       {
-       case QU_UNKNOWN:    return cstring_makeLiteralTemp ("unknown");
-       case QU_ABSTRACT:   return cstring_makeLiteralTemp ("abstract");
-       case QU_CONCRETE:   return cstring_makeLiteralTemp ("concrete");
-       case QU_MUTABLE:    return cstring_makeLiteralTemp ("mutable");
-       case QU_IMMUTABLE:  return cstring_makeLiteralTemp ("immutable");
-       case QU_SHORT:      return cstring_makeLiteralTemp ("short");
-       case QU_LONG:       return cstring_makeLiteralTemp ("long");
-       case QU_SIGNED:     return cstring_makeLiteralTemp ("signed");
-       case QU_UNSIGNED:   return cstring_makeLiteralTemp ("unsigned");
-       case QU_CONST:      return cstring_makeLiteralTemp ("const");
-       case QU_RESTRICT:   return cstring_makeLiteralTemp ("restrict");
-       case QU_VOLATILE:   return cstring_makeLiteralTemp ("volatile");
-       case QU_INLINE:     return cstring_makeLiteralTemp ("inline");
-       case QU_EXTERN:     return cstring_makeLiteralTemp ("extern");
-       case QU_STATIC:     return cstring_makeLiteralTemp ("static");
-       case QU_AUTO:       return cstring_makeLiteralTemp ("auto");
-       case QU_REGISTER:   return cstring_makeLiteralTemp ("register");
-       case QU_OUT:        return cstring_makeLiteralTemp ("out");
-       case QU_IN:         return cstring_makeLiteralTemp ("in");
-       case QU_RELDEF:     return cstring_makeLiteralTemp ("reldef");
-       case QU_ONLY:       return cstring_makeLiteralTemp ("only");
-       case QU_IMPONLY:    return cstring_makeLiteralTemp ("only");
-       case QU_PARTIAL:    return cstring_makeLiteralTemp ("partial");
-       case QU_SPECIAL:    return cstring_makeLiteralTemp ("special");
-       case QU_KEEP:       return cstring_makeLiteralTemp ("keep");
-       case QU_KEPT:       return cstring_makeLiteralTemp ("kept");
-       case QU_YIELD:      return cstring_makeLiteralTemp ("yield");
-       case QU_TEMP:       return cstring_makeLiteralTemp ("temp");
-       case QU_SHARED:     return cstring_makeLiteralTemp ("shared");
-       case QU_UNIQUE:     return cstring_makeLiteralTemp ("unique");
-       case QU_UNCHECKED:  return cstring_makeLiteralTemp ("unchecked");
-       case QU_CHECKED:    return cstring_makeLiteralTemp ("checked");
-       case QU_CHECKMOD:   return cstring_makeLiteralTemp ("checkmod");
-       case QU_CHECKEDSTRICT: return cstring_makeLiteralTemp ("checkedstrict");
-       case QU_TRUENULL:   return cstring_makeLiteralTemp ("truenull");
-       case QU_FALSENULL:  return cstring_makeLiteralTemp ("falsenull");
-       case QU_NULL:       return cstring_makeLiteralTemp ("null");
-       case QU_ISNULL:     return cstring_makeLiteralTemp ("isnull");
-       case QU_RELNULL:    return cstring_makeLiteralTemp ("relnull");
-       case QU_NOTNULL:    return cstring_makeLiteralTemp ("notnull");
-       case QU_NULLTERMINATED: return cstring_makeLiteralTemp ("nullterminated");
-       case QU_RETURNED:   return cstring_makeLiteralTemp ("returned");
-       case QU_EXPOSED:    return cstring_makeLiteralTemp ("exposed");
-       case QU_EXITS:      return cstring_makeLiteralTemp ("noreturn");
-       case QU_MAYEXIT:    return cstring_makeLiteralTemp ("maynotreturn");
-       case QU_UNUSED:     return cstring_makeLiteralTemp ("unused");
-       case QU_EXTERNAL:   return cstring_makeLiteralTemp ("external");
-       case QU_SEF:        return cstring_makeLiteralTemp ("sef");
-       case QU_OBSERVER:   return cstring_makeLiteralTemp ("observer");
-       case QU_REFCOUNTED: return cstring_makeLiteralTemp ("refcounted"); 
-       case QU_REFS:       return cstring_makeLiteralTemp ("refs"); 
-       case QU_NEWREF:     return cstring_makeLiteralTemp ("newref"); 
-       case QU_KILLREF:    return cstring_makeLiteralTemp ("killref"); 
-       case QU_TEMPREF:    return cstring_makeLiteralTemp ("tempref"); 
-       case QU_OWNED:      return cstring_makeLiteralTemp ("owned");
-       case QU_DEPENDENT:  return cstring_makeLiteralTemp ("dependent");
-       case QU_NEVEREXIT:  return cstring_makeLiteralTemp ("alwaysreturns");
-       case QU_TRUEEXIT:   return cstring_makeLiteralTemp ("noreturnwhentrue");
-       case QU_FALSEEXIT:  return cstring_makeLiteralTemp ("noreturnwhenfalse");
-       case QU_UNDEF:      return cstring_makeLiteralTemp ("undef");
-       case QU_KILLED:     return cstring_makeLiteralTemp ("killed");
-       case QU_PRINTFLIKE: return cstring_makeLiteralTemp ("printflike");
-       case QU_SCANFLIKE:  return cstring_makeLiteralTemp ("scanflike");
-       case QU_MESSAGELIKE:return cstring_makeLiteralTemp ("messagelike");
-       case QU_SETBUFFERSIZE: return cstring_makeLiteralTemp("<qsetbuffersize>");
-       case QU_LAST:       return cstring_makeLiteralTemp ("< last >");
-       case QU_USERANNOT:  return cstring_makeLiteralTemp ("<user>");
-       }
-    }
-  
+  if (q->kind == QU_USERANNOT) {
+    return (annotationInfo_unparse (q->info));
+  } else {
+    switch (q->kind)
+      {
+      case QU_UNKNOWN:    return cstring_makeLiteralTemp ("unknown");
+      case QU_ABSTRACT:   return cstring_makeLiteralTemp ("abstract");
+      case QU_CONCRETE:   return cstring_makeLiteralTemp ("concrete");
+      case QU_MUTABLE:    return cstring_makeLiteralTemp ("mutable");
+      case QU_IMMUTABLE:  return cstring_makeLiteralTemp ("immutable");
+      case QU_SHORT:      return cstring_makeLiteralTemp ("short");
+      case QU_LONG:       return cstring_makeLiteralTemp ("long");
+      case QU_SIGNED:     return cstring_makeLiteralTemp ("signed");
+      case QU_UNSIGNED:   return cstring_makeLiteralTemp ("unsigned");
+      case QU_CONST:      return cstring_makeLiteralTemp ("const");
+      case QU_VOLATILE:   return cstring_makeLiteralTemp ("volatile");
+      case QU_INLINE:     return cstring_makeLiteralTemp ("inline");
+      case QU_EXTERN:     return cstring_makeLiteralTemp ("extern");
+      case QU_STATIC:     return cstring_makeLiteralTemp ("static");
+      case QU_AUTO:       return cstring_makeLiteralTemp ("auto");
+      case QU_REGISTER:   return cstring_makeLiteralTemp ("register");
+      case QU_OUT:        return cstring_makeLiteralTemp ("out");
+      case QU_IN:         return cstring_makeLiteralTemp ("in");
+      case QU_RELDEF:     return cstring_makeLiteralTemp ("reldef");
+      case QU_ONLY:       return cstring_makeLiteralTemp ("only");
+      case QU_IMPONLY:    return cstring_makeLiteralTemp ("only");
+      case QU_PARTIAL:    return cstring_makeLiteralTemp ("partial");
+      case QU_SPECIAL:    return cstring_makeLiteralTemp ("special");
+      case QU_KEEP:       return cstring_makeLiteralTemp ("keep");
+      case QU_KEPT:       return cstring_makeLiteralTemp ("kept");
+      case QU_YIELD:      return cstring_makeLiteralTemp ("yield");
+      case QU_TEMP:       return cstring_makeLiteralTemp ("temp");
+      case QU_SHARED:     return cstring_makeLiteralTemp ("shared");
+      case QU_UNIQUE:     return cstring_makeLiteralTemp ("unique");
+      case QU_UNCHECKED:  return cstring_makeLiteralTemp ("unchecked");
+      case QU_CHECKED:    return cstring_makeLiteralTemp ("checked");
+      case QU_CHECKMOD:   return cstring_makeLiteralTemp ("checkmod");
+      case QU_CHECKEDSTRICT: return cstring_makeLiteralTemp ("checkedstrict");
+      case QU_TRUENULL:   return cstring_makeLiteralTemp ("truenull");
+      case QU_FALSENULL:  return cstring_makeLiteralTemp ("falsenull");
+      case QU_NULL:       return cstring_makeLiteralTemp ("null");
+      case QU_ISNULL:     return cstring_makeLiteralTemp ("isnull");
+      case QU_RELNULL:    return cstring_makeLiteralTemp ("relnull");
+      case QU_NOTNULL:    return cstring_makeLiteralTemp ("notnull");
+      case QU_NULLTERMINATED: return cstring_makeLiteralTemp ("nullterminated");
+      case QU_RETURNED:   return cstring_makeLiteralTemp ("returned");
+      case QU_EXPOSED:    return cstring_makeLiteralTemp ("exposed");
+      case QU_EXITS:      return cstring_makeLiteralTemp ("noreturn");
+      case QU_MAYEXIT:    return cstring_makeLiteralTemp ("maynotreturn");
+      case QU_UNUSED:     return cstring_makeLiteralTemp ("unused");
+      case QU_EXTERNAL:   return cstring_makeLiteralTemp ("external");
+      case QU_SEF:        return cstring_makeLiteralTemp ("sef");
+      case QU_OBSERVER:   return cstring_makeLiteralTemp ("observer");
+      case QU_REFCOUNTED: return cstring_makeLiteralTemp ("refcounted"); 
+      case QU_REFS:       return cstring_makeLiteralTemp ("refs"); 
+      case QU_NEWREF:     return cstring_makeLiteralTemp ("newref"); 
+      case QU_KILLREF:    return cstring_makeLiteralTemp ("killref"); 
+      case QU_TEMPREF:    return cstring_makeLiteralTemp ("tempref"); 
+      case QU_OWNED:      return cstring_makeLiteralTemp ("owned");
+      case QU_DEPENDENT:  return cstring_makeLiteralTemp ("dependent");
+      case QU_NEVEREXIT:  return cstring_makeLiteralTemp ("alwaysreturns");
+      case QU_TRUEEXIT:   return cstring_makeLiteralTemp ("noreturnwhentrue");
+      case QU_FALSEEXIT:  return cstring_makeLiteralTemp ("noreturnwhenfalse");
+      case QU_UNDEF:      return cstring_makeLiteralTemp ("undef");
+      case QU_KILLED:     return cstring_makeLiteralTemp ("killed");
+      case QU_PRINTFLIKE: return cstring_makeLiteralTemp ("printflike");
+      case QU_SCANFLIKE:  return cstring_makeLiteralTemp ("scanflike");
+      case QU_MESSAGELIKE:return cstring_makeLiteralTemp ("messagelike");
+      case QU_SETBUFFERSIZE: return cstring_makeLiteralTemp("<qsetbuffersize>");
+      case QU_LAST:       return cstring_makeLiteralTemp ("< last >");
+      case QU_USERANNOT:  return cstring_makeLiteralTemp ("<user>");
+      case QU_INNERCONST:  return cstring_makeLiteralTemp ("");
+      }
+  }
+
   BADEXIT;
 }
 
@@ -229,5 +226,47 @@ extern qual qual_undump (char **s)
       return qual_createPlain (q);
     }
 }
+/*drl added 04-26-2002*/
+static bool innerConstQual = FALSE;
+
+extern void setInnerConstQual ()
+{
+  innerConstQual = TRUE;
+}
+/*drl added 04-26-2002*/
+extern void resetInnerConstQual ()
+{
+  innerConstQual = FALSE;
+}
+/*drl added 04-26-2002*/
+bool hasInnerConstQual()
+{
+  return innerConstQual;
+}
+/*drl added 04-26-2002*/
+/*assume fullId is something like type * * id */
+cstring insertInnerConstQual(/*@only@*/cstring fullId)
+{
+  cstring tmp, tmp2, tmp3, ret;
+
+  tmp = cstring_afterChar (fullId, '*');
+
+  DPRINTF( (message("insertInnerConstQual: %s", tmp) ));
+  
+  tmp2 = cstring_copy ( (tmp + 1) );
+  if (cstring_isUndefined(tmp2) )
+    {
+      llassert(FALSE);
+      return fullId;
+    }
+
+
+  tmp3 = cstring_beforeChar (fullId, '*');
 
+  ret = cstring_concatChars(tmp3, " * const ");
+
+  ret = cstring_concat(ret, tmp2);
+
+  return ret;
+}
 
index 39182b6c6f1e3d7e65c0e33198911d597775c98d..08e2bf728a46f213baf55492d7a0c5f7b3fa9516 100644 (file)
@@ -74,13 +74,6 @@ qualList_grow (/*@notnull@*/ qualList s)
   sfree (oldelements);
 }
 
-qualList qualList_single (qual el)
-{
-  /*@-unqualifiedtrans@*/ /* must be only */
-  return (qualList_add (qualList_undefined, el));
-  /*@=unqualifiedtrans@*/
-}
-
 qualList qualList_add (qualList s, qual el)
 {
   if (qualList_isUndefined (s))
@@ -222,4 +215,18 @@ bool qualList_hasNullTerminatedQualifier(qualList s) {
 
 /* end modification/s */        
 
+/* drl added 04-26-2002 */
+bool qualList_hasInnerConstQualifier (qualList s)
+{
+  if (qualList_isDefined (s))
+    {
+      qualList_elements (s, q)
+       {
+         if (q->kind == QU_INNERCONST)
+           return TRUE;
+       }
+      end_qualList_elements;
+    }
 
+  return FALSE;
+}
index 691b14fe4fc81c7cc4e8974aa8c03e339efb6bd6..f6ad60523f99fca5cb147dad07968786adc7625a 100644 (file)
@@ -7315,9 +7315,7 @@ sRef_makeConst (ctype ct)
   /* start modification */
   s->bufinfo.bufstate = BB_NULLTERMINATED;
   /* end modification */
-
-  /* evans 2002-04-22: added isManifestBool to avoid errors for -boolfalse initializations */
-  if (!ctype_isManifestBool (ct) && ctype_isUA (ct)) 
+  if (ctype_isUA (ct))
     {
       typeId uid = ctype_typeId (ct);
       uentry te = usymtab_getTypeEntrySafe (uid);
@@ -7328,6 +7326,7 @@ sRef_makeConst (ctype ct)
        }
     }
   
+  
   s->oaliaskind = s->aliaskind;
   s->oexpkind = s->expkind;
 
@@ -10059,6 +10058,9 @@ void sRef_setNotNullTerminatedState(sRef p_s) {
    }
 }
 
+/* these next three function are used by the nullterminated checking only.
+   They are not directly realted to the buffer bounds checking
+*/
 void sRef_setLen(sRef p_s, int len) {
    if (sRef_isReasonable (p_s) && sRef_isNullTerminated(p_s)) 
      {
index 15b7d4fe5e83c5d567a88abbcbf01ea4329bbc6c..02a32ccb3c1ca1c3001e75a09b304741d45dc2f6 100644 (file)
@@ -51,8 +51,8 @@
 /* < end of bison.head > */
 
 
-/*  A Bison parser, made from signature.y
-    by GNU Bison version 1.28  */
+/* A Bison parser, made from signature.y
+   by GNU bison 1.30.  */
 
 #define YYBISON 1  /* Identify Bison output.  */
 
 #define yychar lslchar
 #define yydebug lsldebug
 #define yynerrs lslnerrs
-#define        LST_SIMPLEID    257
-#define        LST_LOGICALOP   258
-#define        LST_EQOP        259
-#define        LST_SIMPLEOP    260
-#define        LST_MAPSYM      261
-#define        LST_FIELDMAPSYM 262
-#define        LST_MARKERSYM   263
-#define        LST_ifTOKEN     264
-#define        LST_thenTOKEN   265
-#define        LST_elseTOKEN   266
-#define        LST_LBRACKET    267
-#define        LST_RBRACKET    268
-#define        LST_SELECTSYM   269
-#define        LST_SEPSYM      270
-#define        LST_OPENSYM     271
-#define        LST_CLOSESYM    272
-#define        LST_COLON       273
-#define        LST_COMMA       274
-#define        LST_EOL 275
-#define        LST_COMMENTSYM  276
-#define        LST_WHITESPACE  277
-#define        LST_QUANTIFIERSYM       278
-#define        LST_EQUATIONSYM 279
-#define        LST_EQSEPSYM    280
-#define        LST_COMPOSESYM  281
-#define        LST_LPAR        282
-#define        LST_RPAR        283
-#define        LST_assertsTOKEN        284
-#define        LST_assumesTOKEN        285
-#define        LST_byTOKEN     286
-#define        LST_convertsTOKEN       287
-#define        LST_enumerationTOKEN    288
-#define        LST_equationsTOKEN      289
-#define        LST_exemptingTOKEN      290
-#define        LST_forTOKEN    291
-#define        LST_generatedTOKEN      292
-#define        LST_impliesTOKEN        293
-#define        LST_includesTOKEN       294
-#define        LST_introducesTOKEN     295
-#define        LST_ofTOKEN     296
-#define        LST_partitionedTOKEN    297
-#define        LST_traitTOKEN  298
-#define        LST_tupleTOKEN  299
-#define        LST_unionTOKEN  300
-#define        LST_BADTOKEN    301
+# define       LST_SIMPLEID    257
+# define       LST_LOGICALOP   258
+# define       LST_EQOP        259
+# define       LST_SIMPLEOP    260
+# define       LST_MAPSYM      261
+# define       LST_FIELDMAPSYM 262
+# define       LST_MARKERSYM   263
+# define       LST_ifTOKEN     264
+# define       LST_thenTOKEN   265
+# define       LST_elseTOKEN   266
+# define       LST_LBRACKET    267
+# define       LST_RBRACKET    268
+# define       LST_SELECTSYM   269
+# define       LST_SEPSYM      270
+# define       LST_OPENSYM     271
+# define       LST_CLOSESYM    272
+# define       LST_COLON       273
+# define       LST_COMMA       274
+# define       LST_EOL 275
+# define       LST_COMMENTSYM  276
+# define       LST_WHITESPACE  277
+# define       LST_QUANTIFIERSYM       278
+# define       LST_EQUATIONSYM 279
+# define       LST_EQSEPSYM    280
+# define       LST_COMPOSESYM  281
+# define       LST_LPAR        282
+# define       LST_RPAR        283
+# define       LST_assertsTOKEN        284
+# define       LST_assumesTOKEN        285
+# define       LST_byTOKEN     286
+# define       LST_convertsTOKEN       287
+# define       LST_enumerationTOKEN    288
+# define       LST_equationsTOKEN      289
+# define       LST_exemptingTOKEN      290
+# define       LST_forTOKEN    291
+# define       LST_generatedTOKEN      292
+# define       LST_impliesTOKEN        293
+# define       LST_includesTOKEN       294
+# define       LST_introducesTOKEN     295
+# define       LST_ofTOKEN     296
+# define       LST_partitionedTOKEN    297
+# define       LST_traitTOKEN  298
+# define       LST_tupleTOKEN  299
+# define       LST_unionTOKEN  300
+# define       LST_BADTOKEN    301
 
 
 
@@ -147,182 +147,203 @@ typedef union {
   /*@-redef@*/ /*@-matchfields@*/ 
 } YYSTYPE;
 #ifndef YYDEBUG
-#define YYDEBUG 1
+# define YYDEBUG 1
 #endif
 
 #include <stdio.h>
 
-#ifndef __cplusplus
-#ifndef __STDC__
-#define const
-#endif
-#endif
-
 
 
 #define        YYFINAL         62
 #define        YYFLAG          -32768
 #define        YYNTBASE        48
 
+/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
 #define YYTRANSLATE(x) ((unsigned)(x) <= 301 ? yytranslate[x] : 62)
 
-static const char yytranslate[] = {     0,
-     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,
-     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,
-    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-    47
+/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
+static const char yytranslate[] =
+{
+       0,     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,     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,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47
 };
 
 #if YYDEBUG != 0
-static const short yyprhs[] = {     0,
-     0,     2,     4,     7,    11,    13,    15,    22,    24,    27,
-    30,    34,    38,    43,    48,    54,    58,    63,    68,    74,
-    77,    81,    85,    87,    89,    91,    92,    94,    96,   100,
-   102,   104,   108,   109,   111,   113,   117,   119
+static const short yyprhs[] =
+{
+       0,     0,     2,     4,     7,    11,    13,    15,    22,    24,
+      27,    30,    34,    38,    43,    48,    54,    58,    63,    68,
+      74,    77,    81,    85,    87,    89,    91,    92,    94,    96,
+     100,   102,   104,   108,   109,   111,   113,   117,   119
 };
-
-static const short yyrhs[] = {    49,
-     0,    50,     0,    49,    50,     0,    51,    19,    57,     0,
-    61,     0,    52,     0,    10,     9,    11,     9,    12,     9,
-     0,    53,     0,     9,    53,     0,    53,     9,     0,     9,
-    53,     9,     0,    17,    54,    18,     0,     9,    17,    54,
-    18,     0,    17,    54,    18,     9,     0,     9,    17,    54,
-    18,     9,     0,    13,    54,    14,     0,     9,    13,    54,
-    14,     0,    13,    54,    14,     9,     0,     9,    13,    54,
-    14,     9,     0,    15,     3,     0,     9,    15,     3,     0,
-     9,     8,     3,     0,     6,     0,     4,     0,     5,     0,
-     0,    55,     0,     9,     0,    55,    56,     9,     0,    20,
-     0,    16,     0,    58,     7,    60,     0,     0,    59,     0,
-    60,     0,    59,    20,    60,     0,     3,     0,     3,     0
+static const short yyrhs[] =
+{
+      49,     0,    50,     0,    49,    50,     0,    51,    19,    57,
+       0,    61,     0,    52,     0,    10,     9,    11,     9,    12,
+       9,     0,    53,     0,     9,    53,     0,    53,     9,     0,
+       9,    53,     9,     0,    17,    54,    18,     0,     9,    17,
+      54,    18,     0,    17,    54,    18,     9,     0,     9,    17,
+      54,    18,     9,     0,    13,    54,    14,     0,     9,    13,
+      54,    14,     0,    13,    54,    14,     9,     0,     9,    13,
+      54,    14,     9,     0,    15,     3,     0,     9,    15,     3,
+       0,     9,     8,     3,     0,     6,     0,     4,     0,     5,
+       0,     0,    55,     0,     9,     0,    55,    56,     9,     0,
+      20,     0,    16,     0,    58,     7,    60,     0,     0,    59,
+       0,    60,     0,    59,    20,    60,     0,     3,     0,     3,
+       0
 };
 
 #endif
 
 #if YYDEBUG != 0
-static const short yyrline[] = { 0,
-   139,   141,   146,   150,   156,   158,   162,   164,   166,   168,
-   170,   172,   174,   176,   178,   181,   184,   187,   190,   193,
-   196,   201,   206,   208,   210,   213,   215,   218,   220,   223,
-   225,   228,   231,   233,   236,   238,   241,   247
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const short yyrline[] =
+{
+       0,   139,   141,   146,   150,   156,   158,   162,   164,   166,
+     168,   170,   172,   174,   176,   178,   181,   184,   187,   190,
+     193,   196,   201,   206,   208,   210,   213,   215,   218,   220,
+     223,   225,   228,   231,   233,   236,   238,   241,   247
 };
 #endif
 
 
-#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
-
-static const char * const yytname[] = {   "$","error","$undefined.","LST_SIMPLEID",
-"LST_LOGICALOP","LST_EQOP","LST_SIMPLEOP","LST_MAPSYM","LST_FIELDMAPSYM","LST_MARKERSYM",
-"LST_ifTOKEN","LST_thenTOKEN","LST_elseTOKEN","LST_LBRACKET","LST_RBRACKET",
-"LST_SELECTSYM","LST_SEPSYM","LST_OPENSYM","LST_CLOSESYM","LST_COLON","LST_COMMA",
-"LST_EOL","LST_COMMENTSYM","LST_WHITESPACE","LST_QUANTIFIERSYM","LST_EQUATIONSYM",
-"LST_EQSEPSYM","LST_COMPOSESYM","LST_LPAR","LST_RPAR","LST_assertsTOKEN","LST_assumesTOKEN",
-"LST_byTOKEN","LST_convertsTOKEN","LST_enumerationTOKEN","LST_equationsTOKEN",
-"LST_exemptingTOKEN","LST_forTOKEN","LST_generatedTOKEN","LST_impliesTOKEN",
-"LST_includesTOKEN","LST_introducesTOKEN","LST_ofTOKEN","LST_partitionedTOKEN",
-"LST_traitTOKEN","LST_tupleTOKEN","LST_unionTOKEN","LST_BADTOKEN","top","operatorList",
-"operator","name","opForm","anyOp","middle","placeList","separator","signature",
-"domain","sortList","sortId","opId", NULL
+#if YYDEBUG != 0 || defined YYERROR_VERBOSE
+
+/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
+static const char *const yytname[] =
+{
+  "$", "error", "$undefined.", "LST_SIMPLEID", "LST_LOGICALOP", "LST_EQOP", 
+  "LST_SIMPLEOP", "LST_MAPSYM", "LST_FIELDMAPSYM", "LST_MARKERSYM", 
+  "LST_ifTOKEN", "LST_thenTOKEN", "LST_elseTOKEN", "LST_LBRACKET", 
+  "LST_RBRACKET", "LST_SELECTSYM", "LST_SEPSYM", "LST_OPENSYM", 
+  "LST_CLOSESYM", "LST_COLON", "LST_COMMA", "LST_EOL", "LST_COMMENTSYM", 
+  "LST_WHITESPACE", "LST_QUANTIFIERSYM", "LST_EQUATIONSYM", 
+  "LST_EQSEPSYM", "LST_COMPOSESYM", "LST_LPAR", "LST_RPAR", 
+  "LST_assertsTOKEN", "LST_assumesTOKEN", "LST_byTOKEN", 
+  "LST_convertsTOKEN", "LST_enumerationTOKEN", "LST_equationsTOKEN", 
+  "LST_exemptingTOKEN", "LST_forTOKEN", "LST_generatedTOKEN", 
+  "LST_impliesTOKEN", "LST_includesTOKEN", "LST_introducesTOKEN", 
+  "LST_ofTOKEN", "LST_partitionedTOKEN", "LST_traitTOKEN", 
+  "LST_tupleTOKEN", "LST_unionTOKEN", "LST_BADTOKEN", "top", 
+  "operatorList", "operator", "name", "opForm", "anyOp", "middle", 
+  "placeList", "separator", "signature", "domain", "sortList", "sortId", 
+  "opId", NULL
 };
 #endif
 
-static const short yyr1[] = {     0,
-    48,    49,    49,    50,    51,    51,    52,    52,    52,    52,
-    52,    52,    52,    52,    52,    52,    52,    52,    52,    52,
-    52,    52,    53,    53,    53,    54,    54,    55,    55,    56,
-    56,    57,    58,    58,    59,    59,    60,    61
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const short yyr1[] =
+{
+       0,    48,    49,    49,    50,    51,    51,    52,    52,    52,
+      52,    52,    52,    52,    52,    52,    52,    52,    52,    52,
+      52,    52,    52,    53,    53,    53,    54,    54,    55,    55,
+      56,    56,    57,    58,    58,    59,    59,    60,    61
 };
 
-static const short yyr2[] = {     0,
-     1,     1,     2,     3,     1,     1,     6,     1,     2,     2,
-     3,     3,     4,     4,     5,     3,     4,     4,     5,     2,
-     3,     3,     1,     1,     1,     0,     1,     1,     3,     1,
-     1,     3,     0,     1,     1,     3,     1,     1
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const short yyr2[] =
+{
+       0,     1,     1,     2,     3,     1,     1,     6,     1,     2,
+       2,     3,     3,     4,     4,     5,     3,     4,     4,     5,
+       2,     3,     3,     1,     1,     1,     0,     1,     1,     3,
+       1,     1,     3,     0,     1,     1,     3,     1,     1
 };
 
-static const short yydefact[] = {     0,
-    38,    24,    25,    23,     0,     0,    26,     0,    26,     1,
-     2,     0,     6,     8,     5,     0,    26,     0,    26,     9,
-     0,    28,     0,    27,    20,     0,     3,    33,    10,    22,
-     0,    21,     0,    11,     0,    16,    31,    30,     0,    12,
-    37,     4,     0,    34,    35,    17,    13,     0,    18,    29,
-    14,     0,     0,    19,    15,     0,    32,    36,     7,     0,
-     0,     0
+/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
+   doesn't specify something else to do.  Zero means the default is an
+   error. */
+static const short yydefact[] =
+{
+       0,    38,    24,    25,    23,     0,     0,    26,     0,    26,
+       1,     2,     0,     6,     8,     5,     0,    26,     0,    26,
+       9,     0,    28,     0,    27,    20,     0,     3,    33,    10,
+      22,     0,    21,     0,    11,     0,    16,    31,    30,     0,
+      12,    37,     4,     0,    34,    35,    17,    13,     0,    18,
+      29,    14,     0,     0,    19,    15,     0,    32,    36,     7,
+       0,     0,     0
 };
 
-static const short yydefgoto[] = {    60,
-    10,    11,    12,    13,    14,    23,    24,    39,    42,    43,
-    44,    45,    15
+static const short yydefgoto[] =
+{
+      60,    10,    11,    12,    13,    14,    23,    24,    39,    42,
+      43,    44,    45,    15
 };
 
-static const short yypact[] = {    -3,
--32768,-32768,-32768,-32768,    11,    -4,     0,     8,     0,    -3,
--32768,    -1,-32768,    13,-32768,    17,     0,    22,     0,    18,
-    20,-32768,    19,   -12,-32768,    14,-32768,    31,-32768,-32768,
-    21,-32768,    23,-32768,    27,    28,-32768,-32768,    29,    30,
--32768,-32768,    33,    24,-32768,    34,    36,    35,-32768,-32768,
--32768,    31,    31,-32768,-32768,    37,-32768,-32768,-32768,    42,
-    48,-32768
+static const short yypact[] =
+{
+      -3,-32768,-32768,-32768,-32768,    11,    -4,     0,     8,     0,
+      -3,-32768,    -1,-32768,    13,-32768,    17,     0,    22,     0,
+      18,    20,-32768,    19,   -12,-32768,    14,-32768,    31,-32768,
+  -32768,    21,-32768,    23,-32768,    27,    28,-32768,-32768,    29,
+      30,-32768,-32768,    33,    24,-32768,    34,    36,    35,-32768,
+  -32768,-32768,    31,    31,-32768,-32768,    37,-32768,-32768,-32768,
+      42,    48,-32768
 };
 
-static const short yypgoto[] = {-32768,
--32768,    39,-32768,-32768,    45,     4,-32768,-32768,-32768,-32768,
--32768,   -23,-32768
+static const short yypgoto[] =
+{
+  -32768,-32768,    39,-32768,-32768,    45,     4,-32768,-32768,-32768,
+  -32768,-32768,   -23,-32768
 };
 
 
 #define        YYLAST          50
 
 
-static const short yytable[] = {     1,
-     2,     3,     4,    37,    21,     5,     6,    38,    22,     7,
-    25,     8,    26,     9,     2,     3,     4,    28,    16,    30,
-    31,    29,    33,    17,    32,    18,    34,    19,    57,    58,
-    35,    40,    36,    41,    46,    48,    49,    50,    51,    52,
-    47,    61,    54,    53,    55,    59,    56,    62,    27,    20
+static const short yytable[] =
+{
+       1,     2,     3,     4,    37,    21,     5,     6,    38,    22,
+       7,    25,     8,    26,     9,     2,     3,     4,    28,    16,
+      30,    31,    29,    33,    17,    32,    18,    34,    19,    57,
+      58,    35,    40,    36,    41,    46,    48,    49,    50,    51,
+      52,    47,    61,    54,    53,    55,    59,    56,    62,    27,
+      20
 };
 
-static const short yycheck[] = {     3,
-     4,     5,     6,    16,     9,     9,    10,    20,     9,    13,
-     3,    15,     9,    17,     4,     5,     6,    19,     8,     3,
-    17,     9,    19,    13,     3,    15,     9,    17,    52,    53,
-    11,    18,    14,     3,    14,     9,     9,     9,     9,     7,
-    18,     0,     9,    20,     9,     9,    12,     0,    10,     5
+static const short yycheck[] =
+{
+       3,     4,     5,     6,    16,     9,     9,    10,    20,     9,
+      13,     3,    15,     9,    17,     4,     5,     6,    19,     8,
+       3,    17,     9,    19,    13,     3,    15,     9,    17,    52,
+      53,    11,    18,    14,     3,    14,     9,     9,     9,     9,
+       7,    18,     0,     9,    20,     9,     9,    12,     0,    10,
+       5
 };
 #define YYPURE 1
 
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 
-/* This file comes from bison-1.28.  */
-
 /* Skeleton output parser for bison,
-   Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
+   Copyright 1984, 1989, 1990, 2000, 2001 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -344,62 +365,64 @@ static const short yycheck[] = {     3,
    This special exception was added by the Free Software Foundation
    in version 1.24 of Bison.  */
 
-/* This is the parser code that is written into each bison parser
-  when the %semantic_parser declaration is not specified in the grammar.
-  It was written by Richard Stallman by simplifying the hairy parser
-  used when %semantic_parser is specified.  */
+/* This is the parser code that is written into each bison parser when
+   the %semantic_parser declaration is not specified in the grammar.
+   It was written by Richard Stallman by simplifying the hairy parser
+   used when %semantic_parser is specified.  */
 
 #ifndef YYSTACK_USE_ALLOCA
-#ifdef alloca
-#define YYSTACK_USE_ALLOCA
-#else /* alloca not defined */
-#ifdef __GNUC__
-#define YYSTACK_USE_ALLOCA
-#define alloca __builtin_alloca
-#else /* not GNU C.  */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
-#define YYSTACK_USE_ALLOCA
-#include <alloca.h>
-#else /* not sparc */
-/* We think this test detects Watcom and Microsoft C.  */
-/* This used to test MSDOS, but that is a bad idea
-   since that symbol is in the user namespace.  */
-#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
-#if 0 /* No need for malloc.h, which pollutes the namespace;
-        instead, just don't use alloca.  */
-#include <malloc.h>
-#endif
-#else /* not MSDOS, or __TURBOC__ */
-#if defined(_AIX)
-/* I don't know what this was needed for, but it pollutes the namespace.
-   So I turned it off.   rms, 2 May 1997.  */
-/* #include <malloc.h>  */
+# ifdef alloca
+#  define YYSTACK_USE_ALLOCA 1
+# else /* alloca not defined */
+#  ifdef __GNUC__
+#   define YYSTACK_USE_ALLOCA 1
+#   define alloca __builtin_alloca
+#  else /* not GNU C.  */
+#   if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
+#    define YYSTACK_USE_ALLOCA 1
+#    include <alloca.h>
+#   else /* not sparc */
+     /* We think this test detects Watcom and Microsoft C.  */
+     /* This used to test MSDOS, but that is a bad idea since that
+       symbol is in the user namespace.  */
+#    if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
+#     if 0
+       /* No need for malloc.h, which pollutes the namespace; instead,
+         just don't use alloca.  */
+#      include <malloc.h>
+#     endif
+#    else /* not MSDOS, or __TURBOC__ */
+#     if defined(_AIX)
+       /* I don't know what this was needed for, but it pollutes the
+         namespace.  So I turned it off.  rms, 2 May 1997.  */
+       /* #include <malloc.h>  */
  #pragma alloca
-#define YYSTACK_USE_ALLOCA
-#else /* not MSDOS, or __TURBOC__, or _AIX */
-#if 0
-#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
-                and on HPUX 10.  Eventually we can turn this on.  */
-#define YYSTACK_USE_ALLOCA
-#define alloca __builtin_alloca
-#endif /* __hpux */
-#endif
-#endif /* not _AIX */
-#endif /* not MSDOS, or __TURBOC__ */
-#endif /* not sparc */
-#endif /* not GNU C */
-#endif /* alloca not defined */
+#      define YYSTACK_USE_ALLOCA 1
+#     else /* not MSDOS, or __TURBOC__, or _AIX */
+#      if 0
+       /* haible@ilog.fr says this works for HPUX 9.05 and up, and on
+          HPUX 10.  Eventually we can turn this on.  */
+#       ifdef __hpux
+#        define YYSTACK_USE_ALLOCA 1
+#        define alloca __builtin_alloca
+#      endif /* __hpux */
+#      endif
+#     endif /* not _AIX */
+#    endif /* not MSDOS, or __TURBOC__ */
+#   endif /* not sparc */
+#  endif /* not GNU C */
+# endif /* alloca not defined */
 #endif /* YYSTACK_USE_ALLOCA not defined */
 
-#ifdef YYSTACK_USE_ALLOCA
-#define YYSTACK_ALLOC alloca
-#else
-#define YYSTACK_ALLOC malloc
+#ifndef YYSTACK_USE_ALLOCA
+# define YYSTACK_USE_ALLOCA 0
 #endif
 
-/* Note: there must be only one dollar sign in this file.
-   It is replaced by the list of actions, each action
-   as one case of the switch.  */
+#if YYSTACK_USE_ALLOCA
+# define YYSTACK_ALLOC alloca
+#else
+# define YYSTACK_ALLOC malloc
+#endif
 
 #define yyerrok                (yyerrstatus = 0)
 #define yyclearin      (yychar = YYEMPTY)
@@ -408,84 +431,96 @@ static const short yycheck[] = {     3,
 #define YYACCEPT       goto yyacceptlab
 #define YYABORT        goto yyabortlab
 #define YYERROR                goto yyerrlab1
-/* Like YYERROR except do call yyerror.
-   This remains here temporarily to ease the
-   transition to the new meaning of YYERROR, for GCC.
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
    Once GCC version 2 has supplanted version 1, this can go.  */
 #define YYFAIL         goto yyerrlab
 #define YYRECOVERING()  (!!yyerrstatus)
-#define YYBACKUP(token, value) \
+#define YYBACKUP(Token, Value)                                 \
 do                                                             \
   if (yychar == YYEMPTY && yylen == 1)                         \
-    { yychar = (token), yylval = (value);                      \
+    {                                                          \
+      yychar = (Token);                                                \
+      yylval = (Value);                                                \
       yychar1 = YYTRANSLATE (yychar);                          \
       YYPOPSTACK;                                              \
       goto yybackup;                                           \
     }                                                          \
   else                                                         \
-    { yyerror ("syntax error: cannot back up"); YYERROR; }     \
+    {                                                          \
+      yyerror ("syntax error: cannot back up");                        \
+      YYERROR;                                                 \
+    }                                                          \
 while (0)
 
 #define YYTERROR       1
 #define YYERRCODE      256
 
-#ifndef YYPURE
-#define YYLEX          yylex()
-#endif
-
-#ifdef YYPURE
-#ifdef YYLSP_NEEDED
-#ifdef YYLEX_PARAM
-#define YYLEX          yylex(&yylval, &yylloc, YYLEX_PARAM)
-#else
-#define YYLEX          yylex(&yylval, &yylloc)
-#endif
-#else /* not YYLSP_NEEDED */
-#ifdef YYLEX_PARAM
-#define YYLEX          yylex(&yylval, YYLEX_PARAM)
-#else
-#define YYLEX          yylex(&yylval)
-#endif
-#endif /* not YYLSP_NEEDED */
-#endif
-
-/* If nonreentrant, generate the variables here */
 
-#ifndef YYPURE
+/* YYLLOC_DEFAULT -- Compute the default location (before the actions
+   are run).
 
-int    yychar;                 /*  the lookahead symbol                */
-YYSTYPE        yylval;                 /*  the semantic value of the           */
-                               /*  lookahead symbol                    */
+   When YYLLOC_DEFAULT is run, CURRENT is set the location of the
+   first token.  By default, to implement support for ranges, extend
+   its range to the last symbol.  */
 
-#ifdef YYLSP_NEEDED
-YYLTYPE yylloc;                        /*  location data for the lookahead     */
-                               /*  symbol                              */
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)               \
+   Current.last_line   = Rhs[N].last_line;     \
+   Current.last_column = Rhs[N].last_column;
 #endif
 
-int yynerrs;                   /*  number of parse errors so far       */
-#endif  /* not YYPURE */
-
-#if YYDEBUG != 0
-int yydebug;                   /*  nonzero means print parse trace     */
-/* Since this is uninitialized, it does not stop multiple parsers
-   from coexisting.  */
-#endif
-
-/*  YYINITDEPTH indicates the initial size of the parser's stacks      */
 
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#if YYPURE
+# if YYLSP_NEEDED
+#  ifdef YYLEX_PARAM
+#   define YYLEX               yylex (&yylval, &yylloc, YYLEX_PARAM)
+#  else
+#   define YYLEX               yylex (&yylval, &yylloc)
+#  endif
+# else /* !YYLSP_NEEDED */
+#  ifdef YYLEX_PARAM
+#   define YYLEX               yylex (&yylval, YYLEX_PARAM)
+#  else
+#   define YYLEX               yylex (&yylval)
+#  endif
+# endif /* !YYLSP_NEEDED */
+#else /* !YYPURE */
+# define YYLEX                 yylex ()
+#endif /* !YYPURE */
+
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+# define YYDPRINTF(Args)                       \
+do {                                           \
+  if (yydebug)                                 \
+    fprintf Args;                              \
+} while (0)
+/* Nonzero means print parse trace. [The following comment makes no
+   sense to me.  Could someone clarify it?  --akim] Since this is
+   uninitialized, it does not stop multiple parsers from coexisting.
+   */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+#endif /* !YYDEBUG */
+
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
 #ifndef        YYINITDEPTH
-#define YYINITDEPTH 200
+# define YYINITDEPTH 200
 #endif
 
-/*  YYMAXDEPTH is the maximum size the stacks can grow to
-    (effective only if the built-in stack extension method is used).  */
-
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).  */
 #if YYMAXDEPTH == 0
-#undef YYMAXDEPTH
+# undef YYMAXDEPTH
 #endif
 
 #ifndef YYMAXDEPTH
-#define YYMAXDEPTH 10000
+# define YYMAXDEPTH 10000
 #endif
 \f
 /* Define __yy_memcpy.  Note that the size argument
@@ -494,19 +529,22 @@ int yydebug;                      /*  nonzero means print parse trace     */
    of type size_t, but it can handle unsigned int.  */
 
 #if __GNUC__ > 1               /* GNU C and GNU C++ define this.  */
-#define __yy_memcpy(TO,FROM,COUNT)     __builtin_memcpy(TO,FROM,COUNT)
+# define __yy_memcpy(To, From, Count)  __builtin_memcpy (To, From, Count)
 #else                          /* not GNU C or C++ */
-#ifndef __cplusplus
 
 /* This is the most reliable way to avoid incompatibilities
    in available built-in functions on various systems.  */
 static void
+# ifndef __cplusplus
 __yy_memcpy (to, from, count)
      char *to;
-     char *from;
+     const char *from;
      unsigned int count;
+# else /* __cplusplus */
+__yy_memcpy (char *to, const char *from, unsigned int count)
+# endif
 {
-  register char *f = from;
+  register const char *f = from;
   register char *t = to;
   register int i = count;
 
@@ -514,22 +552,6 @@ __yy_memcpy (to, from, count)
     *t++ = *f++;
 }
 
-#else /* __cplusplus */
-
-/* This is the most reliable way to avoid incompatibilities
-   in available built-in functions on various systems.  */
-static void
-__yy_memcpy (char *to, char *from, unsigned int count)
-{
-  register char *t = to;
-  register char *f = from;
-  register int i = count;
-
-  while (i-- > 0)
-    *t++ = *f++;
-}
-
-#endif
 #endif
 \f
 
@@ -541,76 +563,121 @@ __yy_memcpy (char *to, char *from, unsigned int count)
    to the proper pointer type.  */
 
 #ifdef YYPARSE_PARAM
-#ifdef __cplusplus
-#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL
-#else /* not __cplusplus */
-#define YYPARSE_PARAM_ARG YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
-#endif /* not __cplusplus */
-#else /* not YYPARSE_PARAM */
-#define YYPARSE_PARAM_ARG
-#define YYPARSE_PARAM_DECL
-#endif /* not YYPARSE_PARAM */
+# ifdef __cplusplus
+#  define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
+#  define YYPARSE_PARAM_DECL
+# else /* !__cplusplus */
+#  define YYPARSE_PARAM_ARG YYPARSE_PARAM
+#  define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
+# endif /* !__cplusplus */
+#else /* !YYPARSE_PARAM */
+# define YYPARSE_PARAM_ARG
+# define YYPARSE_PARAM_DECL
+#endif /* !YYPARSE_PARAM */
 
 /* Prevent warning if -Wstrict-prototypes.  */
 #ifdef __GNUC__
-#ifdef YYPARSE_PARAM
+# ifdef YYPARSE_PARAM
 int yyparse (void *);
-#else
+# else
 int yyparse (void);
+# endif
 #endif
+
+/* YY_DECL_VARIABLES -- depending whether we use a pure parser,
+   variables are global, or local to YYPARSE.  */
+
+#define _YY_DECL_VARIABLES                             \
+/* The lookahead symbol.  */                           \
+int yychar;                                            \
+                                                       \
+/* The semantic value of the lookahead symbol. */      \
+YYSTYPE yylval;                                                \
+                                                       \
+/* Number of parse errors so far.  */                  \
+int yynerrs;
+
+#if YYLSP_NEEDED
+# define YY_DECL_VARIABLES                     \
+_YY_DECL_VARIABLES                             \
+                                               \
+/* Location data for the lookahead symbol.  */ \
+YYLTYPE yylloc;
+#else
+# define YY_DECL_VARIABLES                     \
+_YY_DECL_VARIABLES
 #endif
 
+
+/* If nonreentrant, generate the variables here. */
+
+#if !YYPURE
+YY_DECL_VARIABLES
+#endif  /* !YYPURE */
+
 int
-yyparse(YYPARSE_PARAM_ARG)
+yyparse (YYPARSE_PARAM_ARG)
      YYPARSE_PARAM_DECL
 {
+  /* If reentrant, generate the variables here. */
+#if YYPURE
+  YY_DECL_VARIABLES
+#endif  /* !YYPURE */
+
   register int yystate;
   register int yyn;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Lookahead token as an internal (translated) token number.  */
+  int yychar1 = 0;
+
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yysv': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack. */
+  short        yyssa[YYINITDEPTH];
+  short *yyss = yyssa;
   register short *yyssp;
-  register YYSTYPE *yyvsp;
-  int yyerrstatus;     /*  number of tokens to shift before error messages enabled */
-  int yychar1 = 0;             /*  lookahead token as an internal (translated) token number */
 
-  short        yyssa[YYINITDEPTH];     /*  the state stack                     */
-  YYSTYPE yyvsa[YYINITDEPTH];  /*  the semantic value stack            */
-
-  short *yyss = yyssa;         /*  refer to the stacks thru separate pointers */
-  YYSTYPE *yyvs = yyvsa;       /*  to allow yyoverflow to reallocate them elsewhere */
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  register YYSTYPE *yyvsp;
 
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylsa[YYINITDEPTH];  /*  the location stack                  */
+#if YYLSP_NEEDED
+  /* The location stack.  */
+  YYLTYPE yylsa[YYINITDEPTH];
   YYLTYPE *yyls = yylsa;
   YYLTYPE *yylsp;
+#endif
 
-#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
+#if YYLSP_NEEDED
+# define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
 #else
-#define YYPOPSTACK   (yyvsp--, yyssp--)
+# define YYPOPSTACK   (yyvsp--, yyssp--)
 #endif
 
   int yystacksize = YYINITDEPTH;
   int yyfree_stacks = 0;
 
-#ifdef YYPURE
-  int yychar;
-  YYSTYPE yylval;
-  int yynerrs;
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylloc;
-#endif
-#endif
 
-  YYSTYPE yyval;               /*  the variable used to return         */
-                               /*  semantic values from the action     */
-                               /*  routines                            */
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+# if YYLSP_NEEDED
+  YYLTYPE yyloc;
+# endif
 
+  /* When reducing, the number of symbols on the RHS of the reduced
+     rule. */
   int yylen;
 
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Starting parse\n");
-#endif
+  YYDPRINTF ((stderr, "Starting parse\n"));
 
   yystate = 0;
   yyerrstatus = 0;
@@ -622,26 +689,33 @@ yyparse(YYPARSE_PARAM_ARG)
      so that they stay on the same level as the state stack.
      The wasted elements are never initialized.  */
 
-  yyssp = yyss - 1;
+  yyssp = yyss;
   yyvsp = yyvs;
-#ifdef YYLSP_NEEDED
+#if YYLSP_NEEDED
   yylsp = yyls;
 #endif
+  goto yysetstate;
 
-/* Push a new state, which is found in  yystate  .  */
-/* In all cases, when you get here, the value and location stacks
-   have just been pushed. so pushing a state here evens the stacks.  */
-yynewstate:
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed. so pushing a state here evens the stacks.
+     */
+  yyssp++;
 
-  *++yyssp = yystate;
+ yysetstate:
+  *yyssp = yystate;
 
   if (yyssp >= yyss + yystacksize - 1)
     {
-      /* Give user a chance to reallocate the stack */
-      /* Use copies of these so that the &'s don't force the real ones into memory. */
+      /* Give user a chance to reallocate the stack. Use copies of
+        these so that the &'s don't force the real ones into memory.
+        */
       YYSTYPE *yyvs1 = yyvs;
       short *yyss1 = yyss;
-#ifdef YYLSP_NEEDED
+#if YYLSP_NEEDED
       YYLTYPE *yyls1 = yyls;
 #endif
 
@@ -649,83 +723,82 @@ yynewstate:
       int size = yyssp - yyss + 1;
 
 #ifdef yyoverflow
-      /* Each stack pointer address is followed by the size of
-        the data in use in that stack, in bytes.  */
-#ifdef YYLSP_NEEDED
+      /* Each stack pointer address is followed by the size of the
+        data in use in that stack, in bytes.  */
+# if YYLSP_NEEDED
       /* This used to be a conditional around just the two extra args,
         but that might be undefined if yyoverflow is a macro.  */
-      yyoverflow("parser stack overflow",
-                &yyss1, size * sizeof (*yyssp),
-                &yyvs1, size * sizeof (*yyvsp),
-                &yyls1, size * sizeof (*yylsp),
-                &yystacksize);
-#else
-      yyoverflow("parser stack overflow",
-                &yyss1, size * sizeof (*yyssp),
-                &yyvs1, size * sizeof (*yyvsp),
-                &yystacksize);
-#endif
+      yyoverflow ("parser stack overflow",
+                 &yyss1, size * sizeof (*yyssp),
+                 &yyvs1, size * sizeof (*yyvsp),
+                 &yyls1, size * sizeof (*yylsp),
+                 &yystacksize);
+# else
+      yyoverflow ("parser stack overflow",
+                 &yyss1, size * sizeof (*yyssp),
+                 &yyvs1, size * sizeof (*yyvsp),
+                 &yystacksize);
+# endif
 
       yyss = yyss1; yyvs = yyvs1;
-#ifdef YYLSP_NEEDED
+# if YYLSP_NEEDED
       yyls = yyls1;
-#endif
+# endif
 #else /* no yyoverflow */
       /* Extend the stack our own way.  */
       if (yystacksize >= YYMAXDEPTH)
        {
-         yyerror("parser stack overflow");
+         yyerror ("parser stack overflow");
          if (yyfree_stacks)
            {
              free (yyss);
              free (yyvs);
-#ifdef YYLSP_NEEDED
+# if YYLSP_NEEDED
              free (yyls);
-#endif
+# endif
            }
          return 2;
        }
       yystacksize *= 2;
       if (yystacksize > YYMAXDEPTH)
        yystacksize = YYMAXDEPTH;
-#ifndef YYSTACK_USE_ALLOCA
+# if !YYSTACK_USE_ALLOCA
       yyfree_stacks = 1;
-#endif
+# endif
       yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
       __yy_memcpy ((char *)yyss, (char *)yyss1,
                   size * (unsigned int) sizeof (*yyssp));
       yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
       __yy_memcpy ((char *)yyvs, (char *)yyvs1,
                   size * (unsigned int) sizeof (*yyvsp));
-#ifdef YYLSP_NEEDED
+# if YYLSP_NEEDED
       yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
       __yy_memcpy ((char *)yyls, (char *)yyls1,
                   size * (unsigned int) sizeof (*yylsp));
-#endif
+# endif
 #endif /* no yyoverflow */
 
       yyssp = yyss + size - 1;
       yyvsp = yyvs + size - 1;
-#ifdef YYLSP_NEEDED
+#if YYLSP_NEEDED
       yylsp = yyls + size - 1;
 #endif
 
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Stack size increased to %d\n", yystacksize);
-#endif
+      YYDPRINTF ((stderr, "Stack size increased to %d\n", yystacksize));
 
       if (yyssp >= yyss + yystacksize - 1)
        YYABORT;
     }
 
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Entering state %d\n", yystate);
-#endif
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
 
   goto yybackup;
- yybackup:
+
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
 
 /* Do appropriate processing given the current state.  */
 /* Read a lookahead token if we need one and don't already have one.  */
@@ -744,10 +817,7 @@ yynewstate:
 
   if (yychar == YYEMPTY)
     {
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Reading a token: ");
-#endif
+      YYDPRINTF ((stderr, "Reading a token: "));
       yychar = YYLEX;
     }
 
@@ -758,24 +828,23 @@ yynewstate:
       yychar1 = 0;
       yychar = YYEOF;          /* Don't call YYLEX any more */
 
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Now at end of input.\n");
-#endif
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
     }
   else
     {
-      yychar1 = YYTRANSLATE(yychar);
+      yychar1 = YYTRANSLATE (yychar);
 
-#if YYDEBUG != 0
+#if YYDEBUG
+     /* We have to keep this `#if YYDEBUG', since we use variables
+       which are defined only if `YYDEBUG' is set.  */
       if (yydebug)
        {
          fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
-         /* Give the individual parser a way to print the precise meaning
-            of a token, for further debugging info.  */
-#ifdef YYPRINT
+         /* Give the individual parser a way to print the precise
+            meaning of a token, for further debugging info.  */
+# ifdef YYPRINT
          YYPRINT (stderr, yychar, yylval);
-#endif
+# endif
          fprintf (stderr, ")\n");
        }
 #endif
@@ -808,41 +877,63 @@ yynewstate:
     YYACCEPT;
 
   /* Shift the lookahead token.  */
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
-#endif
+  YYDPRINTF ((stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]));
 
   /* Discard the token being shifted unless it is eof.  */
   if (yychar != YYEOF)
     yychar = YYEMPTY;
 
   *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
+#if YYLSP_NEEDED
   *++yylsp = yylloc;
 #endif
 
-  /* count tokens shifted since error; after three, turn off error status.  */
-  if (yyerrstatus) yyerrstatus--;
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
 
   yystate = yyn;
   goto yynewstate;
 
-/* Do the default action for the current state.  */
-yydefault:
 
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
   yyn = yydefact[yystate];
   if (yyn == 0)
     goto yyerrlab;
+  goto yyreduce;
 
-/* Do a reduction.  yyn is the number of a rule to reduce with.  */
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
 yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
   yylen = yyr2[yyn];
-  if (yylen > 0)
-    yyval = yyvsp[1-yylen]; /* implement default value of the action */
 
-#if YYDEBUG != 0
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
+
+     Otherwise, the following line sets YYVAL to the semantic value of
+     the lookahead token.  This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
+
+#if YYLSP_NEEDED
+  /* Similarly for the default location.  Let the user run additional
+     commands if for instance locations are ranges.  */
+  yyloc = yylsp[1-yylen];
+  YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
+#endif
+
+#if YYDEBUG
+  /* We have to keep this `#if YYDEBUG', since we use variables which
+     are defined only if `YYDEBUG' is set.  */
   if (yydebug)
     {
       int i;
@@ -857,7 +948,6 @@ yyreduce:
     }
 #endif
 
-
   switch (yyn) {
 
 case 1:
@@ -990,16 +1080,16 @@ case 38:
 { yyval.ltok = yyvsp[0].ltok; ;
     break;}
 }
-   /* the action file gets copied in in place of this dollarsign */
+
 
 \f
   yyvsp -= yylen;
   yyssp -= yylen;
-#ifdef YYLSP_NEEDED
+#if YYLSP_NEEDED
   yylsp -= yylen;
 #endif
 
-#if YYDEBUG != 0
+#if YYDEBUG
   if (yydebug)
     {
       short *ssp1 = yyss - 1;
@@ -1011,28 +1101,13 @@ case 38:
 #endif
 
   *++yyvsp = yyval;
-
-#ifdef YYLSP_NEEDED
-  yylsp++;
-  if (yylen == 0)
-    {
-      yylsp->first_line = yylloc.first_line;
-      yylsp->first_column = yylloc.first_column;
-      yylsp->last_line = (yylsp-1)->last_line;
-      yylsp->last_column = (yylsp-1)->last_column;
-      yylsp->text = 0;
-    }
-  else
-    {
-      yylsp->last_line = (yylsp+yylen-1)->last_line;
-      yylsp->last_column = (yylsp+yylen-1)->last_column;
-    }
+#if YYLSP_NEEDED
+  *++yylsp = yyloc;
 #endif
 
-  /* Now "shift" the result of the reduction.
-     Determine what state that goes to,
-     based on the state we popped back to
-     and the rule number reduced by.  */
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
 
   yyn = yyr1[yyn];
 
@@ -1044,10 +1119,13 @@ case 38:
 
   goto yynewstate;
 
-yyerrlab:   /* here on detecting error */
 
-  if (! yyerrstatus)
-    /* If not already recovering from an error, report this error.  */
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
     {
       ++yynerrs;
 
@@ -1063,83 +1141,99 @@ yyerrlab:   /* here on detecting error */
          count = 0;
          /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
          for (x = (yyn < 0 ? -yyn : 0);
-              x < (sizeof(yytname) / sizeof(char *)); x++)
+              x < (int) (sizeof (yytname) / sizeof (char *)); x++)
            if (yycheck[x + yyn] == x)
-             size += strlen(yytname[x]) + 15, count++;
-         msg = (char *) malloc(size + 15);
+             size += strlen (yytname[x]) + 15, count++;
+         size += strlen ("parse error, unexpected `") + 1;
+         size += strlen (yytname[YYTRANSLATE (yychar)]);
+         msg = (char *) malloc (size);
          if (msg != 0)
            {
-             strcpy(msg, "parse error");
+             strcpy (msg, "parse error, unexpected `");
+             strcat (msg, yytname[YYTRANSLATE (yychar)]);
+             strcat (msg, "'");
 
              if (count < 5)
                {
                  count = 0;
                  for (x = (yyn < 0 ? -yyn : 0);
-                      x < (sizeof(yytname) / sizeof(char *)); x++)
+                      x < (int) (sizeof (yytname) / sizeof (char *)); x++)
                    if (yycheck[x + yyn] == x)
                      {
-                       strcat(msg, count == 0 ? ", expecting `" : " or `");
-                       strcat(msg, yytname[x]);
-                       strcat(msg, "'");
+                       strcat (msg, count == 0 ? ", expecting `" : " or `");
+                       strcat (msg, yytname[x]);
+                       strcat (msg, "'");
                        count++;
                      }
                }
-             yyerror(msg);
-             free(msg);
+             yyerror (msg);
+             free (msg);
            }
          else
            yyerror ("parse error; also virtual memory exceeded");
        }
       else
 #endif /* YYERROR_VERBOSE */
-       yyerror("parse error");
+       yyerror ("parse error");
     }
-
   goto yyerrlab1;
-yyerrlab1:   /* here on error raised explicitly by an action */
 
+
+/*--------------------------------------------------.
+| yyerrlab1 -- error raised explicitly by an action |
+`--------------------------------------------------*/
+yyerrlab1:
   if (yyerrstatus == 3)
     {
-      /* if just tried and failed to reuse lookahead token after an error, discard it.  */
+      /* If just tried and failed to reuse lookahead token after an
+        error, discard it.  */
 
       /* return failure if at end of input */
       if (yychar == YYEOF)
        YYABORT;
-
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
-#endif
-
+      YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
+                 yychar, yytname[yychar1]));
       yychar = YYEMPTY;
     }
 
-  /* Else will try to reuse lookahead token
-     after shifting the error token.  */
+  /* Else will try to reuse lookahead token after shifting the error
+     token.  */
 
   yyerrstatus = 3;             /* Each real token shifted decrements this */
 
   goto yyerrhandle;
 
-yyerrdefault:  /* current state does not do anything special for the error token. */
 
+/*-------------------------------------------------------------------.
+| yyerrdefault -- current state does not do anything special for the |
+| error token.                                                       |
+`-------------------------------------------------------------------*/
+yyerrdefault:
 #if 0
   /* This is wrong; only states that explicitly want error tokens
      should shift them.  */
-  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
-  if (yyn) goto yydefault;
+
+  /* If its default is to accept any token, ok.  Otherwise pop it.  */
+  yyn = yydefact[yystate];
+  if (yyn)
+    goto yydefault;
 #endif
 
-yyerrpop:   /* pop the current state because it cannot handle the error token */
 
-  if (yyssp == yyss) YYABORT;
+/*---------------------------------------------------------------.
+| yyerrpop -- pop the current state because it cannot handle the |
+| error token                                                    |
+`---------------------------------------------------------------*/
+yyerrpop:
+  if (yyssp == yyss)
+    YYABORT;
   yyvsp--;
   yystate = *--yyssp;
-#ifdef YYLSP_NEEDED
+#if YYLSP_NEEDED
   yylsp--;
 #endif
 
-#if YYDEBUG != 0
+#if YYDEBUG
   if (yydebug)
     {
       short *ssp1 = yyss - 1;
@@ -1150,8 +1244,10 @@ yyerrpop:   /* pop the current state because it cannot handle the error token */
     }
 #endif
 
+/*--------------.
+| yyerrhandle.  |
+`--------------*/
 yyerrhandle:
-
   yyn = yypact[yystate];
   if (yyn == YYFLAG)
     goto yyerrdefault;
@@ -1174,38 +1270,41 @@ yyerrhandle:
   if (yyn == YYFINAL)
     YYACCEPT;
 
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting error token, ");
-#endif
+  YYDPRINTF ((stderr, "Shifting error token, "));
 
   *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
+#if YYLSP_NEEDED
   *++yylsp = yylloc;
 #endif
 
   yystate = yyn;
   goto yynewstate;
 
- yyacceptlab:
-  /* YYACCEPT comes here.  */
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
   if (yyfree_stacks)
     {
       free (yyss);
       free (yyvs);
-#ifdef YYLSP_NEEDED
+#if YYLSP_NEEDED
       free (yyls);
 #endif
     }
   return 0;
 
- yyabortlab:
-  /* YYABORT comes here.  */
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
   if (yyfree_stacks)
     {
       free (yyss);
       free (yyvs);
-#ifdef YYLSP_NEEDED
+#if YYLSP_NEEDED
       free (yyls);
 #endif
     }
index 3dee2e7a1c1d3f006482511fc79e1097a810a91c..b9457cb6bbe71c7842f1c846714350ded867850a 100644 (file)
@@ -1008,7 +1008,9 @@ uentry_makeFunctionAux (cstring n, ctype t,
   /*drl 12 28 2000*/
   e->info->fcn->postconditions = NULL;
   /*end drl*/
-  
+
+   e->cQuals = qualList_undefined;
+   
   checkGlobalsModifies (e, mods);
   e->info->fcn->mods = mods;
 
@@ -2506,7 +2508,11 @@ uentry_reflectOtherQualifier (/*@notnull@*/ uentry ue, qual qel)
     {
       if (qual_isCQual (qel))
        {
-         ; /* okay */
+         /*drl 04-19-2002
+           I'm now storing the C qualifiers in the uentry
+           This was necessary to get code generation to work
+         */
+         ue->cQuals = qualList_add(ue->cQuals, qel);
        }
       else
        {
@@ -3169,6 +3175,8 @@ uentry uentry_makeConstantAux (cstring n, ctype t,
   e->info->uconst->access = typeIdSet_undefined;
   e->info->uconst->macro = macro;
 
+  e->cQuals = qualList_undefined;
   uentry_setSpecDef (e, f);
 
   if (multiVal_isInt (m) && (multiVal_forceInt (m) == 0))
@@ -3368,6 +3376,8 @@ uentry uentry_makeVariableAux (cstring n, ctype t,
     }/* end else */
   /* end modification */
 
+  e->cQuals = qualList_undefined;
+  
   return (e);
 }
 
@@ -3818,6 +3828,8 @@ uentry_makeUnspecFunction (cstring n, ctype t,
   e->info->datatype->mut = mut;
   e->info->datatype->type = ctype_undefined;
 
+  e->cQuals = qualList_undefined;
   if (uentry_isDeclared (e))
     {
       uentry_setDefined (e, f);
@@ -3878,7 +3890,9 @@ static /*@only@*/ /*@notnull@*/ uentry
   e->info->iter->access = access;
   e->info->iter->mods = sRefSet_undefined;
   e->info->iter->globs = globSet_undefined;
-
+  
+  e->cQuals = qualList_undefined;
+  
   uentry_checkIterArgs (e);
   return (e);
 }
@@ -3915,6 +3929,9 @@ uentry_makeEndIterAux (cstring n, typeIdSet access, /*@only@*/ fileloc f)
   e->info->enditer->access = access;
 
   e->warn = warnClause_undefined; /*@i452@*/
+
+  e->cQuals = qualList_undefined;
+  
   return (e);
 }
 
@@ -3963,6 +3980,8 @@ static /*@only@*/ /*@notnull@*/ uentry
   e->info->datatype->type = t;
   e->warn = warnClause_undefined; /*@i452@*/
 
+  e->cQuals = qualList_undefined;
+  
   if (uentry_isDeclared (e))
     {
       uentry_setDefined (e, fl);
@@ -4323,6 +4342,9 @@ static uentry
   e->info->uconst = (ucinfo) dmalloc (sizeof (*e->info->uconst));
   e->info->uconst->access = access;
   e->info->uconst->macro = FALSE; /*@i523! fix this when macro info added to library */
+
+  e->cQuals = qualList_undefined;
+  
   uentry_setConstantValue (e, m);
   sRef_storeState (e->sref);
 
@@ -4385,6 +4407,8 @@ static /*@only@*/ uentry
   /*DRL ADDED 9-1-2000 */
   e->info->var->bufinfo = NULL;
   
+  e->cQuals = qualList_undefined;
+  
   return (e);
 }
 
@@ -4463,10 +4487,12 @@ uentry_makeDatatypeBase (/*@only@*/ cstring name, ctype ct, ynm abstract,
   e->info->datatype->mut = mut;
   e->info->datatype->type = rtype;
 
+  e->cQuals = qualList_undefined;
+  
   DPRINTF (("About to store: %s", sRef_unparseFull (e->sref)));
   sRef_storeState (e->sref);
   DPRINTF (("After store: %s", sRef_unparseFull (e->sref)));
-
+  
   return (e);
 }
 
@@ -4620,6 +4646,8 @@ static uentry
   e->info->fcn->postconditions = NULL;
     /* end drl */
   
+  e->cQuals = qualList_undefined;
   return (e);
 }
 
@@ -4668,6 +4696,8 @@ static /*@only@*/ uentry
   e->info->datatype->mut  = MAYBE;
   e->info->datatype->type = rtype;
 
+  e->cQuals = qualList_undefined;
+  
   sRef_storeState (e->sref);
 
   return (e);  
@@ -4712,6 +4742,8 @@ static uentry
   e->info->iter->access = access;
   e->info->iter->mods = sRefSet_undefined;
   e->info->iter->globs = globSet_undefined;
+
+  e->cQuals = qualList_undefined;
   
   sRef_storeState (e->sref);
   return (e);
@@ -4754,6 +4786,9 @@ static uentry
   e->info = (uinfo) dmalloc (sizeof (*e->info));
   e->info->enditer = (ueinfo) dmalloc (sizeof (*e->info->enditer));
   e->info->enditer->access = access;
+
+  e->cQuals = qualList_undefined;
+
   sRef_storeState (e->sref);
 
   return (e);
@@ -5310,6 +5345,53 @@ uentry_unparseAbbrev (uentry v)
   return (message ("%s %q", ctype_unparseDeep (v->utype), uentry_getName (v)));
 }
 
+/*@only@*/ cstring
+uentry_unparseFunctionHeader (uentry v) /*@*/
+{
+  cstring st, cQuals, tmp, ret, storageSp;
+
+  if (uentry_isUndefined (v))
+    return cstring_undefined;
+
+  llassert (uentry_isFunction(v));
+
+  st = uentry_getName(v);
+  tmp =  ctype_unparseFunction (v->utype, st);
+  if ( qualList_isDefined(v->cQuals) )
+    {
+      cQuals = qualList_unparse(v->cQuals);
+    }
+  else
+    {
+      cQuals = cstring_undefined;
+    }
+
+  if (uentry_isStatic(v) )
+    {
+      storageSp = cstring_makeLiteral("static");
+    }
+  else  if (uentry_isExtern(v) )
+    {
+      storageSp = cstring_makeLiteral("extern");
+    }
+  else  if (uentry_isExtern(v) )
+    {
+      storageSp = cstring_makeLiteral("");
+    }
+  else
+    {
+      
+      // // drl  make sure this is a legal/legit case
+      
+      storageSp = cstring_makeLiteral("");
+    }
+
+  ret = message("%q %q %q",storageSp, cQuals, tmp);
+  return  ret;
+  //  ctbase_unparseFunction (ctype_getCtbaseSafe (v->utype), st);
+    
+}
+
 /*@only@*/ cstring
 uentry_unparse (uentry v)
 {
@@ -6553,6 +6635,9 @@ uentry uentry_nameCopy (cstring name, uentry e)
   enew->storageclass = e->storageclass;
   enew->info = uinfo_copy (e->info, e->ukind);
 
+  enew->cQuals = qualList_copy(e->cQuals);
+
+  
   return enew;
 }
 
@@ -6839,7 +6924,7 @@ KindConformanceError (/*@unique@*/ uentry old, uentry unew, bool mustConform)
   llassert (uentry_isValid (old));
   llassert (uentry_isValid (unew));
 
-  if ((uentry_isEitherConstant (unew) || uentry_isDatatype (unew))
+  if (uentry_isEitherConstant (unew)
       && (fileloc_isPreproc (uentry_whereDeclared (old))
          || ctype_isUnknown (old->utype))
       && !uentry_isSpecified (old))
@@ -7311,10 +7396,9 @@ checkEnumConformance (/*@notnull@*/ uentry old, /*@notnull@*/ uentry unew)
       if (optgenerror 
          (FLG_MATCHFIELDS,
           message ("Enum %q declared with members { %q } but "
-                   "%s with members { %q }",
+                   "specified with members { %q }",
                    uentry_getName (old), 
                    enumNameList_unparse (enew),
-                   uentry_specOrDefName (old),
                    enumNameList_unparse (eold)),
           uentry_whereDeclared (unew)))
        {
@@ -9449,6 +9533,24 @@ uentry_mergeEntries (uentry spec, /*@only@*/ uentry def)
     }
 }
 
+/*drl added 4/02/2002*/
+static void
+uentry_printDecl (void)
+{
+  if (context_getFlag(FLG_GENERATECODE) )
+    {
+      cstring st;
+      if (fileloc_isDotH(g_currentloc) )
+       {
+         return;
+       }
+      st = message ("%s", uentry_unparse(posRedeclared));
+      outputCode(message( "%s", st));
+  
+    }
+}
+
 /*
 ** Can't generate function redeclaration errors when the 
 ** entries are merged, since we don't yet know if its the
@@ -9927,6 +10029,8 @@ uentry_copy (uentry e)
       enew->info = uinfo_copy (e->info, e->ukind);
       enew->warn = warnClause_copy (e->warn);
 
+      enew->cQuals = qualList_copy(e->cQuals);
+      
       DPRINTF (("Here we are..."));
       DPRINTF (("original: %s", uentry_unparseFull (e)));
       DPRINTF (("copy: %s", uentry_unparse (enew)));
index 96951d631248e8aa46ae8088da90ead99abddf52..3eed5b5e3c0009b4c688ea28595f01107bfcea08 100644 (file)
@@ -155,6 +155,91 @@ uentryList uentryList_add (uentryList s, /*@keep@*/ uentry el)
   return (st);
 }
 
+cstring uentryList_unparseParamsComplete (uentryList s)
+{
+  int i;
+  cstring st = cstring_undefined;
+  cstring cur;
+  
+  if (uentryList_isUndefined (s))
+    {
+      return st;
+    }
+  else if (uentryList_isVoid (s))
+    {
+      return (cstring_makeLiteral ("void"));
+    }
+  else
+    {
+      for (i = 0; i < uentryList_size (s); i++)
+       {
+         cstring cQuals, name, ctypeName;
+
+         cQuals = qualList_unparse(s->elements[i]->cQuals);
+
+         name =  uentry_getName(s->elements[i]);
+
+         if (ctype_isFunction (uentry_getType (s->elements[i])) )
+           {
+             cur = ctype_unparseFunctionPointer(uentry_getType (s->elements[i] ), cQuals, name);
+             cstring_free(cQuals);
+           }
+         else
+           {
+             ctypeName =  message("%s", ctype_unparse(uentry_getType (s->elements[i] ) ) );
+
+             if (ctype_isFixedArray (uentry_getType (s->elements[i] ) ) )
+               {
+                 cstring aType, aSize;
+                 aType =   cstring_beforeChar(ctypeName, '[');
+                 aSize =    cstring_afterChar(ctypeName, '[');
+
+                 cur = message ("%q %q %q %s",
+                                cQuals, aType, name, aSize  );
+
+                 //              cstring_free(ctypeName);
+               }
+             else    if (ctype_isArray (uentry_getType (s->elements[i] ) ) )
+               {
+                 cstring aType;
+                 aType =   cstring_beforeChar(ctypeName, '[');
+
+                 cur = message ("%s %s %s []",
+                                cQuals, aType, name);
+
+                 //              cstring_free(ctypeName);
+               }
+             else if (ctype_isElips (uentry_getType (s->elements[i] ) ) )
+               {
+                 cur = message(" ... ");
+               }
+             else
+               {
+                 cur = message ("%s %s %s",
+                                cQuals, ctypeName,
+                                name  );
+               }
+             if (qualList_hasInnerConstQualifier (s->elements[i]->cQuals) )
+               {
+                 cur = insertInnerConstQual(cur);
+               }
+           }
+         
+         if (i == 0)
+           {
+             st = message ("%q", cur);
+           }
+         else
+           {
+             st = message ("%q, %q",
+                           st, cur);
+           }
+       }
+      
+      return st;
+    }
+}
+
 cstring uentryList_unparseParams (uentryList s)
 {
   int i;
index cc26ba8c53e161f5cbb6ff6b677ea87ff6235276..ff45a4d81f39d115a35dcba001f47e2a4c37d7c1 100644 (file)
@@ -363,8 +363,6 @@ usymtab_initGlobalMarker () /*@globals globtab@*/
 void
 usymtab_initBool ()
 {
-  DPRINTF (("Init bool!"));
-
   if (context_getFlag (FLG_NOLIB))
     {
       ctype boolt = ctype_bool;
@@ -891,8 +889,7 @@ usymtab_supEntryAux (/*@notnull@*/ usymtab st,
          if (!(st->lexlevel > fileScope || !sRef_modInFunction ()))
            {
              if (uentry_isDatatype (e) || uentry_isAnyTag (e)
-                 || uentry_isEnumConstant (e)
-                 || uentry_isStatic (e)) /* bug fix from Brian St. Pierre */
+                 || uentry_isEnumConstant (e))
                {
                  ; /* 
                     ** Not a bug.  Code like,
@@ -4908,6 +4905,15 @@ static uentry usymtab_lookupAux (usymtab s, cstring k)
 {
   DPRINTF (("Lookup: %s", k));
 
+  //drl jsdjfkljsdklf
+  //drl temproy debuging code //take it out
+  if (cstring_equal(k, "_hooks") )
+  {
+    int jkljks;
+    jkljks = 5;
+  }
+      // end drl tempory debuging code // sd f
+      
   while (s != GLOBAL_ENV)
     {
       int eindex = usymtab_getIndex (s, k);
index 62bc37d9743544ea57e4e95c64f73acc2dc89a64..d300f85521bfd8ea87b34803c2c6a488f7ff52be 100644 (file)
@@ -553,7 +553,7 @@ static /*@only@*/ qtype
       
       result = qtype_addQualList (result, n->quals);
 
-      if (pointers_isDefined (n->pointers))
+      if (n->pointers > 0)
        {
          qtype_adjustPointers (n->pointers, result);
        }
index e2a5e50f6f593e1ee9bad1b95739769a21d2b71f..e3b3f99912f46bfaa4f930c5350e36af0da5353d 100644 (file)
@@ -38,10 +38,10 @@ pkglibdir = $(libdir)/splint
 pkgincludedir = $(includedir)/splint
 top_builddir = ..
 
-ACLOCAL = ${SHELL} /af9/drl7x/reTmp/LCLintDev/config/missing --run aclocal
-AUTOCONF = ${SHELL} /af9/drl7x/reTmp/LCLintDev/config/missing --run autoconf
-AUTOMAKE = ${SHELL} /af9/drl7x/reTmp/LCLintDev/config/missing --run automake
-AUTOHEADER = ${SHELL} /af9/drl7x/reTmp/LCLintDev/config/missing --run autoheader
+ACLOCAL = ${SHELL} /af9/drl7x/lclintLoopBranch/LCLintDev/config/missing --run aclocal
+AUTOCONF = ${SHELL} /af9/drl7x/lclintLoopBranch/LCLintDev/config/missing --run autoconf
+AUTOMAKE = ${SHELL} /af9/drl7x/lclintLoopBranch/LCLintDev/config/missing --run automake
+AUTOHEADER = ${SHELL} /af9/drl7x/lclintLoopBranch/LCLintDev/config/missing --run autoheader
 
 INSTALL = /usr/bin/install -c
 INSTALL_PROGRAM = ${INSTALL}
@@ -61,7 +61,7 @@ host_alias =
 host_triplet = i686-pc-linux-gnu
 target_alias = 
 target_triplet = i686-pc-linux-gnu
-AMTAR = ${SHELL} /af9/drl7x/reTmp/LCLintDev/config/missing --run tar
+AMTAR = ${SHELL} /af9/drl7x/lclintLoopBranch/LCLintDev/config/missing --run tar
 AWK = gawk
 BISON = bison
 CAT = cat
@@ -83,7 +83,7 @@ RM = rm
 VERSION = 3.0.1.7
 am__include = include
 am__quote = 
-install_sh = /af9/drl7x/reTmp/LCLintDev/config/install-sh
+install_sh = /af9/drl7x/lclintLoopBranch/LCLintDev/config/install-sh
 
 AUTOMAKE_OPTIONS = 1.5 foreign
 
@@ -160,7 +160,7 @@ CLEANOUTPUT = $(GREP) -v "Splint 3." | $(GREP) -v "$(SPLINT)" | $(GREP) -v "^mak
 #         $(MAKE) $$TEST 2>&1 | $(CLEANOUTPUT) >$$TEST.expect; \
 #         cat $$TEST.expect; \
 #       done
-CheckSystemDir = (pwd | grep -q  "/usr" && echo "Warning tests which not run correctly when splint is built in /usr or a subdirectory under /usr.  Build splint in a different directory or disregard test failures." )
+CheckSystemDir = pwd | grep -q  "/usr" && echo "Warning tests which not run correctly when splint is built in /usr or a subdirectory under /usr.  Build splint in a different directory or disregard test failures." 
 
 #drl 11/29/2001 This is a very ugly hack to get make dist to work
 EXTRA_DIST = ./abst_t.lcl ./abst_t.lcs  \
@@ -965,9 +965,11 @@ $(SPLINT):
 .c.diff:
        $(MAKE) $* |& $(CLEANOUTPUT) >$*.out && diff $*.expect $*.out
 
+WarnSysDir:
+       $(CheckSystemDir)
+
 .PHONY: quicktest
-quicktest:
-       $(CheckSystemDir)       
+quicktest: WarnSysDir  
        @for TEST in $(QUICKTESTS); do \
           echo "Checking $$TEST..."; \
           $(MAKE) $$TEST 2>&1 | $(CLEANOUTPUT) >$$TEST.out && \
index a96678f86c5c3be2a29167c0d8253f8f5127ed2d..0ca5bdb507527bc83cc2e5363ed7dab6e16caff1 100644 (file)
@@ -40,9 +40,9 @@ SPLINTRNEST   = $(SPLINTRNNEST) -exportlocal +debugfcnconstraint
 UNITTESTS = \
   help \
   abstptr abstract alias alttypes ansireserved argorder \
-  args arraydims arrayinit arraylit blocks break cases cast chararraylit charlit clauses commentchar compdestroy \
+  args arraydims arrayinit arraylit blocks break cases cast charlit clauses commentchar compdestroy \
   compoundliterals compoundstmt constannot controldepth csyntax czechnames czechoslovaknames deadparam \
-  decl divzero enum enumtag exports external fields flags forbody format freearray \
+  decl divzero enum exports external fields flags forbody format freearray \
   funcpointer functionmacro glob globals impabstract info init inparam internal iter keep libs \
   linked lintcomments list loopexec looptesteffect \
   macros macrosef merge mergenull modifies modtest moduncon \
@@ -76,25 +76,25 @@ all check: fulltest
 
 .PHONY: version
 version:
-       -$(SPLINT) -help version
+       -$(SPLINTP) -help version
 
 .PHONY: help
 
 help:
        -@$(SPLINT)
        -@LARCH_PATH=/dev/null; $(SPLINT) -nof empty.lcl
-       -@$(SPLINT) -help
+       -@$(SPLINTP) -help
        -@$(SPLINTP) -asdf
        -@$(SPLINTP) +boolint +boolint 
-       -@$(SPLINT) -help flags alpha
+       -@$(SPLINTP) -help flags alpha
 
 
 #commenting these out for the release because they will almost always fail
 #since the default will only fit one system
 #Don't want to panic the user... 
-#      -@$(SPLINT) -help flags all     | $(GREP) -v "^larchpath <path> "     | $(GREP) -v "^lclimportdir <directory> " | $(GREP) -v "  Path argument.  Default: " |  $(GREP) -v "  Directory argument.  Default: " | $(GREP) -v "  lclimportdir <directory> "
-#      -@$(SPLINT) -help flags full    | $(GREP) -v "^larchpath <path> "     | $(GREP) -v "^lclimportdir <directory> " | $(GREP) -v "  Path argument.  Default: " |  $(GREP) -v "  Directory argument.  Default: " | $(GREP) -v "  lclimportdir <directory> "
-#      -@$(SPLINT) -help flags manual     | $(GREP) -v "^larchpath <path> "   | $(GREP) -v "^lclimportdir <directory> " | $(GREP) -v "  Path argument.  Default: " |  $(GREP) -v "  Directory argument.  Default: " | $(GREP) -v "  lclimportdir <directory> "
+#      -@$(SPLINTP) -help flags all     | $(GREP) -v "^larchpath <path> "     | $(GREP) -v "^lclimportdir <directory> " | $(GREP) -v "  Path argument.  Default: " |  $(GREP) -v "  Directory argument.  Default: " | $(GREP) -v "  lclimportdir <directory> "
+#      -@$(SPLINTP) -help flags full    | $(GREP) -v "^larchpath <path> "     | $(GREP) -v "^lclimportdir <directory> " | $(GREP) -v "  Path argument.  Default: " |  $(GREP) -v "  Directory argument.  Default: " | $(GREP) -v "  lclimportdir <directory> "
+#      -@$(SPLINTP) -help flags manual     | $(GREP) -v "^larchpath <path> "   | $(GREP) -v "^lclimportdir <directory> " | $(GREP) -v "  Path argument.  Default: " |  $(GREP) -v "  Directory argument.  Default: " | $(GREP) -v "  lclimportdir <directory> "
 
 #larch and lclimportdir have different hardcoded default paths so don't include the path in the output..
 
@@ -142,11 +142,13 @@ CLEANOUTPUT = $(GREP) -v "Splint 3." | $(GREP) -v "$(SPLINT)" | $(GREP) -v "^mak
 #         cat $$TEST.expect; \
 #       done
 
-CheckSystemDir = (pwd | grep -q  "/usr" && echo "Warning tests which not run correctly when splint is built in /usr or a subdirectory under /usr.  Build splint in a different directory or disregard test failures." )
+CheckSystemDir = pwd | grep -q  "/usr" && echo "Warning tests which not run correctly when splint is built in /usr or a subdirectory under /usr.  Build splint in a different directory or disregard test failures." 
+
+WarnSysDir:
+       $(CheckSystemDir)
 
 .PHONY: quicktest
-quicktest:
-       $(CheckSystemDir)       
+quicktest: WarnSysDir  
        @for TEST in $(QUICKTESTS); do \
           echo "Checking $$TEST..."; \
           $(MAKE) $$TEST 2>&1 | $(CLEANOUTPUT) >$$TEST.out && \
@@ -159,8 +161,8 @@ fulltest:
        @echo "Testing $(PACKAGE) $(VERSION)..."
        @echo
        @echo "Version Info:"
-       @$(SPLINT) -help version
-       @$(SPLINT) -help vars
+       @$(SPLINTP) -help version
+       @$(SPLINTP) -help vars
        @echo ""
        @echo "Tests:"
        @echo ""
@@ -265,10 +267,6 @@ cast:
        -$(SPLINTR) cast -accessmodule -expect 20
        -$(SPLINTRN) cast2.c +checks -exportlocal -exportheader -expect 3
 
-.PHONY: chararraylit
-chararraylit:
-       -$(SPLINTR) chararraylit.c -expect 2
-
 ### Two addition errors detected with 2.5 with -numliteral.
 
 .PHONY: charlit
@@ -374,10 +372,6 @@ enum:
        -$(SPLINTR) enum -expect 16
        -$(SPLINTR) enum -misscase -expect 14
 
-.PHONY: enumtag
-enumtag:
-       -$(SPLINTR) enumtag.c -expect 2
-
 .PHONY: exports
 exports:
        -$(SPLINTR) exports.c +exporttype +exportvar +exportfcn +topuse +typeuse -expect 6
@@ -493,14 +487,13 @@ keep:
 ### libs
 ### 2001-05-22: 2 new errors found (fixed spec of signal)
 ### 2001-05-30: 3 new errors found (formatconst)
-### 2002-07-08: 2 new errors found (getc modifies errno)
 
 .PHONY: libs
 libs:
        -$(SPLINTR) libs.c +longunsignedunsignedintegral -expect 18
        -$(SPLINTR) libs.c -expect 22
        -$(SPLINTR) libs.c +globunspec +modunspec -expect 25
-       -$(SPLINTR) libs.c +strictlib +globunspec +modunspec -expect 44
+       -$(SPLINTR) libs.c +strictlib +globunspec +modunspec -expect 42
 
 .PHONY: lintcomments
 lintcomments:
@@ -863,12 +856,10 @@ ullint:
 ###
 ### 2001-12-30: Poor warnings reported by Peter Deutsch
 ###
-### 2002-07-03: removed warnings for datatype/macro definitions
-###
 
 .PHONY: utypes
 utypes:
-       ${SPLINTRN} utypes.c -expect 2
+       ${SPLINTRN} utypes.c -expect 6
 
 ###
 
@@ -1057,7 +1048,6 @@ EXTRA_DIST =  ./abst_t.lcl ./abst_t.lcs  \
               ./cases2.c \
               ./cast.c \
               ./cast2.c \
-              ./chararraylit.c \
               ./charlit.c \
               ./clauses.c \
               ./clauses2.c \
@@ -1096,7 +1086,6 @@ EXTRA_DIST =  ./abst_t.lcl ./abst_t.lcs  \
               ./dkf5kSprintf.c \
               ./ensures.c \
               ./enum.c \
-              ./enumtag.c \
               ./exports.c \
               ./external.c \
               ./fields.c \
@@ -1377,7 +1366,6 @@ EXTRA_DIST =  ./abst_t.lcl ./abst_t.lcs  \
               buffertest.expect \
               cases.expect \
               cast.expect \
-              chararraylit.expect \
               charlit.expect \
               clauses.expect \
               commentchar.expect \
@@ -1393,7 +1381,6 @@ EXTRA_DIST =  ./abst_t.lcl ./abst_t.lcs  \
               deadparam.expect \
               decl.expect \
               enum.expect \
-              enumtag.expect \
               exports.expect \
               external.expect \
               fields.expect \
index de41dde1597e40358e9e1bfca515f5f717dd8baa..828b3e55280010305d4d5ee79ceb3fff95a60b79 100644 (file)
@@ -118,9 +118,9 @@ SPLINTRNEST = $(SPLINTRNNEST) -exportlocal +debugfcnconstraint
 UNITTESTS = \
   help \
   abstptr abstract alias alttypes ansireserved argorder \
-  args arraydims arrayinit arraylit blocks break cases cast chararraylit charlit clauses commentchar compdestroy \
+  args arraydims arrayinit arraylit blocks break cases cast charlit clauses commentchar compdestroy \
   compoundliterals compoundstmt constannot controldepth csyntax czechnames czechoslovaknames deadparam \
-  decl divzero enum enumtag exports external fields flags forbody format freearray \
+  decl divzero enum exports external fields flags forbody format freearray \
   funcpointer functionmacro glob globals impabstract info init inparam internal iter keep libs \
   linked lintcomments list loopexec looptesteffect \
   macros macrosef merge mergenull modifies modtest moduncon \
@@ -160,7 +160,7 @@ CLEANOUTPUT = $(GREP) -v "Splint 3." | $(GREP) -v "$(SPLINT)" | $(GREP) -v "^mak
 #         $(MAKE) $$TEST 2>&1 | $(CLEANOUTPUT) >$$TEST.expect; \
 #         cat $$TEST.expect; \
 #       done
-CheckSystemDir = (pwd | grep -q  "/usr" && echo "Warning tests which not run correctly when splint is built in /usr or a subdirectory under /usr.  Build splint in a different directory or disregard test failures." )
+CheckSystemDir = pwd | grep -q  "/usr" && echo "Warning tests which not run correctly when splint is built in /usr or a subdirectory under /usr.  Build splint in a different directory or disregard test failures." 
 
 #drl 11/29/2001 This is a very ugly hack to get make dist to work
 EXTRA_DIST = ./abst_t.lcl ./abst_t.lcs  \
@@ -299,7 +299,6 @@ EXTRA_DIST = ./abst_t.lcl ./abst_t.lcs  \
               ./cases2.c \
               ./cast.c \
               ./cast2.c \
-              ./chararraylit.c \
               ./charlit.c \
               ./clauses.c \
               ./clauses2.c \
@@ -338,7 +337,6 @@ EXTRA_DIST = ./abst_t.lcl ./abst_t.lcs  \
               ./dkf5kSprintf.c \
               ./ensures.c \
               ./enum.c \
-              ./enumtag.c \
               ./exports.c \
               ./external.c \
               ./fields.c \
@@ -619,7 +617,6 @@ EXTRA_DIST = ./abst_t.lcl ./abst_t.lcs  \
               buffertest.expect \
               cases.expect \
               cast.expect \
-              chararraylit.expect \
               charlit.expect \
               clauses.expect \
               commentchar.expect \
@@ -635,7 +632,6 @@ EXTRA_DIST = ./abst_t.lcl ./abst_t.lcs  \
               deadparam.expect \
               decl.expect \
               enum.expect \
-              enumtag.expect \
               exports.expect \
               external.expect \
               fields.expect \
@@ -930,24 +926,24 @@ all check: fulltest
 
 .PHONY: version
 version:
-       -$(SPLINT) -help version
+       -$(SPLINTP) -help version
 
 .PHONY: help
 
 help:
        -@$(SPLINT)
        -@LARCH_PATH=/dev/null; $(SPLINT) -nof empty.lcl
-       -@$(SPLINT) -help
+       -@$(SPLINTP) -help
        -@$(SPLINTP) -asdf
        -@$(SPLINTP) +boolint +boolint 
-       -@$(SPLINT) -help flags alpha
+       -@$(SPLINTP) -help flags alpha
 
 #commenting these out for the release because they will almost always fail
 #since the default will only fit one system
 #Don't want to panic the user... 
-#      -@$(SPLINT) -help flags all     | $(GREP) -v "^larchpath <path> "     | $(GREP) -v "^lclimportdir <directory> " | $(GREP) -v "  Path argument.  Default: " |  $(GREP) -v "  Directory argument.  Default: " | $(GREP) -v "  lclimportdir <directory> "
-#      -@$(SPLINT) -help flags full    | $(GREP) -v "^larchpath <path> "     | $(GREP) -v "^lclimportdir <directory> " | $(GREP) -v "  Path argument.  Default: " |  $(GREP) -v "  Directory argument.  Default: " | $(GREP) -v "  lclimportdir <directory> "
-#      -@$(SPLINT) -help flags manual     | $(GREP) -v "^larchpath <path> "   | $(GREP) -v "^lclimportdir <directory> " | $(GREP) -v "  Path argument.  Default: " |  $(GREP) -v "  Directory argument.  Default: " | $(GREP) -v "  lclimportdir <directory> "
+#      -@$(SPLINTP) -help flags all     | $(GREP) -v "^larchpath <path> "     | $(GREP) -v "^lclimportdir <directory> " | $(GREP) -v "  Path argument.  Default: " |  $(GREP) -v "  Directory argument.  Default: " | $(GREP) -v "  lclimportdir <directory> "
+#      -@$(SPLINTP) -help flags full    | $(GREP) -v "^larchpath <path> "     | $(GREP) -v "^lclimportdir <directory> " | $(GREP) -v "  Path argument.  Default: " |  $(GREP) -v "  Directory argument.  Default: " | $(GREP) -v "  lclimportdir <directory> "
+#      -@$(SPLINTP) -help flags manual     | $(GREP) -v "^larchpath <path> "   | $(GREP) -v "^lclimportdir <directory> " | $(GREP) -v "  Path argument.  Default: " |  $(GREP) -v "  Directory argument.  Default: " | $(GREP) -v "  lclimportdir <directory> "
 
 #larch and lclimportdir have different hardcoded default paths so don't include the path in the output..
 
@@ -969,9 +965,11 @@ $(SPLINT):
 .c.diff:
        $(MAKE) $* |& $(CLEANOUTPUT) >$*.out && diff $*.expect $*.out
 
+WarnSysDir:
+       $(CheckSystemDir)
+
 .PHONY: quicktest
-quicktest:
-       $(CheckSystemDir)       
+quicktest: WarnSysDir  
        @for TEST in $(QUICKTESTS); do \
           echo "Checking $$TEST..."; \
           $(MAKE) $$TEST 2>&1 | $(CLEANOUTPUT) >$$TEST.out && \
@@ -984,8 +982,8 @@ fulltest:
        @echo "Testing $(PACKAGE) $(VERSION)..."
        @echo
        @echo "Version Info:"
-       @$(SPLINT) -help version
-       @$(SPLINT) -help vars
+       @$(SPLINTP) -help version
+       @$(SPLINTP) -help vars
        @echo ""
        @echo "Tests:"
        @echo ""
@@ -1090,10 +1088,6 @@ cast:
        -$(SPLINTR) cast -accessmodule -expect 20
        -$(SPLINTRN) cast2.c +checks -exportlocal -exportheader -expect 3
 
-.PHONY: chararraylit
-chararraylit:
-       -$(SPLINTR) chararraylit.c -expect 2
-
 ### Two addition errors detected with 2.5 with -numliteral.
 
 .PHONY: charlit
@@ -1199,10 +1193,6 @@ enum:
        -$(SPLINTR) enum -expect 16
        -$(SPLINTR) enum -misscase -expect 14
 
-.PHONY: enumtag
-enumtag:
-       -$(SPLINTR) enumtag.c -expect 2
-
 .PHONY: exports
 exports:
        -$(SPLINTR) exports.c +exporttype +exportvar +exportfcn +topuse +typeuse -expect 6
@@ -1317,14 +1307,13 @@ keep:
 ### libs
 ### 2001-05-22: 2 new errors found (fixed spec of signal)
 ### 2001-05-30: 3 new errors found (formatconst)
-### 2002-07-08: 2 new errors found (getc modifies errno)
 
 .PHONY: libs
 libs:
        -$(SPLINTR) libs.c +longunsignedunsignedintegral -expect 18
        -$(SPLINTR) libs.c -expect 22
        -$(SPLINTR) libs.c +globunspec +modunspec -expect 25
-       -$(SPLINTR) libs.c +strictlib +globunspec +modunspec -expect 44
+       -$(SPLINTR) libs.c +strictlib +globunspec +modunspec -expect 42
 
 .PHONY: lintcomments
 lintcomments:
@@ -1684,12 +1673,10 @@ ullint:
 ###
 ### 2001-12-30: Poor warnings reported by Peter Deutsch
 ###
-### 2002-07-03: removed warnings for datatype/macro definitions
-###
 
 .PHONY: utypes
 utypes:
-       ${SPLINTRN} utypes.c -expect 2
+       ${SPLINTRN} utypes.c -expect 6
 
 ###
 
index 283e89ad626091a5e4090b39a630ac50370221bc..109d39d1135e1e3db4d1faffbd72b406a73e7e0a 100644 (file)
@@ -54,11 +54,11 @@ ansireserved.c:9: Name EVANS is reserved for future library extensions. Macros
     (ISO99:7.26.3)
 ansireserved.c:1:5: Name decimal_point is reserved for the standard library
 ansireserved.c:2:5: Function srand inconsistently declared as variable: int
-   load file standard.lcd: Specification of srand as function:
+   load file standard.lcd:899:1: Specification of srand as function:
    [function (unsigned int) returns void]
 ansireserved.c:2:5: Name srand is reserved for the standard library
 ansireserved.c:3:5: Function labs inconsistently declared as variable: int
-   load file standard.lcd: Specification of labs as function:
+   load file standard.lcd:921:1: Specification of labs as function:
    [function (long int) returns long int]
 ansireserved.c:3:5: Name labs is reserved for the standard library
 ansireserved.c:4:5: Name _x is in the implementation name space (any identifier
index cf203e4283b12faaab832859bec9701aa2dcc23f..dafec7b68517017b35e765a79abbe53384b3ae4e 100644 (file)
@@ -2,9 +2,6 @@
 employee.c: (in function employee_equal)
 employee.c:25: Function strncmp expects arg 3 to be size_t gets int:
                   maxEmployeeName
-employee.c: (in function employee_sprint)
-employee.c:33: Buffer overflow possible with sprintf.  Recommend using snprintf
-                  instead: sprintf
 empset.c: (in function empset_insert)
 empset.c:28: Variable er declared but not used
 empset.c: (in function empset_disjointUnion)
@@ -37,17 +34,9 @@ dbase.c: (in function query)
 dbase.c:210: Variable er declared but not used
 dbase.c:211: Variable e declared but not used
 drive.c: (in function main)
-drive.c:47: Buffer overflow possible with sprintf.  Recommend using snprintf
-               instead: sprintf
-drive.c:63: Buffer overflow possible with sprintf.  Recommend using snprintf
-               instead: sprintf
-drive.c:81: Buffer overflow possible with sprintf.  Recommend using snprintf
-               instead: sprintf
-drive.c:118: Buffer overflow possible with sprintf.  Recommend using snprintf
-                instead: sprintf
 drive.c:123: Return value (type db_status) ignored: hire(e)
 
-Finished checking --- 21 code warnings, as expected
+Finished checking --- 16 code warnings, as expected
 
 employee.h:2: Name EMPLOYEE_H is reserved for future library extensions. Macros
     beginning with E and a digit or uppercase letter may be added to <errno.h>.
@@ -94,8 +83,6 @@ employee.c:31: Read-only string literal storage used as initial value for
                   unqualified storage: jobs[1] = "non-manager"
 employee.c:31: Read-only string literal storage used as initial value for
                   unqualified storage: jobs[2] = "?"
-employee.c:33: Buffer overflow possible with sprintf.  Recommend using snprintf
-                  instead: sprintf
 employee.c:34: Array fetch using non-integer, gender: gender[e.gen]
 employee.c:34: Array fetch using non-integer, job: jobs[e.j]
 employee.h: (in macro employee_initMod)
@@ -554,16 +541,10 @@ dbase.c:272: Incompatible types for <= (int, enum { mMGRS, fMGRS, mNON, fNON })
 drive.c: (in function main)
 drive.c:22: Statement has no effect: employee_initMod()
 drive.c:23: Statement has no effect: empset_initMod()
-drive.c:47: Buffer overflow possible with sprintf.  Recommend using snprintf
-               instead: sprintf
 drive.c:48: Return value (type bool) ignored: employee_setName...
 drive.c:49: Return value (type bool) ignored: empset_insert(em...
-drive.c:63: Buffer overflow possible with sprintf.  Recommend using snprintf
-               instead: sprintf
 drive.c:64: Return value (type bool) ignored: employee_setName...
 drive.c:65: Return value (type bool) ignored: empset_delete(em...
-drive.c:81: Buffer overflow possible with sprintf.  Recommend using snprintf
-               instead: sprintf
 drive.c:82: Return value (type bool) ignored: employee_setName...
 drive.c:83: Return value (type bool) ignored: empset_insert(em...
 drive.c:107: Return value (type bool) ignored: empset_delete(em...
@@ -572,8 +553,6 @@ drive.c:116: Body of else clause of if statement is not a block:
                 e.gen = FEMALE;
 drive.c:117: Body of if clause of if statement is not a block: e.j = NONMGR;
 drive.c:117: Body of else clause of if statement is not a block: e.j = MGR;
-drive.c:118: Buffer overflow possible with sprintf.  Recommend using snprintf
-                instead: sprintf
 drive.c:119: Return value (type bool) ignored: employee_setName...
 drive.c:123: Return value (type db_status) ignored: hire(e)
 drive.c:127: Assignment of db_status to int: j = hire(e)
@@ -674,8 +653,7 @@ type                         1           0
 enumindex                   24           0
 enumint                     15           0
 matchanyintegral             2           0
-bufferoverflowhigh           5           0
                           ========  =========
-Total                      338          73
+Total                      333          73
 
-Finished checking --- 338 code warnings, as expected
+Finished checking --- 333 code warnings, as expected
index b93e9c003c52b5ef2efb5bf7b658909156010c7c..7fe89bb314e949f3f8a68a357b8929b6c68fa643 100644 (file)
@@ -4,9 +4,10 @@ flags.c:5:9: Variable y
     initialized to type
     char, expects int:
     'c'
-flags.c:7:18: Value for
-    linelen must be at
-    least 20 (given 13)
+flags.c:7:18: Warning:
+    Value for linelen
+    must be at least 20
+    (given 13)
 flags.c:11:5:
     Internal identifier
     xx2 is not
index fd64ea612b84fcd8119e75fe2d410479d1c3288b..cadfed2fa83e84da25695ec01984dd216f1f2317 100644 (file)
@@ -1,6 +1,6 @@
 ;;; Splint Library  null6.lcd
-;;Splint 3.0.1.7 --- 28 Mar 2002
-;;lib:299
+;;Splint 3.0.1.7 --- 26 Jul 2002
+;;lib:302
 ;;ctTable
 0 u-2 19 38
 0 p1|-2 20 39
index 70d2a03c1fd0c99d1514182283c634c7614521d5..1b4ef0fe3ae53e04869fee6227793397c6aff19e 100644 (file)
@@ -27,9 +27,9 @@ Finished checking --- 2 code warnings, as expected
 
 decl.c:3:21: Structure struct tm declared with fields { int x; }, specified
                 with fields { int tm_sec; int tm_min; int tm_hour;, ... }
-   load file standard.lcd: Specification of struct tm
+   load file standard.lcd:963:1: Specification of struct tm
    decl.c:3:17: Field tm_sec in specified corresponds to x in declaration
-   load file standard.lcd: Specification of tm_sec
+   load file standard.lcd:638:1: Specification of tm_sec
 
 Finished checking --- 1 code warning, as expected
 
index 734a5ff4da677987a13496662a285afcdf99f7eb..8984a7bf588960f1cb54c002843934af7d729aaa 100644 (file)
@@ -70,7 +70,7 @@ fink:
        $(SPLINT) fink.c 
 
 driverstub:
-       $(SPLINT) driverstub.c -sysdirs "/usr/"
+       $(SPLINT) driverstub.c
 
 alignof:
        $(SPLINT) alignof.c -expect 2
index b0838cb4f1ddd11709365bcf38ba5707047e48c3..7c57f16d67eb7508e1010cf69f9356c54b7854cc 100644 (file)
@@ -1,6 +1,6 @@
 ;;; Splint Library  newlint.lcd
-;;Splint 3.0.1.7 --- 28 Mar 2002
-;;lib:299
+;;Splint 3.0.1.7 --- 26 Jul 2002
+;;lib:302
 ;;ctTable
 0 u-2 19 38
 0 p1|-2 20 39
index 30a4c9bd255176c60d152f73fc768cb73255df3a..9a3bf8a5f1609565d0c90bdf629f77d53e7c3371 100644 (file)
@@ -3,7 +3,15 @@ utypes.c:16: Include file <sys/types.h> matches the name of a POSIX library,
     but the POSIX library is not being used.  Consider using +posixlib or
     +posixstrictlib to select the POSIX library, or -warnposix to suppress this
     message.
+utypes.c:3:23: Variable uchar inconsistently redeclared as datatype
+   utypes.c:13: Previous definition of uchar as variable: <any>
+utypes.c:4:24: Variable ushort inconsistently redeclared as datatype
+   utypes.c:15: Previous definition of ushort as variable: <any>
+utypes.c:5:22: Variable uint inconsistently redeclared as datatype
+   utypes.c:14: Previous definition of uint as variable: <any>
+utypes.c:6:23: Variable ulong inconsistently redeclared as datatype
+   utypes.c:16: Previous definition of ulong as variable: <any>
 utypes.c: (in function f)
 utypes.c:26:8: Variable src_bytes declared but not used
 
-Finished checking --- 2 code warnings, as expected
+Finished checking --- 6 code warnings, as expected
This page took 1.071984 seconds and 5 git commands to generate.