From 495af944dbec7ce9480ebe3d955aed7aff85a754 Mon Sep 17 00:00:00 2001 From: drl7x Date: Sat, 27 Jul 2002 04:40:52 +0000 Subject: [PATCH] Merged this branch with the one in the splint.sf.net repository. --- Makefile.am | 2 +- Makefile.in | 2 +- lib/posix.h | 30 +- lib/standard.h | 203 +- lib/unix.h | 565 ++-- src/Headers/constraint.h | 4 +- src/Headers/constraintExpr.h | 4 +- src/Headers/constraintList.h | 4 +- src/Headers/cstringList.h | 2 - src/Headers/cstringSList.h | 6 +- src/Headers/exprChecks.h | 2 + src/Headers/fileLib.h | 6 + src/Headers/fileloc.h | 4 + src/Headers/flag_codes.h | 1 - src/Headers/flags.h | 23 +- src/Headers/forwardTypes.h | 11 +- src/Headers/general.h | 6 + src/Headers/lctype.h | 17 +- src/Headers/llmain.h | 10 +- src/Headers/qtype.h | 11 +- src/Headers/qual.h | 16 +- src/Headers/sort.h | 2 +- src/Headers/splintMacros.nf | 9 + src/Headers/uentry.h | 7 + src/Headers/uentryList.h | 2 + src/Makefile.am | 16 +- src/Makefile.in | 70 +- src/abstract.c | 16 +- src/cgrammar.c.der | 4916 +++++++++++++++++----------------- src/cgrammar.y | 134 +- src/clabstract.c | 41 +- src/constraint.c | 9 +- src/constraintExpr.c | 79 +- src/constraintGeneration.c | 13 +- src/constraintList.c | 14 +- src/constraintResolve.c | 11 +- src/constraintTerm.c | 38 +- src/context.c | 46 +- src/cpplib.c | 151 +- src/cppmain.c | 9 +- src/cscanner.l | 40 +- src/cstringList.c | 13 - src/ctbase.i | 137 +- src/cttable.i | 7 +- src/ctype.c | 174 +- src/exprChecks.c | 79 +- src/exprNode.c | 209 +- src/fileTable.c | 54 +- src/fileloc.c | 83 +- src/flags.c | 400 +-- src/flags.def | 50 +- src/general.c | 29 +- src/idDecl.c | 170 +- src/lclinit.c | 27 +- src/llerror.c | 24 +- src/llgrammar.c.der | 3462 ++++++++++++------------ src/llgrammar.y | 8 +- src/llmain.c | 1565 ++++++++++- src/lltok.c | 5 + src/loopHeuristics.c | 444 ++- src/lslinit.c | 159 +- src/message.c | 4 +- src/osd.c | 16 +- src/qtype.c | 64 +- src/qual.c | 195 +- src/qualList.c | 21 +- src/sRef.c | 8 +- src/signature.c.der | 1039 +++---- src/uentry.c | 118 +- src/uentryList.c | 85 + src/usymtab.c | 14 +- src/usymtab_interface.c | 2 +- test/Makefile | 20 +- test/Makefile.am | 47 +- test/Makefile.in | 47 +- test/ansireserved.expect | 4 +- test/db1.expect | 28 +- test/flags.expect | 7 +- test/null6.lcd | 4 +- test/tests2.2.expect | 4 +- test/tests2.4/Makefile | 2 +- test/tests2.5/newlint.lcd | 4 +- test/utypes.expect | 10 +- 83 files changed, 8987 insertions(+), 6407 deletions(-) diff --git a/Makefile.am b/Makefile.am index 3beeb1d..38450a1 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 diff --git a/Makefile.in b/Makefile.in index d299af7..70349f6 100644 --- a/Makefile.in +++ b/Makefile.in @@ -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 diff --git a/lib/posix.h b/lib/posix.h index 924efa8..afac9e4 100644 --- a/lib/posix.h +++ b/lib/posix.h @@ -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 diff --git a/lib/standard.h b/lib/standard.h index 6623d8b..caed5a7 100644 --- a/lib/standard.h +++ b/lib/standard.h @@ -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 * diff --git a/lib/unix.h b/lib/unix.h index 627bb30..00e01fc 100644 --- a/lib/unix.h +++ b/lib/unix.h @@ -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 @@ -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; diff --git a/src/Headers/constraint.h b/src/Headers/constraint.h index 04b735a..43f9fcc 100644 --- a/src/Headers/constraint.h +++ b/src/Headers/constraint.h @@ -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); diff --git a/src/Headers/constraintExpr.h b/src/Headers/constraintExpr.h index df65c15..c5e4290 100644 --- a/src/Headers/constraintExpr.h +++ b/src/Headers/constraintExpr.h @@ -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) /*@*/ ; diff --git a/src/Headers/constraintList.h b/src/Headers/constraintList.h index 85c2f38..cb6f8fe 100644 --- a/src/Headers/constraintList.h +++ b/src/Headers/constraintList.h @@ -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) ; diff --git a/src/Headers/cstringList.h b/src/Headers/cstringList.h index 617ad97..c076646 100644 --- a/src/Headers/cstringList.h +++ b/src/Headers/cstringList.h @@ -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) /*@*/ ; diff --git a/src/Headers/cstringSList.h b/src/Headers/cstringSList.h index a1bf382..03c51dd 100644 --- a/src/Headers/cstringSList.h +++ b/src/Headers/cstringSList.h @@ -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); diff --git a/src/Headers/exprChecks.h b/src/Headers/exprChecks.h index cfb9dae..5e391bb 100644 --- a/src/Headers/exprChecks.h +++ b/src/Headers/exprChecks.h @@ -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); diff --git a/src/Headers/fileLib.h b/src/Headers/fileLib.h index d25aff3..86ac34b 100644 --- a/src/Headers/fileLib.h +++ b/src/Headers/fileLib.h @@ -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 diff --git a/src/Headers/fileloc.h b/src/Headers/fileloc.h index d8dc68c..b14c6bf 100644 --- a/src/Headers/fileloc.h +++ b/src/Headers/fileloc.h @@ -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 diff --git a/src/Headers/flag_codes.h b/src/Headers/flag_codes.h index 8f5531a..cf5a8a7 100644 --- a/src/Headers/flag_codes.h +++ b/src/Headers/flag_codes.h @@ -16,7 +16,6 @@ typedef enum { - MODENAME_FLAG = -3, SKIP_FLAG = -2, INVALID_FLAG = -1, # include "flag_codes.gen" diff --git a/src/Headers/flags.h b/src/Headers/flags.h index 4cf14a2..8bb783e 100644 --- a/src/Headers/flags.h +++ b/src/Headers/flags.h @@ -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 diff --git a/src/Headers/forwardTypes.h b/src/Headers/forwardTypes.h index 3963638..329e7db 100644 --- a/src/Headers/forwardTypes.h +++ b/src/Headers/forwardTypes.h @@ -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 */ diff --git a/src/Headers/general.h b/src/Headers/general.h index 7951d37..1711cf8 100644 --- a/src/Headers/general.h +++ b/src/Headers/general.h @@ -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 diff --git a/src/Headers/lctype.h b/src/Headers/lctype.h index 3288b34..0cd603c 100644 --- a/src/Headers/lctype.h +++ b/src/Headers/lctype.h @@ -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 diff --git a/src/Headers/llmain.h b/src/Headers/llmain.h index 3d7b0fc..89ca3dc 100644 --- a/src/Headers/llmain.h +++ b/src/Headers/llmain.h @@ -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 diff --git a/src/Headers/qtype.h b/src/Headers/qtype.h index 208e332..2c3dd1e 100644 --- a/src/Headers/qtype.h +++ b/src/Headers/qtype.h @@ -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 diff --git a/src/Headers/qual.h b/src/Headers/qual.h index 646e8ab..39d3d58 100644 --- a/src/Headers/qual.h +++ b/src/Headers/qual.h @@ -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 diff --git a/src/Headers/sort.h b/src/Headers/sort.h index 728b3a7..14f7a5c 100644 --- a/src/Headers/sort.h +++ b/src/Headers/sort.h @@ -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) /*@*/ ; diff --git a/src/Headers/splintMacros.nf b/src/Headers/splintMacros.nf index 265edf6..193459b 100644 --- a/src/Headers/splintMacros.nf +++ b/src/Headers/splintMacros.nf @@ -137,6 +137,15 @@ # 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 diff --git a/src/Headers/uentry.h b/src/Headers/uentry.h index f335c93..a97eea3 100644 --- a/src/Headers/uentry.h +++ b/src/Headers/uentry.h @@ -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 */ diff --git a/src/Headers/uentryList.h b/src/Headers/uentryList.h index 56cd289..8e979a4 100644 --- a/src/Headers/uentryList.h +++ b/src/Headers/uentryList.h @@ -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;@*/ diff --git a/src/Makefile.am b/src/Makefile.am index cd9ece6..bf7cd2b 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -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 diff --git a/src/Makefile.in b/src/Makefile.in index 044831e..6fa9d65 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -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 diff --git a/src/abstract.c b/src/abstract.c index 301a81f..e57c603 100644 --- a/src/abstract.c +++ b/src/abstract.c @@ -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)); } diff --git a/src/cgrammar.c.der b/src/cgrammar.c.der index 4be8618..0736e31 100644 --- a/src/cgrammar.c.der +++ b/src/cgrammar.c.der @@ -165,89 +165,88 @@ #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;} } diff --git a/src/cgrammar.y b/src/cgrammar.y index 4a08b45..1d2ceba 100644 --- a/src/cgrammar.y +++ b/src/cgrammar.y @@ -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 QNOTREACHED /* type qualifiers: */ -%token QCONST QRESTRICT QVOLATILE QINLINE QEXTENSION QEXTERN QSTATIC QAUTO QREGISTER +%token QCONST QVOLATILE QINLINE QEXTENSION QEXTERN QSTATIC QAUTO QREGISTER %token QOUT QIN QYIELD QONLY QTEMP QSHARED QREF QUNIQUE %token QCHECKED QUNCHECKED QCHECKEDSTRICT QCHECKMOD %token QKEEP QKEPT QPARTIAL QSPECIAL QOWNED QDEPENDENT @@ -237,7 +237,7 @@ extern void yyerror (char *); %token METASTATE_NAME %type metaStateName %type enumerator newId /*@-varuse@*/ /* yacc declares yytranslate here */ -%type pointers /*@=varuse@*/ +%type pointers /*@=varuse@*/ %type doHeader stateTag conditionTag startConditionClause %type exitsQualifier checkQualifier stateQualifier @@ -251,7 +251,7 @@ extern void yyerror (char *); %type namedDecl namedDeclBase optNamedDecl %type plainNamedDecl plainNamedDeclBase %type structNamedDecl -%type fcnDefHdrAux plainFcn +%type fcnDefHdrAux plainFcn fcnDefHdr %type paramDecl %type id @@ -312,8 +312,8 @@ extern void yyerror (char *); %type designator designatorList designation -%type storageSpecifier typeQualifier typeModifier globQual innerMods -%type optGlobQuals innerModsList +%type storageSpecifier typeQualifier typeModifier globQual +%type optGlobQuals %type completeType completeTypeSpecifier optCompleteType %type 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 diff --git a/src/clabstract.c b/src/clabstract.c index a100791..464faee 100644 --- a/src/clabstract.c +++ b/src/clabstract.c @@ -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 =@*/ 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))); diff --git a/src/constraint.c b/src/constraint.c index cb87d10..7c3338c 100644 --- a/src/constraint.c +++ b/src/constraint.c @@ -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)) { diff --git a/src/constraintExpr.c b/src/constraintExpr.c index c40a31f..e0a9de6 100644 --- a/src/constraintExpr.c +++ b/src/constraintExpr.c @@ -36,13 +36,6 @@ # 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*/ diff --git a/src/constraintGeneration.c b/src/constraintGeneration.c index c08063d..6ab433f 100644 --- a/src/constraintGeneration.c +++ b/src/constraintGeneration.c @@ -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; } diff --git a/src/constraintList.c b/src/constraintList.c index fe65c3c..cdfe882 100644 --- a/src/constraintList.c +++ b/src/constraintList.c @@ -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); } } diff --git a/src/constraintResolve.c b/src/constraintResolve.c index 9cbc788..97f3fbd 100644 --- a/src/constraintResolve.c +++ b/src/constraintResolve.c @@ -39,12 +39,12 @@ # 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) ); diff --git a/src/constraintTerm.c b/src/constraintTerm.c index 868c9d5..08c840a 100644 --- a/src/constraintTerm.c +++ b/src/constraintTerm.c @@ -37,13 +37,8 @@ # 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); diff --git a/src/context.c b/src/context.c index ba5b7ad..117dcc7 100644 --- a/src/context.c +++ b/src/context.c @@ -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))); } diff --git a/src/cpplib.c b/src/cpplib.c index 7534384..7055789 100644 --- a/src/cpplib.c +++ b/src/cpplib.c @@ -74,10 +74,7 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # include # 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 /* Reported by Paul Smith */ # include # include @@ -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 (¯o_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 (¯o_mark, pfile); */ + parseSetMark (¯o_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@*/ diff --git a/src/cppmain.c b/src/cppmain.c index a01bf67..9c568d9 100644 --- a/src/cppmain.c +++ b/src/cppmain.c @@ -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 */ - 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; diff --git a/src/cscanner.l b/src/cscanner.l index 1a8e618..0d05b48 100644 --- a/src/cscanner.l +++ b/src/cscanner.l @@ -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 diff --git a/src/cstringList.c b/src/cstringList.c index 479b4be..145c8d2 100644 --- a/src/cstringList.c +++ b/src/cstringList.c @@ -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; - } -} diff --git a/src/ctbase.i b/src/ctbase.i index 5e3d374..56d31aa 100644 --- a/src/ctbase.i +++ b/src/ctbase.i @@ -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; diff --git a/src/cttable.i b/src/cttable.i index c75982a..18a30eb 100644 --- a/src/cttable.i +++ b/src/cttable.i @@ -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 "); } } diff --git a/src/ctype.c b/src/ctype.c index 7fc16c4..ce52aba 100644 --- a/src/ctype.c +++ b/src/ctype.c @@ -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; +} diff --git a/src/exprChecks.c b/src/exprChecks.c index 4b3b81d..8467e41 100644 --- a/src/exprChecks.c +++ b/src/exprChecks.c @@ -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 \n%s\n{\n%s{\n%s\n}\n}\n", + uentry_unparseFunctionHeader (ue), + locateInfo, + exprNode_unparse(body) + ); + } + else + { + outCode = message( "\n#include \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); } diff --git a/src/exprNode.c b/src/exprNode.c index 8940676..1d15e31 100644 --- a/src/exprNode.c +++ b/src/exprNode.c @@ -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 (""); + return cstring_newEmpty(); + //return cstring_makeLiteralTemp (""); } 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 = cstring_makeLiteral (""); + 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; diff --git a/src/fileTable.c b/src/fileTable.c index dd04efc..96c060d 100644 --- a/src/fileTable.c +++ b/src/fileTable.c @@ -55,11 +55,7 @@ # if defined(__IBMC__) && defined(OS2) # include -# include # 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"); } } diff --git a/src/fileloc.c b/src/fileloc.c index 151d7dd..2d55c83 100644 --- a/src/fileloc.c +++ b/src/fileloc.c @@ -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 (""); - } + 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; + } + +} diff --git a/src/flags.c b/src/flags.c index 9f97ef1..389da7e 100644 --- a/src/flags.c +++ b/src/flags.c @@ -27,10 +27,7 @@ # 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); - } - } -} + diff --git a/src/flags.def b/src/flags.def index f78ed3b..f7507e6 100644 --- a/src/flags.def +++ b/src/flags.def @@ -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 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", diff --git a/src/general.c b/src/general.c index 5a2e090..c6595dc 100644 --- a/src/general.c +++ b/src/general.c @@ -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; + } +} diff --git a/src/idDecl.c b/src/idDecl.c index 851c622..16c9ef4 100644 --- a/src/idDecl.c +++ b/src/idDecl.c @@ -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 ("")); + } +} + 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 ("")); + } +} + + +/*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) { diff --git a/src/lclinit.c b/src/lclinit.c index f6f697a..58a1260 100644 --- a/src/lclinit.c +++ b/src/lclinit.c @@ -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) { - ; } diff --git a/src/llerror.c b/src/llerror.c index 023e99c..5f33747 100644 --- a/src/llerror.c +++ b/src/llerror.c @@ -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 /* 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; diff --git a/src/llgrammar.c.der b/src/llgrammar.c.der index 7f761c3..391b59d 100644 --- a/src/llgrammar.c.der +++ b/src/llgrammar.c.der @@ -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. */ @@ -63,140 +63,140 @@ #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 -#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 -#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 -#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 */ +# 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 +# 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 +# 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 */ #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 /* 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 @@ -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 */ + 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 } diff --git a/src/llgrammar.y b/src/llgrammar.y index 09ce6ba..24039b0 100644 --- a/src/llgrammar.y +++ b/src/llgrammar.y @@ -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 %type signature %type typeName -%type middle placeList -%type pointers +%type middle placeList pointers %type optAbstDeclarator %type lclTypeSpec lclType sortSpec %type 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 diff --git a/src/llmain.c b/src/llmain.c index 5d4c546..a3793be 100644 --- a/src/llmain.c +++ b/src/llmain.c @@ -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" @@ -78,13 +78,27 @@ 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 .c and %s.", LCL_EXTENSION)); + llmsglit (""); + llmsglit ("Use splint -help 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 (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 uses a type " + "defined by posix header but not defined by the " + "posix library, we might do: "); + llmsglit (""); + llmsglit (" /*@-skipposixheaders@*/"); + llmsglit (" # include "); + llmsglit (" /*@=skipposixheaders@*/"); + llmsglit (" # include "); + llmsglit (""); + llmsglit ("to force Splint to process ."); + 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 ."); + llmsglit (""); + llmsglit ("Consult the User's Guide for descriptions of checking associated with each annotation."); + llmsglit (""); + llmsglit ("Globals: (in function declarations)"); + llmsglit (" /*@globals ,+ @*/"); + llmsglit (" globitem is an identifier, internalState or fileSystem"); + llmsglit (""); + llmsglit ("Modifies: (in function declarations)"); + llmsglit (" /*@modifies ,+ @*/"); + llmsglit (" moditem is an lvalue"); + llmsglit (" /*@modifies nothing @*/"); + llmsglit (" /*@*/ (Abbreviation for no globals and modifies nothing.)"); + llmsglit (""); + llmsglit ("Iterators:"); + llmsglit (" /*@iter () @*/ - declare an iterator"); + llmsglit (""); + llmsglit ("Constants:"); + llmsglit (" /*@constant @*/ - declares a constant"); + llmsglit (""); + llmsglit ("Alternate Types:"); + llmsglit (" /*@alt ,+ @*/"); + 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@*/"); + llgenindentmsgnoloc + (cstring_makeLiteral + ("No errors will be reported from an /*@i@*/ (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@*/"); + llgenindentmsgnoloc + (cstring_makeLiteral + ("Like i and i, 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 @*/"); + llmsglit (" Allows the following code to access the representation of "); + llmsglit ("/*@noaccess @*/"); + llmsglit (" Hides the representation of "); + 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 "); + 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 = (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 = ", 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++; } diff --git a/src/lltok.c b/src/lltok.c index 4906dc5..ba77b5e 100644 --- a/src/lltok.c +++ b/src/lltok.c @@ -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) { diff --git a/src/loopHeuristics.c b/src/loopHeuristics.c index a0c857a..3c63f9f 100644 --- a/src/loopHeuristics.c +++ b/src/loopHeuristics.c @@ -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 */ @@ -43,12 +43,20 @@ /*@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); } + + + } diff --git a/src/lslinit.c b/src/lslinit.c index 64d6919..01fbdad 100644 --- a/src/lslinit.c +++ b/src/lslinit.c @@ -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); -} diff --git a/src/message.c b/src/message.c index 41757a5..8a825c9 100644 --- a/src/message.c +++ b/src/message.c @@ -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 diff --git a/src/osd.c b/src/osd.c index a78861f..6a0fea6 100644 --- 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; diff --git a/src/qtype.c b/src/qtype.c index 19df773..d284987 100644 --- a/src/qtype.c +++ b/src/qtype.c @@ -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 diff --git a/src/qual.c b/src/qual.c index 08af30e..ba57d11 100644 --- a/src/qual.c +++ b/src/qual.c @@ -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(""); - case QU_LAST: return cstring_makeLiteralTemp ("< last >"); - case QU_USERANNOT: return cstring_makeLiteralTemp (""); - } - } - + 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(""); + case QU_LAST: return cstring_makeLiteralTemp ("< last >"); + case QU_USERANNOT: return cstring_makeLiteralTemp (""); + 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; +} diff --git a/src/qualList.c b/src/qualList.c index 39182b6..08e2bf7 100644 --- a/src/qualList.c +++ b/src/qualList.c @@ -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; +} diff --git a/src/sRef.c b/src/sRef.c index 691b14f..f6ad605 100644 --- a/src/sRef.c +++ b/src/sRef.c @@ -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)) { diff --git a/src/signature.c.der b/src/signature.c.der index 15b7d4f..02a32cc 100644 --- a/src/signature.c.der +++ b/src/signature.c.der @@ -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. */ @@ -63,51 +63,51 @@ #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 -#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 -#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 -#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 */ +# 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 +# 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 +# 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 */ #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 /* 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 @@ -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 */ + 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 } diff --git a/src/uentry.c b/src/uentry.c index 3dee2e7..b9457cb 100644 --- a/src/uentry.c +++ b/src/uentry.c @@ -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))); diff --git a/src/uentryList.c b/src/uentryList.c index 96951d6..3eed5b5 100644 --- a/src/uentryList.c +++ b/src/uentryList.c @@ -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; diff --git a/src/usymtab.c b/src/usymtab.c index cc26ba8..ff45a4d 100644 --- a/src/usymtab.c +++ b/src/usymtab.c @@ -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); diff --git a/src/usymtab_interface.c b/src/usymtab_interface.c index 62bc37d..d300f85 100644 --- a/src/usymtab_interface.c +++ b/src/usymtab_interface.c @@ -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); } diff --git a/test/Makefile b/test/Makefile index e2a5e50..e3b3f99 100644 --- a/test/Makefile +++ b/test/Makefile @@ -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 && \ diff --git a/test/Makefile.am b/test/Makefile.am index a96678f..0ca5bdb 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -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 " | $(GREP) -v "^lclimportdir " | $(GREP) -v " Path argument. Default: " | $(GREP) -v " Directory argument. Default: " | $(GREP) -v " lclimportdir " -# -@$(SPLINT) -help flags full | $(GREP) -v "^larchpath " | $(GREP) -v "^lclimportdir " | $(GREP) -v " Path argument. Default: " | $(GREP) -v " Directory argument. Default: " | $(GREP) -v " lclimportdir " -# -@$(SPLINT) -help flags manual | $(GREP) -v "^larchpath " | $(GREP) -v "^lclimportdir " | $(GREP) -v " Path argument. Default: " | $(GREP) -v " Directory argument. Default: " | $(GREP) -v " lclimportdir " +# -@$(SPLINTP) -help flags all | $(GREP) -v "^larchpath " | $(GREP) -v "^lclimportdir " | $(GREP) -v " Path argument. Default: " | $(GREP) -v " Directory argument. Default: " | $(GREP) -v " lclimportdir " +# -@$(SPLINTP) -help flags full | $(GREP) -v "^larchpath " | $(GREP) -v "^lclimportdir " | $(GREP) -v " Path argument. Default: " | $(GREP) -v " Directory argument. Default: " | $(GREP) -v " lclimportdir " +# -@$(SPLINTP) -help flags manual | $(GREP) -v "^larchpath " | $(GREP) -v "^lclimportdir " | $(GREP) -v " Path argument. Default: " | $(GREP) -v " Directory argument. Default: " | $(GREP) -v " lclimportdir " #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 \ diff --git a/test/Makefile.in b/test/Makefile.in index de41dde..828b3e5 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -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 " | $(GREP) -v "^lclimportdir " | $(GREP) -v " Path argument. Default: " | $(GREP) -v " Directory argument. Default: " | $(GREP) -v " lclimportdir " -# -@$(SPLINT) -help flags full | $(GREP) -v "^larchpath " | $(GREP) -v "^lclimportdir " | $(GREP) -v " Path argument. Default: " | $(GREP) -v " Directory argument. Default: " | $(GREP) -v " lclimportdir " -# -@$(SPLINT) -help flags manual | $(GREP) -v "^larchpath " | $(GREP) -v "^lclimportdir " | $(GREP) -v " Path argument. Default: " | $(GREP) -v " Directory argument. Default: " | $(GREP) -v " lclimportdir " +# -@$(SPLINTP) -help flags all | $(GREP) -v "^larchpath " | $(GREP) -v "^lclimportdir " | $(GREP) -v " Path argument. Default: " | $(GREP) -v " Directory argument. Default: " | $(GREP) -v " lclimportdir " +# -@$(SPLINTP) -help flags full | $(GREP) -v "^larchpath " | $(GREP) -v "^lclimportdir " | $(GREP) -v " Path argument. Default: " | $(GREP) -v " Directory argument. Default: " | $(GREP) -v " lclimportdir " +# -@$(SPLINTP) -help flags manual | $(GREP) -v "^larchpath " | $(GREP) -v "^lclimportdir " | $(GREP) -v " Path argument. Default: " | $(GREP) -v " Directory argument. Default: " | $(GREP) -v " lclimportdir " #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 ### diff --git a/test/ansireserved.expect b/test/ansireserved.expect index 283e89a..109d39d 100644 --- a/test/ansireserved.expect +++ b/test/ansireserved.expect @@ -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 diff --git a/test/db1.expect b/test/db1.expect index cf203e4..dafec7b 100644 --- a/test/db1.expect +++ b/test/db1.expect @@ -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 . @@ -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 diff --git a/test/flags.expect b/test/flags.expect index b93e9c0..7fe89bb 100644 --- a/test/flags.expect +++ b/test/flags.expect @@ -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 diff --git a/test/null6.lcd b/test/null6.lcd index fd64ea6..cadfed2 100644 --- a/test/null6.lcd +++ b/test/null6.lcd @@ -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 diff --git a/test/tests2.2.expect b/test/tests2.2.expect index 70d2a03..1b4ef0f 100644 --- a/test/tests2.2.expect +++ b/test/tests2.2.expect @@ -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 diff --git a/test/tests2.4/Makefile b/test/tests2.4/Makefile index 734a5ff..8984a7b 100644 --- a/test/tests2.4/Makefile +++ b/test/tests2.4/Makefile @@ -70,7 +70,7 @@ fink: $(SPLINT) fink.c driverstub: - $(SPLINT) driverstub.c -sysdirs "/usr/" + $(SPLINT) driverstub.c alignof: $(SPLINT) alignof.c -expect 2 diff --git a/test/tests2.5/newlint.lcd b/test/tests2.5/newlint.lcd index b0838cb..7c57f16 100644 --- a/test/tests2.5/newlint.lcd +++ b/test/tests2.5/newlint.lcd @@ -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 diff --git a/test/utypes.expect b/test/utypes.expect index 30a4c9b..9a3bf8a 100644 --- a/test/utypes.expect +++ b/test/utypes.expect @@ -3,7 +3,15 @@ utypes.c:16: Include file 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: +utypes.c:4:24: Variable ushort inconsistently redeclared as datatype + utypes.c:15: Previous definition of ushort as variable: +utypes.c:5:22: Variable uint inconsistently redeclared as datatype + utypes.c:14: Previous definition of uint as variable: +utypes.c:6:23: Variable ulong inconsistently redeclared as datatype + utypes.c:16: Previous definition of ulong as variable: 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 -- 2.45.1