From f9264521e093e570a8831d5238ccc3bc20e01119 Mon Sep 17 00:00:00 2001 From: evans1629 Date: Mon, 8 Jul 2002 18:10:24 +0000 Subject: [PATCH] - library fixes: getgrgid, getgrnam, getpwnam
These functions from grp.h in the Posix and Unix libraries should be declared to return /*@observer@*/ references. Reported by Enrico Scholz. Fixed in CVS (2002-07-08), will be in 3.0.1.7.
sys/resource.h
The sys/resource.h segment of the Unix library was not updated to SUSv3. The type of rlim_t, struct rlimit and struct rusage have been updated. Reported by Enrico Scholz. Fixed in CVS (2002-07-08), will be in 3.0.1.7.
Standard library missing snprintf
snprintf is in the unix library, but not the standard library. It was added to ISO C99, so should be in the standard library. Reported by Olivier L'Heureux. Fixed in CVS (2002-07-08), will be in 3.0.1.7.
- parsing support for restrict pointers - showloadloc to control printing line number for load files --- lib/Makefile.am | 6 + lib/Makefile.in | 6 + lib/posix.h | 30 +- lib/standard.h | 55 +- lib/stdio.h | 369 +-- lib/unix.h | 265 +- src/Headers/basic.h | 1 + src/Headers/cgrammar_tokens.h | 167 +- src/Headers/forwardTypes.h | 1 + src/Headers/lclTypeSpecNode.h | 2 +- src/Headers/lctype.h | 2 +- src/Headers/llgrammar_gen.h | 1 + src/Headers/llgrammar_gen2.h | 1 + src/Headers/mtgrammar_tokens.h | 10 +- src/Headers/qtype.h | 2 +- src/Headers/qual.h | 9 +- src/Headers/qualList.h | 3 + src/Headers/sort.h | 2 +- src/Makefile.am | 3 +- src/Makefile.in | 17 +- src/abstract.c | 16 +- src/cgrammar.c.der | 4379 ++++++++++++++++---------------- src/cgrammar.y | 33 +- src/cpplib.c | 5 + src/cscanner.l | 1 + src/ctype.c | 7 +- src/fileloc.c | 10 +- src/flags.c | 4 +- src/flags.def | 7 + src/general.c | 4 +- src/llgrammar.c.der | 91 +- src/llgrammar.y | 8 +- src/llmain.c | 30 +- src/message.c | 2 +- src/mtgrammar.c | 365 +-- src/mtgrammar.c.der | 365 +-- src/mtgrammar.y | 29 +- src/mtscanner.c | 1 + src/qtype.c | 5 +- src/qual.c | 152 +- src/qualList.c | 7 + src/sort.c | 8 +- src/usymtab_interface.c | 2 +- test/Makefile.am | 3 +- test/Makefile.in | 3 +- test/ansireserved.expect | 4 +- test/db1.expect | 28 +- test/db1/Makefile | 6 +- test/db2/Makefile | 8 +- test/db3.expect | 33 +- test/db3/Makefile | 6 +- test/external.expect | 4 +- test/libs.expect | 5 +- test/tainted.expect | 8 +- test/tainted/Makefile | 4 +- test/tests2.2.expect | 4 +- 56 files changed, 3251 insertions(+), 3348 deletions(-) diff --git a/lib/Makefile.am b/lib/Makefile.am index 74d9527..39e216e 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -1,5 +1,9 @@ ## Note: starting comments with ## means they don't end up in Makefile +### Make phony, always remake everything. + +.PHONY: all standard.lcd standardstrict.lcd posix.lcd posixstrict.lcd unix.lcd unixstrict.lcd + AUTOMAKE_OPTIONS = 1.5 foreign ## Put these files in $prefix/share/splint/lib @@ -30,6 +34,8 @@ SPLINT = $(top_builddir)/src/splint$(EXEEXT) $(SPLINT): cd $(top_builddir)/src; $(MAKE) +all: standard.lcd standardstrict.lcd posix.lcd posixstrict.lcd unix.lcd unixstrict.lcd + standard.lcd: standard.h $(SPLINT) -$(SPLINT) -nof -nolib +impconj standard.h -dump standard @touch $@ diff --git a/lib/Makefile.in b/lib/Makefile.in index c7cb493..18df940 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -13,6 +13,8 @@ @SET_MAKE@ +### Make phony, always remake everything. + SHELL = @SHELL@ srcdir = @srcdir@ @@ -245,9 +247,13 @@ uninstall-am: uninstall-info-am uninstall-splintlibDATA uninstall-splintlibDATA +.PHONY: all standard.lcd standardstrict.lcd posix.lcd posixstrict.lcd unix.lcd unixstrict.lcd + $(SPLINT): cd $(top_builddir)/src; $(MAKE) +all: standard.lcd standardstrict.lcd posix.lcd posixstrict.lcd unix.lcd unixstrict.lcd + standard.lcd: standard.h $(SPLINT) -$(SPLINT) -nof -nolib +impconj standard.h -dump standard @touch $@ diff --git a/lib/posix.h b/lib/posix.h index afac9e4..924efa8 100644 --- a/lib/posix.h +++ b/lib/posix.h @@ -229,13 +229,13 @@ struct group { char **gr_mem; }; - extern /*@null@*/ struct group * -getgrgid (gid_t gid) - /*@modifies errno@*/; +/* evans 2002-07-09: added observer annotation (reported by Enrico Scholz). */ - extern /*@null@*/ struct group * -getgrnam (const char *nm) - /*@modifies errno@*/; +/*@observer@*/ /*@null@*/ struct group * getgrgid (gid_t gid) + /*@modifies errno@*/; + +/*@observer@*/ /*@null@*/ struct group *getgrnam (const char *nm) + /*@modifies errno@*/; /* ** limits.h @@ -301,13 +301,11 @@ struct passwd { char *pw_shell; } ; - extern /*@observer@*/ /*@null@*/ struct passwd * - getpwnam (const char *) - /*@modifies errno@*/ /*@ensures maxRead(result) == 0 /\ maxSet(result) == 0 @*/; +/*@observer@*/ /*@null@*/ struct passwd *getpwnam (const char *) + /*@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 @*/; +/*@observer@*/ /*@null@*/ struct passwd *getpwuid (uid_t uid) + /*@modifies errno@*/ /*@ensures maxRead(result) == 0 /\ maxSet(result) == 0 @*/; /* ** setjmp.h @@ -315,13 +313,9 @@ getpwuid (uid_t uid) typedef /*@abstract@*/ /*@mutable@*/ void *sigjmp_buf; - extern /*@mayexit@*/ void -siglongjmp (sigjmp_buf env, int val) - /*@*/; +/*@mayexit@*/ void siglongjmp (sigjmp_buf env, int val) /*@*/; - extern int -sigsetjmp (/*@out@*/ sigjmp_buf env, int savemask) - /*@modifies env@*/; +int sigsetjmp (/*@out@*/ sigjmp_buf env, int savemask) /*@modifies env@*/; /* ** signal.h diff --git a/lib/standard.h b/lib/standard.h index 7e4f552..6623d8b 100644 --- a/lib/standard.h +++ b/lib/standard.h @@ -520,12 +520,15 @@ int fflush (/*@null@*/ FILE *stream) /*@dependent@*/ /*@null@*/ FILE *freopen (char *filename, char *mode, FILE *stream) /*@modifies *stream, fileSystem, errno@*/ ; -extern void setbuf (FILE *stream, /*@null@*/ /*@exposed@*/ /*@out@*/ char *buf) - /*@modifies fileSystem, *stream, *buf@*/ ; +void setbuf (FILE *stream, /*@null@*/ /*@exposed@*/ /*@out@*/ char *buf) + /*@modifies fileSystem, *stream, *buf@*/ + /*:errorcode != 0*/ ; + /*:requires maxSet(buf) >= (BUFSIZ - 1):*/ ; -extern int setvbuf (FILE *stream, /*@null@*/ /*@exposed@*/ /*@out@*/ char *buf, - int mode, size_t size) - /*@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) @*/ ; # ifdef STRICT /*@printflike@*/ @@ -539,7 +542,7 @@ int /*@alt void@*/ fprintf (FILE *stream, char *format, ...) /*@scanflike@*/ int fscanf (FILE *stream, char *format, ...) - /*@modifies fileSystem, *stream@*/ ; + /*@modifies fileSystem, *stream, errno@*/ ; # ifdef STRICT /*@printflike@*/ @@ -556,20 +559,29 @@ int /*@alt void@*/ printf (char *format, ...) /*@scanflike@*/ int scanf(char *format, ...) /*@globals stdin@*/ - /*@modifies fileSystem, *stdin@*/ ; + /*@modifies fileSystem, *stdin, errno@*/ ; + /*drl added errno 09-19-2001 */ ; # 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, ...) /*@*/ ; +int sscanf (/*@out@*/ char *s, char *format, ...) /*@modifies errno@*/ ; /* modifies extra arguments */ int vprintf (const char *format, va_list arg) @@ -584,7 +596,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@*/ + /*@requires maxSet(str) >= (size - 1)@*/ /* drl - this was size, size-1 in stdio.h */ /*@modifies str@*/ ; int fgetc (FILE *stream) @@ -606,9 +618,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@*/ ; + /*@modifies fileSystem, *stream, errno@*/ ; -int getchar (void) /*@globals stdin@*/ /*@modifies fileSystem, *stdin@*/ ; +int getchar (void) /*@globals stdin@*/ /*@modifies fileSystem, *stdin, errno@*/ ; /*@null@*/ char *gets (/*@out@*/ char *s) /*@warn bufferoverflowhigh @@ -617,29 +629,36 @@ int getchar (void) /*@globals stdin@*/ /*@modifies fileSystem, *stdin@*/ ; int putc (int /*@alt char@*/ c, /*@sef@*/ FILE *stream) /*:errorcode EOF:*/ - /*@modifies fileSystem, *stream;@*/ ; + /*@modifies fileSystem, *stream, errno;@*/ ; int putchar (int /*@alt char@*/ c) /*:errorcode EOF:*/ - /*@globals stdout@*/ /*@modifies fileSystem, *stdout@*/ ; + /*@globals stdout@*/ + /*@modifies fileSystem, *stdout, errno@*/ ; int puts (const char *s) /*:errorcode EOF:*/ /*@globals stdout@*/ - /*@modifies fileSystem, *stdout@*/ ; + /*@modifies fileSystem, *stdout, errno@*/ ; int ungetc (int /*@alt char@*/ c, FILE *stream) - /*@modifies fileSystem, *stream, errno@*/ ; + /*@modifies fileSystem, *stream@*/ ; + /*drl REMOVED errno 09-19-2001*/ size_t fread (/*@out@*/ void *ptr, size_t size, size_t nobj, FILE *stream) - /*@modifies fileSystem, *ptr, *stream, errno@*/ ; + /*@modifies fileSystem, *ptr, *stream, errno@*/ + /*requires maxSet(ptr) >= (size - 1) @*/ + /*@ensures maxRead(ptr) == (size - 1) @*/ ; size_t fwrite (void *ptr, size_t size, size_t nobj, FILE *stream) - /*@modifies fileSystem, *stream, errno@*/ ; + /*@modifies fileSystem, *stream, errno@*/ + /*@requires maxRead(ptr) >= size @*/ ; int fgetpos (FILE *stream, /*@out@*/ fpos_t *pos) - /*@modifies *pos, errno@*/ ; + /*@modifies *pos, errno@*/ + /*@requires maxSet(pos) >= 0@*/ + /*@ensures maxRead(pos) >= 0 @*/; int fseek (FILE *stream, long int offset, int whence) /*:errorcode -1:*/ diff --git a/lib/stdio.h b/lib/stdio.h index 15f6a55..3b8ba17 100644 --- a/lib/stdio.h +++ b/lib/stdio.h @@ -1,283 +1,148 @@ +/* +** stdio.h - Unix Specification +*/ + +/* +** 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 lltX_bool _IOFBF@*/ +/*@constant lltX_bool _IOLBF@*/ +/*@constant lltX_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@*/ + +/*@constant observer char *P_tmpdir@*/ + +void clearerr (FILE *stream) /*@modifies *stream@*/ ; + +/*@dependent@*/ char *ctermid (/*@returned@*/ /*@null@*/ char *) /*@*/ ; + /* Result may be static pointer if parameter is NULL, otherwise is fresh. */ + + // *@requires maxSet(s) >= ( L_ctermid - 1) @*/ *ensures maxRead(s) <= ( L_ctermid - 1) /\ maxRead(s) >= 0 */ + /*DRL 9-11-2001 I've modified the definition in ansi.h to remove modifies SystemState and I've added a requires and ensures*/ ; + +/*check returns*/ +/* cuserid is in the 1988 version of POSIX but removed in 1990 */ -/*stuff from the unix specification*/ - -/*things from stdio.h */ -extern void clearerr (FILE *stream) /*@modifies *stream@*/ ; - -extern char * ctermid (/*@returned@*/ /*@out@*/ /*@null@*/ char *s) - /*@modifies *s @*/ - // *@requires maxSet(s) >= ( L_ctermid - 1) @*/ *ensures maxRead(s) <= ( L_ctermid - 1) /\ maxRead(s) >= 0 */ - - /*DRL 9-11-001 I've modified the definition in ansi.h to remove modifies SystemState and I've added a requires and ensures*/ ; - - /*check returns*/ - - /* cuserid is in the 1988 version of POSIX but removed in 1990 */ - extern char * - cuserid (/*@null@*/ /*@out@*/ char *s) - /*@modifies *s@*/ +char *cuserid (/*@null@*/ /*@out@*/ /*@returned@*/ char *s) + /*@warn legacy "cuserid is obsolete"@*/ + /*@modifies *s@*/ // *@requires maxSet(s) >= ( L_ctermid - 1) @*/ *@ensures maxRead(s) <= ( L_ctermid - 1) /\ maxRead(s) >= 0 /\ maxRead(result) <= ( L_ctermid - 1) /\ maxRead(result) >= 0 @*/ - ; + ; - extern int fclose (FILE *stream) /*@modifies *stream, errno, fileSystem;@*/ ; +/* in standard.h: int fclose (FILE *stream) @modifies *stream, errno, fileSystem;@ */ - extern /*@null@*/ /*@dependent@*/ FILE *fdopen (int fd, const char *type) +/*@null@*/ /*@dependent@*/ FILE *fdopen (int fd, const char *type) /*@modifies errno, fileSystem@*/; - extern int feof (FILE *stream) /*@modifies errno@*/ ; - extern int ferror (FILE *stream) /*@modifies errno@*/ ; - extern int fflush (/*@null@*/ FILE *stream) - /*@modifies *stream, errno, fileSystem;@*/ ; - - extern int fgetc (FILE *stream) - /*@modifies fileSystem, *stream, errno@*/ ; - - extern int fgetpos (FILE *stream, /*@out@*/ fpos_t *pos) - /*@modifies *pos, errno@*/ /*@requires maxSet(pos) >= 0@*/ - /*@ensures maxRead(pos) >= 0 @*/; - - extern /*@null@*/ char * - fgets (/*@returned@*/ /*@out@*/ char *s, int n, FILE *stream) - /*@modifies fileSystem, *s, *stream, errno@*/ - /*@requires MaxSet(s) >= (n -1); @*/ - /*@ensures MaxRead(s) <= (n -1) /\ MaxRead(s) >= 0; @*/ ; - - extern int fileno (FILE *fp) /*@modifies errno@*/; - - extern void flockfile (FILE *file) /*@modifies *file, fileSystem@*/ ; - - extern FILE * fopen (char *filename, char *mode) /*@modifies errno, fileSystem;@*/ ; - - # ifdef STRICT - /*@printflike@*/ - extern int fprintf (FILE *stream, char *format, ...) - /*@modifies fileSystem, *stream, errno@*/ ; - # else - /*@printflike@*/ - extern int /*@alt void@*/ fprintf (FILE *stream, char *format, ...) - /*@modifies fileSystem, *stream, errno@*/ ; - # endif - - extern int fputc (int /*@alt char@*/ c, FILE *stream) - /*@modifies fileSystem, *stream, errno@*/ ; - - extern int fputs (char *s, FILE *stream) - /*@modifies fileSystem, *stream, errno@*/ ; - extern 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) @*/ - ; - extern /*@null@*/ FILE *freopen (char *filename, char *mode, FILE *stream) - /*@modifies *stream, fileSystem, errno@*/ ; - - /*@scanflike@*/ - extern int fscanf (FILE *stream, char *format, ...) - /*@modifies fileSystem, *stream, errno@*/ ; - extern int fseek (FILE *stream, long int offset, int whence) - /*@modifies fileSystem, *stream, errno@*/ ; +/* feof, ferror fflush, fgetc, fgetpos, fgets - in standard.h */ - extern int fseeko (FILE *stream, off_t offset, int whence) - /*@modifies fileSystem, *stream, errno@*/ ; - - extern int fsetpos (FILE *stream, fpos_t *pos) - /*@modifies fileSystem, *stream, errno@*/ ; - - extern long int ftell(FILE *stream) /*@modifies errno@*/ ; +int fileno (/*@notnull@*/ FILE *) + /*:errorcode -1:*/ + /*@modifies errno@*/ ; - extern off_t ftello(FILE *stream) /*@modifies errno@*/ ; +void flockfile (/*@notnull@*/ FILE *f) + /*@modifies f, fileSystem@*/ ; - extern void ftrylockfile (FILE *file) /*@modifies *file, fileSystem@*/ ; - - extern void funlockfile (FILE *file) /*@modifies *file, fileSystem;@*/ ; +/* fopen, fprintf, fputc, fread, frepoen, fscanf, etc. in standard.h */ - extern size_t fwrite (void *ptr, size_t size, size_t nobj, FILE *stream) - /*@modifies fileSystem, *stream, errno@*/ - /*@requires maxRead(ptr) >= size @*/; - extern int getc (/*@sef@*/ FILE *stream) - /*@modifies fileSystem, *stream, errno@*/ ; /*drl added errno */ +int fseeko (FILE *stream, off_t offset, int whence) + /*:errorcode -1:*/ + /*@modifies stream, errno@*/ ; - extern int getchar (void) /*@globals stdin@*/ /*@modifies fileSystem, *stdin, errno@*/ ; /*drl added errno */ +off_t ftello(FILE *stream) + /*:errorcode -1:*/ /*@modifies errno*/ ; - extern int getc_unlocked (/*@sef@*/ FILE *stream) - /*@modifies fileSystem, *stream, errno@*/ ; /*Drl added 09-18-001 */ +int ftrylockfile(FILE *stream) + /*:errorcode !0:*/ + /*@modifies stream, fileSystem, errno*/ ; - extern int getchar_unlocked (void) /*@globals stdin@*/ /*@modifies fileSystem, *stdin, errno@*/ ; /*Drl added 09-18-001 */ +void funlockfile (FILE *stream) + /*@modifies stream, fileSystem*/ ; - /*@unchecked@*/ extern char *optarg; - /*@unchecked@*/ extern int optind; - /*@unchecked@*/ extern int optopt; - /*@unchecked@*/ extern int opterr; - /*@unchecked@*/ extern int optreset; - -extern int getopt (int argc, char * const *argv, const char *optstring) - /*@globals optarg, optind, optopt, opterr, optreset@*/ - /*@modifies optarg, optind, optopt@*/ - /*@requires maxRead(argv) >= (argc - 1) @*/ - ; +int getc_unlocked(FILE *stream) + /*@warn multithreaded "getc_unlocked is a thread unsafe version of getc"@*/ + /*@modifies *stream, fileSystem, errno@*/ ; -/*@-bufferoverflowhigh@*/ -extern /*@null@*/ char *gets (/*@out@*/ char *s) - /*@warn bufferoverflowhigh - "Use of gets leads to a buffer overflow vulnerability. Use fgets instead"@*/ - /*@globals stdin@*/ - /*@modifies fileSystem, *s, *stdin, errno@*/ ; - -extern int getw (FILE *stream) - /*@modifies fileSystem, *stream, errno@*/ ; /*drl added 09-18-001 */ /*legacy */ - -extern int pclose (FILE *stream) /*@modifies fileSystem, *stream, errno@*/ ; - -extern void perror (/*@null@*/ char *s) - /*@globals errno, stderr@*/ /*@modifies fileSystem, *stderr@*/ ; - -extern /*@dependent@*/ /*@null@*/ FILE *popen (char *command, char *ttype) - /*@modifies fileSystem, errno@*/ ; - - # ifdef STRICT - /*@printflike@*/ - extern int printf (char *format, ...) - /*@globals stdout@*/ - /*@modifies fileSystem, *stdout@*/ ; - # else - /*@printflike@*/ - extern int /*@alt void@*/ printf (char *format, ...) - /*@globals stdout@*/ - /*@modifies fileSystem, *stdout@*/ ; - # endif - - extern int putc (int /*@alt char@*/ c, /*@sef@*/ FILE *stream) - /*@modifies fileSystem, *stream, errno;@*/ - /*drl added errno 09-18-001 */ ; - - extern int putchar (int /*@alt char@*/ c) - /*@globals stdout@*/ /*@modifies fileSystem, *stdout, errno@*/ - /*drl added errno 09-18-001 */ ; - - extern int putc_unlocked (int /*@alt char@*/ c, /*@sef@*/ FILE *stream) - /*@modifies fileSystem, *stream, errno;@*/ - /*Drl added 09-19-001 */ ; - - extern int putchar_unlocked (int /*@alt char@*/ c) - /*@globals stdout@*/ /*@modifies fileSystem, *stdout, errno@*/ - /*Drl added 09-19-001 */ ; - - extern int puts (const char *s) - /*@globals stdout@*/ /*@modifies fileSystem, *stdout, errno@*/ - /*drl added errno 09-19-001 */ ; - - - extern int putw(int w, FILE *stream) - /*@modifies fileSystem, *stream, errno@*/ - /*Drl added 09-19-001 */ /*legacy*/ ; - - extern int remove (char *filename) /*@modifies fileSystem, errno@*/ ; - - extern int rename (char *old, char *new) /*@modifies fileSystem, errno@*/ - ; - - extern void rewind (FILE *stream) /*@modifies *stream, fileSystem, errno@*/ - /*drl added errno AND fileSystem 09-19-001 */ ; - - /*@scanflike@*/ - extern int scanf(char *format, ...) +int getchar_unlocked (void) + /*@warn multithreaded "getchar_unlocked is a thread unsafe version of getchar"@*/ /*@globals stdin@*/ - /*@modifies fileSystem, *stdin, errno@*/ - /*drl added errno 09-19-001 */ ; - - extern void setbuf (FILE *stream, /*@null@*/ /*@exposed@*/ /*@out@*/ char *buf) - /*@modifies fileSystem, *stream, *buf@*/ - // *@requires maxSet(buf) >= (BUFSIZ - 1) @*/ - ; - - extern int setvbuf (FILE *stream, /*@null@*/ /*@exposed@*/ /*@out@*/ char *buf, - int mode, size_t size) - /*@modifies fileSystem, *stream, *buf@*/ /*@requires maxSet(buf) >= (size - 1) @*/ ; - - # ifdef STRICT - /*@printflike@*/ - extern int snprintf (/*@out@*/ char *s, size_t n, char *format, ...) - /*@modifies *s@*/ - - /*@requires maxSet(s) >= (n - 1) @*/ - ; - - # else + /*@modifies *stdin, fileSystem@*/ ; + +/*@unchecked@*/ char *optarg; +/*@unchecked@*/ int optind; +/*@unchecked@*/ int optopt; +/*@unchecked@*/ int opterr; +/*@unchecked@*/ int optreset; + +int getopt (int argc, char * const *argv, const char *optstring) + /*@warn legacy@*/ + /*@globals optarg, optind, optopt, opterr, optreset@*/ + /*@modifies optarg, optind, optopt@*/ + /*@requires maxRead(argv) >= (argc - 1) @*/ + ; + +int getw (FILE *stream) + /*@warn legacy@*/ + /*:errorcode EOF:*/ + /*@modifies fileSystem, *stream, errno@*/ ; - /*@printflike@*/ - extern int /*@alt void@*/ snprintf (/*@out@*/ char *s, size_t n, char *format, ...) - /*@modifies *s@*/ - /*@requires maxSet(s) >= (n - 1) @*/ - ; - # endif +int pclose(FILE *stream) + /*:errorcode -1:*/ + /*@modifies fileSystem, *stream, errno@*/ ; - - # ifdef STRICT - /*@printflike@*/ - extern int sprintf (/*@out@*/ char *s, char *format, ...) - /*@modifies *s@*/ ; - # else +/*@dependent@*/ /*@null@*/ FILE *popen (const char *command, const char *mode) + /*:errorcode NULL:*/ + /*@modifies fileSystem, errno@*/ ; - /*@printflike@*/ - extern int /*@alt void@*/ sprintf (/*@out@*/ char *s, char *format, ...) - /*@modifies *s@*/ ; +int putc_unlocked (int, FILE *stream) + /*@warn multithreaded "putc_unlocked is a thread unsafe version of putc"@*/ + /*:errorcode EOF:*/ + /*@modifies fileSystem, *stream, errno@*/ ; - # endif +int putchar_unlocked(int) + /*@warn multithreaded "putchar_unlocked is a thread unsafe version of putchar"@*/ + /*:errorcode EOF:*/ + /*@modifies fileSystem, *stdout, errno@*/ ; - /*@scanflike@*/ - int sscanf (/*@out@*/ char *s, char *format, ...) - /* modifies extra arguments */ /*@modifies errno@*/ - /*drl added errno 09-19-001 */ ; +int putw(int, FILE *stream) + /*@warn legacy@*/ + /*:errorcode EOF:*/ + /*@modifies fileSystem, *stdout, errno@*/ ; +int remove (char *filename) /*@modifies fileSystem, errno@*/ ; +int rename (char *old, char *new) /*@modifies fileSystem, errno@*/ ; +void rewind (FILE *stream) /*@modifies *stream, fileSystem, errno@*/ ; + +/* evans 2002-07-09: snprintf moved to standard.h (its in ISO C99 now) */ - extern /*@null@*/ char *tempnam (char *dir, /*@null@*/ char *pfx) +/*@null@*/ char *tempnam (char *dir, /*@null@*/ char *pfx) /*@modifies internalState, errno@*/ - /*@ensures maxSet(result) >= 0 /\ maxRead(result) >= 0 @*/ - /*warn that "Between the time a pathname is created and the file is opened, it is possible - for some other process to create a file with the same name. Applications may find tmpfile() - more useful. " */ - - /*drl added errno 09-19-001 */ - - ; + /*@ensures maxSet(result) >= 0 /\ maxRead(result) >= 0 @*/ + /*@warn toctou "Between the time a pathname is created and the file is opened, it is possible for some other process to create a file with the same name. Use tmpfile instead."*/ + /*drl added errno 09-19-001 */ + ; - extern /*@null@*/ FILE *tmpfile (void) /*@modifies fileSystem, errno@*/ - /*drl added errno 09-19-001 */ - ; +/*@null@*/ FILE *tmpfile (void) + /*@modifies fileSystem, errno@*/ + /*drl added errno 09-19-001 */ + ; - extern /*@observer@*/ char * - tmpnam (/*@out@*/ /*@null@*/ /*@returned@*/ char *s) +/*@observer@*/ char *tmpnam (/*@out@*/ /*@null@*/ /*@returned@*/ char *s) /*@modifies *s, internalState @*/ - // *@requires maxSet(s) >= (L_tmpnam - 1) @* - /*warn Between the time a pathname is created and the file is opened, it is possible for some other - process to create a file with the same name. Applications may find tmpfile() more useful. */ - ; - - extern int ungetc (int /*@alt char@*/ c, FILE *stream) - /*@modifies fileSystem, *stream @*/ - - /*drl REMOVED errno 09-19-001*/ - ; - - int vfprintf (FILE *stream, char *format, va_list arg) - /*@modifies fileSystem, *stream, arg, errno@*/ ; - - int vprintf (const char *format, va_list arg) - /*@globals stdout@*/ - /*@modifies fileSystem, *stdout@*/ ; - - int vsnprintf (/*@out@*/ char *str, size_t size, const char *format, va_list ap) - /*@modifies str@*/ - /*@requires maxSet(str) >= (size - 1) @*/ ; - -int vsprintf (/*@out@*/ char *str, const char *format, va_list ap) - /*@warn bufferoverflowhigh "Use vsnprintf instead"@*/ - /*@modifies str@*/ ; + // *@requires maxSet(s) >= (L_tmpnam - 1) @* + /*@warn toctou "Between the time a pathname is created and the file is opened, another process may create a file with the same name. Use tmpfile instead."*/ + ; -extern char *optarg; -extern int opterr; -extern int optind; /*(LEGACY)*/ -extern int optopt; diff --git a/lib/unix.h b/lib/unix.h index 5509060..627bb30 100644 --- a/lib/unix.h +++ b/lib/unix.h @@ -264,7 +264,6 @@ 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]; @@ -1168,153 +1167,11 @@ 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 -*/ /* -** evans 2001-12-30: added from http://www.opengroup.org/onlinepubs/007908799/xsh/stdio.h.html +** stdio.h - in separte file stdio.h */ -/*@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 */ @@ -1397,29 +1254,20 @@ setpassent (int stayopen) setpwent (void) /*@modifies internalState@*/; -/*________________________________________________________________________ - * grp.h - */ +/* +** grp.h +*/ - extern void -endgrent (void) - /*@modifies internalState@*/; +void endgrent (void) /*@modifies internalState@*/; - extern /*@null@*/ struct group * -getgrent (void) - /*@modifies internalState@*/; +/*@null@*/ /*@observer@*/ struct group *getgrent (void) + /*@modifies internalState@*/; - extern int -setgrent (void) - /*@modifies internalState@*/; +int setgrent (void) /*@modifies internalState@*/; - extern void -setgrfile (const char *name) - /*@modifies internalState@*/; +void setgrfile (const char *name) /*@modifies internalState@*/; - extern int -setgroupent (int stayopen) - /*@modifies internalState@*/; +int setgroupent (int stayopen) /*@modifies internalState@*/; /* ** sys/stat.h @@ -1608,78 +1456,59 @@ 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 - */ +/* +** sys/resource.h +** +** Update 2002-07-09 from +** http://www.opengroup.org/onlinepubs/007904975/basedefs/sys/resource.h.html +*/ -/*@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 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 rlimit { + rlim_t rlim_cur; + rlim_t rlim_max; }; - struct rlimit { - long rlim_cur; - long rlim_max; +struct rusage { + struct timeval ru_utime; /* user time used */ + struct timeval ru_stime; /* system time used */ + /* other members optional */ }; - struct loadavg { - unsigned long ldavg[3]; - long fscale; -}; - - extern int -getpriority (int which, int who) - /*@modifies errno@*/; +/*@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@*/ - extern int -getrlimit (int res, /*@out@*/ struct rlimit *rlp) - /*@modifies *rlp, errno@*/; +int getpriority (int which, id_t who) + /*@modifies errno@*/; - extern int -getrusage (int who, /*@out@*/ struct rusage *rusage) - /*@modifies *rusage, errno@*/; +int getrlimit (int res, /*@out@*/ struct rlimit *rlp) + /*@modifies *rlp, errno@*/; - extern int -setpriority (int which, int who, int prio) - /*@modifies errno, internalState@*/; +int getrusage (int who, /*@out@*/ struct rusage *rusage) + /*@modifies *rusage, errno@*/; - extern int -setrlimit (int resource, const struct rlimit *rlp) - /*@modifies errno, internalState@*/; +int setpriority (int which, id_t who, int prio) + /*@modifies errno, internalState@*/; +int setrlimit (int resource, const struct rlimit *rlp) + /*@modifies errno, internalState@*/; /* ** in diff --git a/src/Headers/basic.h b/src/Headers/basic.h index b6007cd..28fdd54 100644 --- a/src/Headers/basic.h +++ b/src/Headers/basic.h @@ -47,6 +47,7 @@ # include "fileLib.h" # include "inputStream.h" # include "qualList.h" +# include "pointers.h" # ifndef NOLCL # include "code.h" diff --git a/src/Headers/cgrammar_tokens.h b/src/Headers/cgrammar_tokens.h index 5b35185..569def2 100644 --- a/src/Headers/cgrammar_tokens.h +++ b/src/Headers/cgrammar_tokens.h @@ -67,7 +67,7 @@ typedef union /*@only@*/ modifiesClause modsclause; /*@only@*/ warnClause warnclause; /*@only@*/ stateClause stateclause; - + /*@only@*/ pointers pointers; /*@only@*/ functionConstraint fcnconstraint; /*@only@*/ metaStateConstraint msconstraint; @@ -209,88 +209,89 @@ typedef union #define QMESSAGELIKE 363 #define QNOTREACHED 364 #define QCONST 365 -#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 +#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 extern YYSTYPE yylval; diff --git a/src/Headers/forwardTypes.h b/src/Headers/forwardTypes.h index 73407d6..3963638 100644 --- a/src/Headers/forwardTypes.h +++ b/src/Headers/forwardTypes.h @@ -24,6 +24,7 @@ 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; diff --git a/src/Headers/lclTypeSpecNode.h b/src/Headers/lclTypeSpecNode.h index b3e8841..f0a2f99 100644 --- a/src/Headers/lclTypeSpecNode.h +++ b/src/Headers/lclTypeSpecNode.h @@ -27,7 +27,7 @@ struct s_lclTypeSpecNode { /*@null@*/ enumSpecNode enumspec; lclconj conj; } content; - int pointers; + pointers pointers; } ; /*@constant null lclTypeSpecNode lclTypeSpecNode_undefined; @*/ diff --git a/src/Headers/lctype.h b/src/Headers/lctype.h index f5357e7..3288b34 100644 --- a/src/Headers/lctype.h +++ b/src/Headers/lctype.h @@ -232,7 +232,7 @@ 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(int p_np, ctype p_c); +extern ctype ctype_adjustPointers (pointers p_p, ctype p_c); extern ctype ctype_baseArrayPtr (ctype p_c) /*@*/ ; extern ctype ctype_combine (ctype p_dominant, ctype p_modifier) ; diff --git a/src/Headers/llgrammar_gen.h b/src/Headers/llgrammar_gen.h index 254dde5..7304014 100644 --- a/src/Headers/llgrammar_gen.h +++ b/src/Headers/llgrammar_gen.h @@ -87,6 +87,7 @@ typedef union /*@only@*/ abstBodyNode abstbody; /*@only@*/ abstractNode abstract; /*@only@*/ exposedNode exposed; + /*@only@*/ pointers pointers; /* taggedUnionNode taggedunion; */ /*@only@*/ globalList globals; /*@only@*/ constDeclarationNode constdeclaration; diff --git a/src/Headers/llgrammar_gen2.h b/src/Headers/llgrammar_gen2.h index 254dde5..7304014 100644 --- a/src/Headers/llgrammar_gen2.h +++ b/src/Headers/llgrammar_gen2.h @@ -87,6 +87,7 @@ typedef union /*@only@*/ abstBodyNode abstbody; /*@only@*/ abstractNode abstract; /*@only@*/ exposedNode exposed; + /*@only@*/ pointers pointers; /* taggedUnionNode taggedunion; */ /*@only@*/ globalList globals; /*@only@*/ constDeclarationNode constdeclaration; diff --git a/src/Headers/mtgrammar_tokens.h b/src/Headers/mtgrammar_tokens.h index 5926962..620f928 100644 --- a/src/Headers/mtgrammar_tokens.h +++ b/src/Headers/mtgrammar_tokens.h @@ -71,11 +71,12 @@ typedef union { mtTransferAction mttransferaction; mtLoseReferenceList mtlosereferencelist; mtLoseReference mtlosereference; - + pointers pointers; /*@only@*/ cstringList cstringlist; ctype ctyp; /*@only@*/ qtype qtyp; - int count; + qual qual; + qualList quals; } YYSTYPE; #define MT_BADTOK 257 #define MT_END 258 @@ -121,8 +122,9 @@ typedef union { #define MT_SIGNEDINTEGRALTYPE 298 #define MT_CONST 299 #define MT_VOLATILE 300 -#define MT_STRINGLIT 301 -#define MT_IDENT 302 +#define MT_RESTRICT 301 +#define MT_STRINGLIT 302 +#define MT_IDENT 303 /* ** Resets all flags in bison.head diff --git a/src/Headers/qtype.h b/src/Headers/qtype.h index d4682db..208e332 100644 --- a/src/Headers/qtype.h +++ b/src/Headers/qtype.h @@ -51,7 +51,7 @@ 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 (int p_n, /*@returned@*/ qtype p_q); +extern void qtype_adjustPointers (/*@only@*/ pointers 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); diff --git a/src/Headers/qual.h b/src/Headers/qual.h index 6d36fb2..646e8ab 100644 --- a/src/Headers/qual.h +++ b/src/Headers/qual.h @@ -19,8 +19,9 @@ typedef enum { QU_UNKNOWN = 0, - QU_CONST, QU_VOLATILE, QU_INLINE, - QU_EXTERN, QU_STATIC, QU_AUTO, QU_REGISTER, + QU_CONST, QU_VOLATILE, QU_RESTRICT, + 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, @@ -91,6 +92,7 @@ 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) /*@*/ ; @@ -178,6 +180,7 @@ 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) @@ -248,6 +251,7 @@ 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) /*@*/ ; @@ -319,6 +323,7 @@ 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) diff --git a/src/Headers/qualList.h b/src/Headers/qualList.h index 38bab62..3a2c32d 100644 --- a/src/Headers/qualList.h +++ b/src/Headers/qualList.h @@ -37,6 +37,9 @@ extern bool qualList_isEmpty (/*@sef@*/ qualList p_s); # define qualList_isEmpty(s) (qualList_size(s) == 0) extern qualList qualList_new (void) /*@*/ ; + +extern qualList qualList_single (qual p_el) /*@*/ ; + extern qualList qualList_add (/*@returned@*/ qualList p_s, qual p_el) /*@modifies p_s@*/; diff --git a/src/Headers/sort.h b/src/Headers/sort.h index 14f7a5c..728b3a7 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, int p_pointers) /*@*/ ; +extern sort sort_makePtrN (sort p_s, pointers p_p) /*@*/ ; extern sort sort_makeVal (sort p_sor) /*@*/ ; extern sort sort_makeObj (sort p_sor) /*@*/ ; diff --git a/src/Makefile.am b/src/Makefile.am index b53ddab..cd9ece6 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -40,7 +40,8 @@ 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 + metaStateExpression.c metaStateSpecifier.c functionConstraint.c \ + pointers.c SPLINTSRC = exprNode.c exprChecks.c llmain.c help.c rcfiles.c CHECKSRC = structNames.c transferChecks.c varKinds.c nameChecks.c diff --git a/src/Makefile.in b/src/Makefile.in index 799ecbd..044831e 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -121,7 +121,8 @@ 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 + metaStateExpression.c metaStateSpecifier.c functionConstraint.c \ + pointers.c SPLINTSRC = exprNode.c exprChecks.c llmain.c help.c rcfiles.c @@ -408,11 +409,12 @@ am_splint_OBJECTS = cgrammar.$(OBJEXT) cscanner.$(OBJEXT) \ functionClause.$(OBJEXT) functionClauseList.$(OBJEXT) \ metaStateConstraint.$(OBJEXT) metaStateConstraintList.$(OBJEXT) \ metaStateExpression.$(OBJEXT) metaStateSpecifier.$(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) \ + 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) \ stateValue.$(OBJEXT) llerror.$(OBJEXT) messageLog.$(OBJEXT) \ flagMarker.$(OBJEXT) aliasTable.$(OBJEXT) ynm.$(OBJEXT) \ sRefTable.$(OBJEXT) genericTable.$(OBJEXT) ekind.$(OBJEXT) \ @@ -544,7 +546,7 @@ 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 \ +@AMDEP_TRUE@ $(DEPDIR)/paramNodeList.Po $(DEPDIR)/pointers.Po \ @AMDEP_TRUE@ $(DEPDIR)/programNodeList.Po $(DEPDIR)/qtype.Po \ @AMDEP_TRUE@ $(DEPDIR)/qual.Po $(DEPDIR)/qualList.Po \ @AMDEP_TRUE@ $(DEPDIR)/quantifierNodeList.Po \ @@ -763,6 +765,7 @@ 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@ diff --git a/src/abstract.c b/src/abstract.c index e57c603..301a81f 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 = 0; + n->pointers = pointers_undefined; 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 = 0; + n->pointers = pointers_undefined; 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 = 0; + n->pointers = pointers_undefined; 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 = 0; + n->pointers = pointers_undefined; n->content.enumspec = x; return (n); } @@ -3235,7 +3235,7 @@ paramNode_checkQualifiers (lclTypeSpecNode t, typeExpr d) llassert (lclTypeSpecNode_isDefined (t)); - if (t->pointers == 0 + if (pointers_isUndefined (t->pointers) && (d != (typeExpr)0 && d->kind != TEXPR_PTR) && d->kind != TEXPR_ARRAY) { if (t->kind == LTS_TYPE) @@ -5179,12 +5179,10 @@ 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 3ed27f1..4be8618 100644 --- a/src/cgrammar.c.der +++ b/src/cgrammar.c.der @@ -165,88 +165,89 @@ #define QMESSAGELIKE 363 #define QNOTREACHED 364 #define QCONST 365 -#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 +#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 /* @@ -320,7 +321,7 @@ typedef union /*@only@*/ modifiesClause modsclause; /*@only@*/ warnClause warnclause; /*@only@*/ stateClause stateclause; - + /*@only@*/ pointers pointers; /*@only@*/ functionConstraint fcnconstraint; /*@only@*/ metaStateConstraint msconstraint; @@ -367,11 +368,11 @@ typedef union -#define YYFINAL 1236 +#define YYFINAL 1239 #define YYFLAG -32768 -#define YYNTBASE 194 +#define YYNTBASE 195 -#define YYTRANSLATE(x) ((unsigned)(x) <= 447 ? yytranslate[x] : 459) +#define YYTRANSLATE(x) ((unsigned)(x) <= 448 ? yytranslate[x] : 460) static const short yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -418,7 +419,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 + 187, 188, 189, 190, 191, 192, 193, 194 }; #if YYDEBUG != 0 @@ -461,257 +462,258 @@ static const short yyprhs[] = { 0, 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, 1148, 1150, 1155, 1157, 1161, 1164, 1167, - 1170, 1171, 1173, 1174, 1175, 1176, 1189, 1190, 1191, 1203, - 1210, 1217, 1218, 1219, 1230, 1231, 1232, 1243, 1249, 1255, - 1260, 1265, 1266, 1268, 1270, 1273, 1279, 1283, 1286, 1291, - 1293, 1297, 1302, 1309, 1310, 1319, 1324, 1326, 1330, 1333, - 1335, 1340, 1342, 1344, 1347, 1350, 1352, 1355, 1357, 1360, - 1362, 1364, 1366, 1369, 1371, 1374, 1377, 1381, 1383, 1387, - 1389, 1393, 1395, 1397, 1401, 1402, 1405, 1406, 1411, 1416, - 1418, 1420, 1423, 1425, 1427, 1430, 1431, 1433, 1439, 1442, - 1446, 1450, 1455, 1459, 1464, 1469, 1475, 1477, 1479, 1481, - 1483, 1485, 1487, 1489, 1491, 1493, 1495, 1497, 1499, 1502, - 1505, 1513, 1520, 1523, 1524, 1525, 1536, 1537, 1544, 1546, - 1548, 1550, 1552, 1555, 1557, 1559, 1561, 1563, 1565, 1567, - 1569, 1573, 1575, 1576, 1580, 1583, 1586, 1588, 1590, 1592, - 1594, 1596, 1598, 1600, 1602, 1604, 1606, 1610, 1612, 1614, - 1617, 1620, 1621, 1624, 1625, 1630, 1631, 1638, 1639, 1643, - 1644, 1650, 1654, 1657, 1661, 1662, 1663, 1664, 1665, 1666, - 1668, 1671, 1674, 1678, 1681, 1685, 1689, 1694, 1697, 1700, - 1704, 1708, 1713, 1715, 1718, 1720, 1723, 1725, 1729, 1731, - 1736, 1738, 1741, 1743, 1746, 1748, 1751, 1753, 1758, 1761, - 1762, 1768, 1769, 1776, 1781, 1786, 1787, 1788, 1799, 1801, - 1802, 1807, 1809, 1811, 1813, 1815, 1817, 1820, 1822, 1826, - 1828, 1833, 1837, 1842, 1849, 1855, 1861, 1864, 1867, 1869, - 1872, 1875, 1878, 1881, 1884, 1887, 1890, 1893, 1895, 1897, - 1902, 1904, 1908, 1912, 1916, 1918, 1922, 1926, 1928, 1932, - 1936, 1938, 1942, 1946, 1950, 1954, 1956, 1960, 1964, 1966, - 1970, 1972, 1976, 1978, 1982, 1984, 1988, 1990, 1994, 1996, - 1997, 1998, 2006, 2008, 2012, 2016, 2020, 2024, 2028, 2032, - 2036, 2040, 2044, 2048, 2052, 2054, 2055, 2057, 2060, 2068, - 2071, 2074, 2082, 2089, 2092, 2096, 2099, 2103, 2106, 2110, - 2114, 2118, 2122, 2125, 2129, 2130, 2132, 2133, 2135, 2137, - 2139, 2141, 2143, 2145, 2147, 2149, 2151, 2156 + 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 }; static const short yyrhs[] = { -1, - 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, + 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, 0, 82, 0, 83, 0, 84, 0, 85, 0, 86, - 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, 270, 26, 292, 27, 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, 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 + 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, + 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 }; #endif @@ -754,40 +756,40 @@ static const short yyrline[] = { 0, 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, 1231, 1232, + 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, - 1243, 1244, 1247, 1251, 1252, 1256, 1257, 1261, 1262, 1263, - 1266, 1267, 1271, 1278, 1280, 1282, 1284, 1286, 1288, 1289, - 1291, 1293, 1295, 1297, 1298, 1299, 1302, 1303, 1305, 1307, - 1308, 1311, 1314, 1315, 1316, 1319, 1321, 1325, 1327, 1331, - 1332, 1333, 1337, 1339, 1339, 1341, 1344, 1346, 1348, 1351, - 1356, 1363, 1364, 1365, 1372, 1376, 1377, 1381, 1382, 1385, - 1386, 1389, 1390, 1393, 1394, 1395, 1396, 1399, 1400, 1403, - 1404, 1407, 1408, 1409, 1412, 1412, 1413, 1414, 1417, 1429, - 1445, 1446, 1449, 1450, 1451, 1454, 1455, 1458, 1460, 1461, - 1463, 1464, 1466, 1468, 1470, 1472, 1478, 1479, 1480, 1481, - 1482, 1483, 1484, 1485, 1486, 1490, 1493, 1496, 1497, 1501, - 1503, 1505, 1507, 1511, 1512, 1514, 1518, 1520, 1522, 1525, - 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, - 1536, 1537, 1540, 1541, 1546, 1549, 1552, 1553, 1556, 1557, - 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1569, - 1570, 1577, 1578, 1584, 1585, 1586, 1587, 1590, 1591, 1592, - 1593, 1596, 1597, 1601, 1604, 1607, 1610, 1613, 1616, 1619, - 1620, 1621, 1622, 1624, 1625, 1627, 1629, 1635, 1639, 1641, - 1643, 1645, 1649, 1650, 1653, 1654, 1657, 1658, 1661, 1662, - 1665, 1666, 1669, 1670, 1673, 1674, 1675, 1678, 1691, 1696, - 1697, 1701, 1702, 1705, 1710, 1713, 1714, 1715, 1723, 1724, - 1724, 1728, 1729, 1730, 1741, 1748, 1749, 1752, 1753, 1756, - 1757, 1758, 1759, 1760, 1762, 1763, 1764, 1765, 1768, 1769, - 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1780, 1781, - 1784, 1785, 1786, 1787, 1790, 1791, 1792, 1795, 1796, 1797, - 1800, 1801, 1802, 1803, 1804, 1807, 1808, 1809, 1812, 1813, - 1816, 1817, 1821, 1822, 1825, 1826, 1829, 1830, 1833, 1834, - 1835, 1836, 1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846, - 1847, 1848, 1849, 1850, 1853, 1854, 1857, 1860, 1862, 1864, - 1868, 1869, 1871, 1873, 1876, 1877, 1878, 1880, 1881, 1882, - 1883, 1884, 1885, 1886, 1889, 1890, 1893, 1894, 1897, 1900, - 1901, 1902, 1903, 1904, 1907, 1908, 1909, 1910 + 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 }; #endif @@ -809,20 +811,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", -"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", +"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", "metaStateConstraint","metaStateSpecifier","@8","@9","metaStateExpression","metaStateName", "constraintSeperator","BufConstraintList","BufConstraint","bufferModifier","relationalOp", "BufConstraintExpr","BufConstraintTerm","BufConstraintSrefExpr","BufUnaryOp", @@ -868,76 +870,76 @@ static const char * const yytname[] = { "$","error","$undefined.","BADTOK", #endif static const short yyr1[] = { 0, - 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, 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 + 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 }; static const short yyr2[] = { 0, @@ -979,1280 +981,1330 @@ static const short yyr2[] = { 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 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 + 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 }; static const short yydefact[] = { 0, - 12, 11, 444, 0, 412, 259, 412, 15, 0, 0, - 0, 0, 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, 412, 412, 412, - 412, 412, 412, 412, 412, 412, 412, 332, 689, 690, - 694, 333, 691, 692, 695, 0, 3, 6, 7, 436, - 8, 9, 134, 44, 685, 10, 258, 260, 0, 391, - 273, 273, 273, 273, 273, 273, 273, 273, 412, 273, - 391, 391, 412, 384, 412, 0, 412, 130, 273, 693, - 21, 412, 440, 441, 442, 445, 446, 273, 276, 273, - 273, 269, 412, 696, 412, 412, 694, 0, 529, 273, - 538, 0, 0, 0, 667, 0, 0, 0, 0, 273, - 575, 0, 273, 273, 273, 273, 273, 273, 273, 273, - 273, 0, 43, 0, 0, 0, 0, 0, 532, 273, - 169, 165, 168, 596, 586, 172, 184, 205, 194, 193, - 207, 211, 214, 217, 222, 225, 227, 229, 231, 234, - 237, 241, 253, 577, 199, 0, 0, 563, 519, 520, - 521, 522, 0, 0, 523, 273, 524, 0, 525, 166, - 0, 526, 528, 164, 0, 512, 0, 573, 0, 545, - 499, 0, 0, 0, 508, 0, 509, 488, 507, 504, - 505, 500, 501, 502, 0, 0, 506, 513, 0, 0, - 510, 487, 0, 358, 359, 369, 371, 370, 372, 373, - 374, 375, 376, 377, 378, 4, 273, 0, 132, 137, - 412, 686, 5, 412, 392, 388, 362, 364, 361, 363, - 366, 365, 367, 368, 382, 360, 389, 390, 0, 273, - 273, 380, 273, 273, 0, 381, 437, 379, 443, 447, - 273, 165, 168, 0, 412, 461, 0, 164, 412, 0, - 275, 412, 0, 266, 273, 685, 17, 19, 0, 412, - 273, 29, 455, 205, 257, 534, 0, 273, 273, 273, - 273, 0, 676, 678, 683, 0, 545, 0, 0, 0, - 187, 192, 191, 190, 189, 188, 0, 273, 185, 186, - 273, 0, 0, 0, 0, 0, 532, 0, 273, 531, - 273, 477, 478, 479, 480, 0, 481, 482, 273, 484, - 273, 483, 485, 545, 273, 273, 179, 180, 0, 273, + 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, 232, 238, 235, 576, - 273, 0, 674, 40, 0, 546, 564, 579, 671, 597, - 0, 530, 273, 0, 0, 0, 574, 41, 489, 493, - 565, 412, 503, 515, 516, 0, 0, 0, 42, 23, - 273, 455, 412, 412, 273, 261, 131, 412, 0, 386, - 0, 412, 0, 412, 0, 273, 0, 697, 273, 273, - 0, 463, 462, 464, 698, 273, 272, 273, 271, 267, - 412, 0, 273, 0, 412, 273, 20, 452, 0, 0, - 438, 453, 273, 0, 539, 0, 582, 0, 256, 0, - 675, 684, 545, 0, 167, 273, 527, 273, 0, 0, - 679, 680, 681, 682, 677, 533, 273, 540, 0, 670, - 412, 543, 668, 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, 559, 696, 563, 0, 412, - 544, 580, 0, 0, 511, 497, 273, 566, 514, 0, - 0, 25, 0, 550, 273, 571, 133, 412, 273, 545, - 273, 262, 385, 273, 402, 0, 410, 405, 0, 411, - 0, 427, 430, 424, 426, 383, 469, 0, 455, 465, - 273, 0, 277, 273, 273, 685, 16, 31, 273, 455, - 273, 18, 439, 448, 450, 37, 457, 412, 456, 460, - 535, 578, 0, 584, 273, 171, 273, 206, 412, 0, - 273, 536, 0, 542, 558, 0, 587, 273, 175, 173, - 273, 273, 233, 0, 236, 273, 202, 273, 204, 560, - 561, 273, 273, 273, 585, 273, 412, 273, 412, 79, - 27, 551, 554, 273, 273, 552, 273, 572, 136, 0, - 264, 273, 387, 408, 547, 394, 409, 547, 397, 273, - 429, 273, 0, 470, 473, 273, 0, 471, 0, 455, - 106, 273, 273, 273, 0, 33, 0, 273, 0, 81, - 454, 273, 466, 273, 0, 273, 569, 687, 567, 0, - 0, 0, 541, 273, 273, 183, 177, 178, 239, 0, - 0, 562, 581, 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, 590, - 589, 166, 600, 609, 619, 621, 625, 628, 631, 636, - 639, 641, 643, 645, 647, 649, 653, 592, 164, 0, - 24, 0, 96, 100, 98, 123, 124, 125, 126, 127, - 128, 129, 26, 79, 83, 0, 85, 84, 0, 88, - 0, 412, 412, 86, 0, 87, 304, 0, 79, 555, - 556, 273, 553, 22, 273, 278, 412, 400, 547, 412, - 401, 547, 423, 428, 273, 0, 0, 474, 472, 475, - 0, 0, 105, 273, 273, 0, 280, 268, 273, 0, - 286, 0, 273, 0, 412, 81, 35, 0, 449, 451, - 38, 81, 89, 91, 90, 94, 92, 93, 458, 432, - 0, 273, 466, 433, 467, 583, 494, 687, 273, 0, - 0, 176, 537, 0, 590, 273, 201, 203, 673, 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, 650, 235, 498, 0, 492, 104, 109, - 102, 113, 685, 80, 95, 99, 107, 298, 301, 297, - 0, 302, 300, 28, 557, 273, 0, 414, 412, 412, - 413, 412, 412, 412, 431, 273, 468, 476, 270, 290, - 0, 0, 289, 283, 284, 287, 285, 278, 13, 32, - 34, 81, 30, 685, 82, 455, 459, 434, 435, 273, - 0, 568, 181, 0, 197, 0, 545, 240, 672, 167, - 273, 0, 174, 0, 0, 0, 0, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 208, 209, - 210, 213, 212, 215, 216, 218, 219, 220, 221, 223, - 224, 226, 228, 230, 646, 273, 648, 273, 491, 108, - 0, 118, 119, 120, 121, 122, 685, 110, 412, 113, - 0, 0, 141, 101, 150, 685, 139, 140, 0, 48, - 0, 0, 58, 59, 69, 67, 307, 0, 306, 56, - 76, 0, 63, 66, 0, 685, 68, 160, 278, 273, - 412, 0, 273, 415, 403, 412, 406, 412, 425, 281, - 273, 288, 685, 36, 0, 273, 495, 570, 273, 273, - 0, 669, 666, 206, 273, 175, 173, 273, 273, 0, - 591, 103, 113, 97, 116, 112, 117, 115, 114, 0, - 144, 0, 0, 0, 0, 138, 0, 0, 153, 162, - 685, 152, 0, 0, 66, 0, 72, 0, 54, 53, - 0, 61, 60, 62, 0, 0, 0, 0, 0, 0, - 273, 685, 161, 0, 263, 273, 417, 273, 273, 412, - 420, 0, 395, 0, 398, 282, 291, 0, 39, 273, - 0, 198, 0, 195, 665, 546, 0, 177, 178, 651, - 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, 418, 273, 404, 0, 407, 0, 14, 496, 196, - 588, 176, 273, 143, 157, 154, 0, 158, 159, 163, - 299, 52, 49, 0, 0, 71, 47, 64, 303, 265, - 421, 412, 416, 273, 393, 399, 652, 155, 65, 51, - 419, 422, 396, 0, 0, 0 + 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 }; -static const short yydefgoto[] = { 1234, - 86, 87, 88, 89, 136, 306, 307, 90, 650, 789, - 308, 826, 952, 91, 690, 954, 928, 93, 1037, 1173, - 1119, 1103, 1174, 1213, 1111, 1039, 1040, 1041, 1115, 1042, - 1043, 1177, 1045, 1170, 773, 831, 774, 832, 775, 833, - 912, 834, 778, 835, 913, 910, 911, 812, 780, 781, - 1017, 1018, 1019, 1086, 1020, 782, 783, 94, 260, 433, - 261, 570, 95, 1024, 1154, 1155, 1026, 1100, 1122, 1101, - 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, 1233, 115, 799, 1195, 802, - 1197, 665, 1132, 668, 1134, 116, 930, 931, 1129, 1130, - 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, 1141, 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, 1203, 758, 1146, 361, 362, 212, 363, 263, - 850, 298, 215, 122 +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 yypact[] = { 2011, --32768,-32768, 26, 33, 5183,-32768, 6373,-32768, 864, 3073, - 3373, 3373,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +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, -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, - 258,-32768,-32768,-32768,-32768, 2204,-32768,-32768,-32768, 250, --32768,-32768, 12,-32768, 50,-32768,-32768,-32768, 52, 5968, +-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, - 5968, 5968, 65, 57,-32768, 904,-32768,-32768, 864,-32768, --32768,-32768,-32768,-32768,-32768, 26,-32768, 5396,-32768, 161, --32768, 65,-32768,-32768,-32768, 5183,-32768, 206,-32768, 5396, --32768, 218, 243, 283,-32768, 321, 864, 202, 308, 1881, --32768, 2584, 5396, 5396, 5396, 5396, 5396, 5396,-32768, 5440, - 5440, 334,-32768, 360, 367, 379, 423, 445, 378, 4575, --32768, 448, 468,-32768, 483,-32768, 697, 977,-32768,-32768, --32768, 960, 384, 509, 372, 532, 485, 491, 527, 467, - 37,-32768,-32768, 416,-32768, 3418, 478, 519,-32768,-32768, --32768,-32768, 576, 3118,-32768, 4575,-32768, 3418,-32768, 431, - 3418,-32768,-32768, 627, 636,-32768, 643,-32768, 2776, 483, - 647, 470, 583, 3223,-32768, 3373,-32768,-32768,-32768, 5698, --32768,-32768,-32768,-32768, 661, 666,-32768,-32768, 3373, 3418, --32768,-32768, 609,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768, 705, 727,-32768,-32768, - 6238,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 791, 407, --32768,-32768, 864, 864, 143,-32768, 250,-32768,-32768,-32768, - 4481,-32768,-32768, 383, 5563, 404, 758,-32768,-32768, 797, --32768,-32768, 835, 822, 407, 50,-32768, 291, 757,-32768, - 864,-32768, 46,-32768,-32768,-32768, 795, 5396, 5396, 5396, - 1925, 873,-32768,-32768,-32768, 587, 869, 80, 875, 885, --32768,-32768,-32768,-32768,-32768,-32768, 874, 4481,-32768,-32768, - 5396, 920, 922, 926, 936, 972, 378, 754, 5035,-32768, - 4575,-32768,-32768,-32768,-32768, 945,-32768,-32768, 4575,-32768, - 4575,-32768,-32768,-32768, 5068, 5396,-32768,-32768, 199, 5396, - 5396, 5396, 5396, 5396, 5396, 5396, 5396, 5396, 5396, 5396, - 5396, 5396, 5396, 5396, 5396, 5396, 5396, 5396, 5396, 5396, - 5396, 5396, 5396, 5396, 5396, 5396,-32768,-32768,-32768,-32768, - 5396, 823,-32768,-32768, 2392,-32768,-32768, 995,-32768,-32768, - 1002,-32768, 5396, 597, 999, 993,-32768,-32768,-32768,-32768, --32768, 65, 5698,-32768,-32768, 3373, 1836, 1009,-32768,-32768, - 5396, 398, 3523, 4658, 407,-32768, 112, 6373, 939, 1031, - 1037, 1039, 1043, 1039, 864, 1048, 425,-32768,-32768, 1536, - 1045, 553,-32768, 614,-32768, 407,-32768, 407,-32768,-32768, --32768, 986, 1057, 1058,-32768, 407, 291,-32768, 864, 1062, --32768, 1068, 864, 1074,-32768, 447, 1083, 500, 1083, 1092, --32768,-32768, 869, 1077,-32768, 5056,-32768,-32768, 1094, 1100, --32768,-32768,-32768,-32768,-32768,-32768, 5396,-32768, 1108,-32768, - 3523,-32768,-32768, 1123, 1115,-32768, 526,-32768, 140, 864, - 864,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768, 960, 960, 384, 384, 509, - 509, 509, 509, 372, 372, 532, 485, 491, 5396, 5396, - 5396,-32768, 5452, 5473,-32768,-32768, 2968,-32768, 3268, 3710, --32768,-32768, 1117, 582,-32768,-32768, 407,-32768,-32768, 1118, - 1119,-32768, 1120,-32768, 4084,-32768,-32768, 3897, 4128, 869, --32768, 1121,-32768,-32768, 1127, 1130,-32768, 1132, 1131,-32768, - 908,-32768, 1133,-32768,-32768,-32768,-32768, 1126, 482, 614, - 5352, 1134,-32768, 161,-32768, 331,-32768,-32768, 5396, 577, - 407,-32768,-32768, 1138,-32768,-32768, 1149, 6373,-32768,-32768, --32768,-32768, 1142,-32768, 1925,-32768, 5104,-32768,-32768, 1136, --32768,-32768, 1146,-32768,-32768, 1147,-32768, 5396,-32768,-32768, --32768,-32768, 527, 946, 467, 4481,-32768, 4481,-32768,-32768, --32768, 4233, 4575, 5396,-32768, 5484,-32768, 5396,-32768, 1150, --32768,-32768,-32768, 4277, 4382,-32768, 4426,-32768,-32768, 1148, --32768,-32768,-32768,-32768,-32768, 1154,-32768,-32768, 1155,-32768, - 864,-32768, 864,-32768,-32768, 316, 1151,-32768, 1152, 56, - 1104, 5008,-32768,-32768, 1157,-32768, 1153,-32768, 475, 1150, --32768, 864, 765, 4575, 1163, 5104,-32768, 1161,-32768, 1167, - 1164, 1169,-32768, 5396, 5484,-32768,-32768,-32768,-32768, 1170, - 1171,-32768,-32768, 638, 4481, 5396, 5396, 5396, 5396, 5396, - 5396, 5440, 5440, 1168, 654, 660, 1079, 1379, 674, 992, - 949, 959, 748, 979, 1172, 1159, 1160, 1143, 58, 1177, --32768, 18,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 676, 681, --32768, 1020,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 1150,-32768, 1113,-32768,-32768, 1137,-32768, - 1162,-32768,-32768,-32768, 1165,-32768, 2922, 1166, 1150,-32768, --32768, 4531,-32768,-32768,-32768,-32768, 6103,-32768,-32768, 6103, --32768,-32768,-32768,-32768, 5396, 1025, 1184,-32768,-32768,-32768, - 1187, 1196,-32768, 5008, 5396, 864,-32768,-32768, 5008, 552, --32768, 1195, 5008, 1173,-32768, 1150,-32768, 1202,-32768,-32768, --32768, 1150,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 250, - 1197,-32768, 756,-32768, 614,-32768,-32768, 1161, 3324, 1217, - 864,-32768,-32768, 690, 1214, 5396, 1136, 1136, 1222, 691, - 1216, 709, 712, 714, 728, 763, 777, 799, 801, 5396, - 5363, 5396, 808, 810, 329, 5396, 5396, 5396, 5396, 5396, - 5396, 5396, 5396, 5396, 5396, 5396, 5396, 5396, 5396, 5396, - 5396, 5396, 5396, 5396, 5396, 5396, 5396, 5396, 5396, 5396, - 5396, 5396, 5396,-32768, 5396,-32768, 1231, 1236,-32768, 1066, - 1218, 281, 66,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 723,-32768,-32768,-32768,-32768, 5008, 629,-32768, 65, 4817, --32768, 6103, 4817, 6103,-32768,-32768,-32768,-32768,-32768,-32768, - 1059, 1233,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768, 1150,-32768, 50,-32768, 683,-32768,-32768,-32768, 5384, - 1241,-32768,-32768, 782,-32768, 1244, 869,-32768,-32768, 819, - 5056, 1246, 827, 846, 369, 864, 864,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 851, 857, - 890, 854, 980, 121, 460, 302, 356, 411, 512, 106, - 1038, 364, 575, 196, 527, 5396, 467, 5484,-32768, 431, - 1020,-32768,-32768,-32768,-32768,-32768, 722,-32768, 5833, 281, - 86, 86,-32768,-32768, 95, 821,-32768,-32768, 297,-32768, - 803, 313,-32768,-32768,-32768,-32768,-32768, 1242,-32768, -34, --32768, 1084,-32768, 129, 1247, 50,-32768, 297,-32768,-32768, --32768, 1255, 716,-32768,-32768, 4817,-32768, 4817,-32768,-32768, - 4982,-32768, 829,-32768, 1185, 812,-32768,-32768,-32768, 5396, - 864,-32768, 1086, 895,-32768, 897, 909,-32768,-32768, 1078, --32768,-32768, 281,-32768,-32768,-32768,-32768,-32768,-32768, 585, - 95, 695, 864, 864, 86,-32768, 297, 297,-32768, 487, - 865,-32768, 1257, 1081, 600, 313, 494, 83,-32768,-32768, - 803,-32768,-32768,-32768, 803, -12, 864, 864, 1259, 803, --32768, 50, 1261, 944,-32768, 407,-32768,-32768, 1263,-32768, - 1264, 1267,-32768, 1268,-32768,-32768,-32768, 1198,-32768, 746, - 1265,-32768, 436,-32768,-32768,-32768, 1266, 914, 924,-32768, --32768,-32768,-32768, 95, 1269, 431,-32768,-32768, 95, 768, - 487, 794, 864, 864, 297,-32768, 1099,-32768,-32768, 803, --32768, 600, 1253,-32768, 494,-32768, 494,-32768,-32768, 1270, --32768,-32768, 1099, 1274,-32768,-32768,-32768,-32768, 5396, 716, - 1282,-32768,-32768,-32768, 1286,-32768, 1288,-32768,-32768,-32768, --32768, 932, 5396,-32768,-32768,-32768, 1275,-32768,-32768, 487, --32768,-32768,-32768, 1284, 83,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 5396,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 1311, 1312,-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, +-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 }; static const short yypgoto[] = {-32768, --32768, 1224,-32768,-32768,-32768,-32768, -408, -117,-32768,-32768, - 1003,-32768,-32768,-32768,-32768,-32768, 53,-32768,-32768, 392, --32768,-32768, 100, 135,-32768, 208,-32768,-32768,-32768, -1007, --32768, -883,-32768,-32768, -710, -457,-32768,-32768,-32768, -609, --32768, -608,-32768, -546,-32768, 312,-32768,-32768, 644, -657, --32768, 241, 306,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768, -896, 166,-32768, -1043,-32768, 282, --32768,-32768, -628, 458, 1089,-32768,-32768, -616,-32768,-32768, - -84, -338, -321, 64, -357, -381, -392, -367, -490, -514, --32768, -614,-32768, -115,-32768,-32768, 484, 1055, -592, -394, - 6,-32768,-32768,-32768, -442,-32768,-32768,-32768, 82, -288, - 876,-32768, -908, -717,-32768,-32768, 511,-32768,-32768,-32768, - -486,-32768,-32768,-32768, -434,-32768,-32768,-32768,-32768,-32768, - 545,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768, 286, 761,-32768, 1018,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768, 187, -756, -885,-32768, 146, --32768,-32768, 664, 667, 496, 7, -398, 1215,-32768, -2, --32768,-32768, -568,-32768,-32768,-32768, 648, -109, 1047,-32768, - -444, 919, 1333,-32768, 1109,-32768, 1175,-32768,-32768,-32768, --32768, -108,-32768,-32768,-32768,-32768,-32768, 70, 1310, 1000, - 1395,-32768,-32768, 1412,-32768,-32768, -323,-32768, 767, 203, - -554, -858,-32768, 849,-32768,-32768, 948, -202, 655, 507, - -483, 51,-32768, 117, 42,-32768,-32768, 263,-32768, 350, --32768,-32768, 652,-32768, 351, -596,-32768,-32768,-32768,-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,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768, 1493,-32768,-32768, 1543, -290, - 510, 0, 612,-32768 +-32768,-32768,-32768,-32768,-32768, 1518,-32768,-32768, 1639, -273, + 511, 0, 441,-32768 }; -#define YYLAST 6565 - - -static const short yytable[] = { 120, - 127, 287, 537, 484, 120, 96, 118, 590, 120, 214, - 214, 214, 536, 593, 1179, 462, 1025, 727, 297, 464, - 677, 1109, 695, 1104, 315, 499, 635, 423, 538, 729, - 259, 739, 836, 563, 534, 535, 561, 1044, -598, 1063, - 776, 777, -598, 933, 1054, 526, 527, 1054, 633, 742, - 468, 207, 92, 1160, 1161, 588, 128, 602, 434, 3, - 468, 237, 237, 914, 528, 529, 642, 262, 331, 332, - 333, 334, 335, 336, 1057, 264, 727, 398, 924, 198, - 810, 99, -273, 262, 655, 120, 99, 1030, 729, 1021, - 739, 96, 118, 399, 244, 245, 940, 400, 904, 1022, - 401, 944, 622, 779, 485, 948, 1106, 1178, 742, 1021, - 415, 811, 1184, 800, 905, 419, 1032, 420, 120, 1022, - 1092, 1210, 1093, 290, 1090, 1091, -637, 238, 238, -412, - -637, 738, -412, 311, -412, 120, 123, 124, 92, 1094, - 1124, -629, 388, 389, 281, -629, 120, 1105, 1107, 1110, - -46, 214, 384, 385, 1116, 737, 1117, 390, 391, 499, - 401, 445, 1214, 785, 776, 777, 630, 99, 836, 214, - 1054, 440, 1054, 1118, 836, 1056, 1180, 1058, 464, 776, - 777, 299, 267, 268, 269, 270, 271, 272, 273, 274, - 738, 276, 688, 207, 279, 214, 679, 1133, 1159, 1135, - 99, 687, 550, 214, 685, 214, 410, 214, 1049, 295, - 214, 300, 301, 303, 737, 788, -644, 309, 214, 323, - -644, 330, 1172, 214, 1175, 214, 510, 779, 489, 313, - -412, -412, -412, 295, 395, -412, -412, 207, 214, 214, - 337, 318, 779, 511, 932, 207, 659, 934, 845, 207, - 79, 1023, 207, 735, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 734, 403, 319, 79, 1035, 237, - 79, 1023, 208, -274, 237, 257, 237, 409, 736, 120, - 411, 207, 120, 120, 120, 113, 437, 785, 733, 237, - 132, -696, 135, 452, 836, 275, 523, 524, 525, 280, - 295, 282, 785, 286, 120, 684, 320, 730, 288, 428, - 120, 461, 735, 1010, -274, 315, 463, 559, 419, 304, - 1097, 305, -632, 734, 731, 324, -632, 79, 80, 137, - 1098, 1175, 83, 84, 315, 238, 1106, 736, 431, 788, - 238, 450, 238, 1137, 321, -696, 1032, 733, 262, 3, - 214, 386, 387, 683, 788, 238, 976, 341, 214, 209, - 214, 99, 438, 369, 441, 443, 730, 1067, 951, 1012, - 1013, 113, 295, 977, 955, 342, -633, 451, 619, 727, - -633, 315, 343, 731, -640, 265, 99, 677, -640, 401, - 1007, 729, 309, 739, 344, 1077, 265, 265, 845, 1014, - 1015, 618, 468, 401, 214, 386, 387, 448, 388, 389, - 935, 742, 1005, 1016, 208, 384, 385, 392, 393, 295, - 942, 310, 562, 390, 391, 214, 214, -273, 558, 450, - 295, -634, 214, 400, 120, -634, 401, 3, 345, 558, - 3, 571, -696, -696, 120, 401, 207, -696, -696, 485, - 435, 530, 531, 532, 533, 120, 401, 120, 208, 346, - 386, 387, 1200, 311, 440, 120, 208, 401, 120, -690, - 208, 612, 120, 208, 548, 315, 237, 237, 347, 829, - -630, 79, 1099, 315, -630, 456, 468, 417, 458, -694, - 401, 384, 385, 738, 1064, 1156, 466, 79, 1035, 469, - 214, 209, 208, 279, -691, -412, 675, -412, 1003, 120, - 120, 701, 1162, 394, 1163, -412, 99, 737, 1002, 1116, - 401, 1117, 397, 576, 614, 579, 710, 585, 711, 395, - 586, 1164, -635, 451, 1004, 592, -635, 99, 1118, 99, - 1000, 1001, 238, 238, 599, 209, 628, 309, 214, 214, - 629, 992, 993, 209, 608, 558, 120, 209, 386, 387, - 209, 386, 387, 647, 214, 1156, 396, 214, 214, 438, - 994, 995, 404, 558, 945, 840, -273, 815, 450, 816, - 449, 468, -412, -412, -412, 392, 393, -412, -412, 209, - 207, 79, 80, 137, 405, -642, 83, 84, 311, -642, - 120, 686, 401, 394, 482, 861, 645, 401, 557, 1152, - 1092, 121, 1093, -517, 417, 735, 121, 401, 469, 410, - 138, 485, 1027, 572, 1171, 1116, 734, 1117, 577, 1094, - 580, 862, 863, 864, 865, 866, 867, -273, 99, 591, - 736, 214, 214, 1073, 1118, 759, 1050, 596, -693, 1051, - 733, 601, 660, 214, 214, 438, 214, 412, 401, 79, - 80, 137, 859, 1065, 83, 84, 413, 208, -692, 730, - 120, 592, 120, 452, -595, 681, 682, 418, -595, 424, - -594, 214, 309, 1188, -594, 425, 731, 468, 120, 315, - 843, 120, 120, 214, -618, 590, -593, 121, -618, 315, - -593, 401, 438, 429, 759, 908, -412, 675, -412, 732, - 401, 401, 707, 708, 966, 970, -412, 295, 1021, 295, - 365, 1153, 366, 449, -412, 840, 1084, 1030, 1022, -612, - 121, 430, -617, -612, -616, 1096, -617, 1128, -616, 262, - 968, -412, 1083, 796, 367, 368, 1031, 312, -615, 3, - 432, 803, -615, 805, 209, 1121, 1032, 451, 322, 497, - 498, -412, -412, -412, 823, 824, -412, -412, 732, 828, - -463, 450, 1138, 608, 841, 676, 203, 235, 235, -273, - 465, 450, 455, -614, 894, 895, 469, -614, -273, 3, - 450, 214, 1205, 1162, 1221, 1163, 295, -613, 3, 896, - 897, -613, 989, 990, 991, 700, 1069, 1070, 436, 1071, - 1166, 208, 1164, 214, 457, 120, 475, 1021, 214, -610, - 1206, -611, 214, -610, 490, -611, 1031, 1022, -607, 1232, - -608, 1186, -607, 572, -608, 761, 1032, 450, 262, -599, - 843, 1095, 120, -599, 460, 3, 262, -602, 508, 1051, - 120, -602, 459, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 543, 544, 628, -412, -412, -412, - 1076, -622, -412, -412, -627, -622, 926, -623, -627, 79, - 1023, -623, 262, 174, 542, 1165, 1074, 381, 382, 383, - 481, 121, 483, 693, 442, 444, 446, 488, 209, 486, - 79, 80, 137, 1033, 1034, 83, 84, 79, 1035, 487, - -624, 1036, 1028, 875, -624, -620, 121, -603, 203, -620, - 1047, -603, 312, 957, 841, 214, 592, 670, 671, -601, - 79, 80, 137, -601, -605, 83, 84, 491, -605, 492, - 79, 80, 137, 493, -606, 83, 84, 958, -606, 79, - 80, 137, -604, 494, 83, 84, -604, 996, 997, 998, - 999, 1187, 203, 501, 1051, 1147, 401, 709, 918, 919, - 203, 283, 284, 285, 203, 120, 120, 203, 79, 1023, - 890, 891, 174, 1033, 1034, 235, 416, 79, 1035, 495, - 235, 1036, 235, 381, 382, 383, 79, 80, 137, 370, - -626, 83, 84, 552, -626, 235, 203, 759, 892, 893, - 1052, 950, 553, 381, 382, 383, 556, 1059, 1088, 560, - 1028, 1028, 287, 555, 1087, 887, 888, 889, 1102, 573, - 1047, 1047, 898, 899, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 936, 671, 121, 1102, 79, 80, - 137, 574, 120, 83, 84, 575, 583, -273, -638, 1131, - 214, 578, -638, 1140, 194, 120, 584, 121, 589, 121, - 120, 732, 571, 315, 388, 389, 597, 312, 1060, 1061, - 605, 600, 929, 598, 610, 929, 606, 1227, 607, 390, - 391, 1028, 120, 120, 1028, 611, 1102, 1102, 401, 1150, - 697, 616, 871, 401, 872, 1047, -412, 1047, 315, 615, - 1047, 706, 1168, 1169, 1047, 1053, 120, 120, 620, 1047, - 621, 631, 632, -412, 408, 120, 873, 874, 277, 278, - 505, 1125, 624, 626, 99, 1112, 1113, 1114, 627, 120, - 644, 648, 1066, 661, 651, 649, 664, 841, 666, 669, - 1142, 667, 674, 691, 617, 672, 438, 680, 689, 1148, - 1149, 1028, 120, 120, 1102, 817, 694, 703, 121, 1047, - 704, 203, 794, 798, 801, 808, 762, 827, 809, 697, - 847, 849, 294, 825, 196, 226, 226, 851, 852, 120, - 853, 870, 235, 235, 857, 858, 1131, 901, 903, 902, - 900, 906, 1185, 915, 326, 909, 328, 99, 937, 1189, - 1191, 938, 312, 939, 1047, 929, 947, 929, 929, 929, - 956, 841, 762, 763, 764, 765, 953, 916, 314, 766, - 767, 768, 769, 770, 771, 772, 963, 1126, 967, 969, - 971, 314, 314, 314, 314, 314, 314, 1211, 339, 340, - 194, 1008, 917, 1009, 174, 920, 923, 1011, 194, 1062, - 1068, 1072, 194, 949, 1108, 194, 1075, 1219, 1220, 500, - 1120, 99, 1127, 414, 1224, 1139, 1145, 503, 1167, 504, - 1183, 1165, 583, 1190, 583, 1193, 1194, 1196, 1198, 1199, - 1202, 1212, 1215, 822, 194, 1204, 1216, 817, 1218, 1223, - 830, 1228, 817, 610, 121, 1225, 817, 1226, 1229, 256, - 1235, 1236, 1038, 467, 1230, 203, 1192, 1217, 1176, 199, - 232, 232, 1082, 1151, 813, 1089, 196, 1207, 974, 1123, - 946, 922, 697, 594, 663, 1222, 806, 804, 959, 839, - 289, 929, 453, 929, 242, 447, 496, 427, 1201, 625, - 848, 566, 549, 972, 508, 962, 855, 961, 1081, 978, - 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, - 196, 0, 476, 477, 478, 479, 0, 0, 196, 0, - 0, 0, 196, 0, 0, 196, 0, 0, 0, 0, - 0, 0, 447, 226, 0, 0, 0, 0, 226, 0, - 226, 876, 0, 447, 200, 233, 233, 0, 1231, 817, - 0, 0, 0, 226, 196, 0, 0, 0, 0, 566, - 509, 201, 234, 234, 0, 822, 0, 943, 0, 0, - 822, 0, 0, 0, 822, 0, 877, 878, 879, 880, - 881, 882, 883, 884, 885, 886, 0, 0, 0, 0, - 0, 0, 0, 0, 121, 0, 0, 0, 0, 194, - 0, 199, 965, 0, 0, 0, 0, 554, 566, 314, - 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, - 314, 314, 314, 314, 314, 0, 566, 658, 0, 0, +#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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 211, 240, 240, 199, 0, 0, 0, 0, - 0, 0, 0, 199, 0, 0, 0, 199, 0, 314, - 199, 0, 0, 0, 0, 0, 0, 0, 232, 0, - 0, 0, 0, 232, 0, 232, 0, 822, 314, 0, - 0, 0, 0, 0, 817, 0, 200, 0, 232, 199, - 0, 0, 213, 241, 241, 0, 0, 0, 0, 291, - 658, 713, 587, 201, 153, 154, 155, 156, 157, 158, - 0, 0, 0, 658, 314, 0, 0, 0, 0, 196, - 0, 0, 159, 160, 161, 314, 0, 1078, 1079, 0, - 200, 0, 0, 0, 634, 0, 0, 0, 200, 0, - 226, 226, 200, 194, 0, 200, 162, 201, 0, 0, - 0, 0, 846, 233, 0, 201, 0, 0, 233, 201, - 233, 0, 201, 0, 0, 0, 0, 314, 0, 314, - 234, 637, 639, 233, 200, 234, 0, 234, 0, 0, - 0, 0, 0, 0, 211, 0, 0, 0, 0, 171, - 234, 201, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 121, 0, 0, 0, 0, 479, - 0, 0, 822, 0, 0, 0, 0, 121, 0, 314, - 0, 0, 1144, 0, 0, 0, 0, 314, 211, 0, - 447, 0, 447, 0, 213, 0, 211, 0, 714, 0, - 211, 0, 760, 211, 1157, 1158, 0, 0, 0, 0, - 0, 240, 0, 0, 199, 0, 240, 0, 240, 0, - 79, 292, 293, 196, 174, 0, 0, 0, 1181, 1182, - 0, 240, 211, 0, 728, 232, 232, 121, 213, 0, - 0, 0, 0, 0, 0, 0, 213, 0, 0, 0, - 213, 121, 0, 213, 0, 0, 0, 0, 854, 0, - 0, 241, 0, 0, 0, 0, 241, 0, 241, 860, - 0, 0, 0, 0, 1208, 1209, 0, 0, 0, 0, - 0, 241, 213, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 728, 0, 0, 0, 0, 0, 200, - 0, 121, 0, 0, 314, 314, 314, 314, 314, 314, - 868, 869, 0, 0, 0, 0, 201, 0, 0, 0, - 233, 233, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 216, 234, 234, 0, - 0, 140, 141, 142, 0, 0, 217, 145, 146, 147, - 148, 149, 150, 218, -490, -490, 0, 0, 199, 219, - -490, 0, 0, 0, 153, 154, 155, 156, 157, 158, - 0, 0, 0, 0, 0, 0, 0, -273, -273, 0, - 0, 0, 159, 160, 161, 0, 0, 0, 0, 0, - 0, 0, 0, 314, 0, 0, 0, 211, 325, 0, - 0, 0, 0, 314, 291, 0, 162, 0, 0, 153, - 154, 155, 156, 157, 158, 0, 0, 0, 240, 240, - 0, 0, 0, 0, 0, 0, 975, 159, 160, 161, - -490, 164, 165, 166, 167, 168, 169, 0, 0, 0, - 0, 0, -255, 200, 314, 170, 0, 213, 291, 171, - 0, 162, 0, 153, 154, 155, 156, 157, 158, 0, - 201, 0, 0, 0, 0, 0, 0, 0, 241, 241, - 0, 159, 160, 161, 0, 314, 314, 314, 314, 314, - 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, - 314, 314, 0, 314, 171, 162, 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, 0, 0, 0, 0, 0, 0, 0, 0, - -1, 1, 0, 0, 479, 0, 0, 0, 0, 0, - 79, 172, 173, 0, 174, 220, 221, 0, 2, 0, - 0, 0, 0, 0, -273, 0, 0, 0, 171, 0, - 0, 211, 0, 0, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 5, 0, 0, 314, - 1080, 0, 0, 0, 0, 79, 292, 293, 0, 174, - 0, 0, 0, 0, 0, 0, 0, 0, -412, -412, - -412, 0, 6, 0, 0, 0, 0, 7, 8, 9, - 0, 213, 0, 0, 0, 0, 728, 0, 0, 0, - 0, 0, 10, 11, 12, 0, 0, 0, 0, 79, - 292, 293, 0, 174, 0, 0, 0, 0, 0, 0, - 0, 13, 14, 15, 1143, 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, -2, 1, 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, - 0, 2, 0, 0, 0, 0, 0, -273, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4, 0, 5, + 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, 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, 0, 0, 0, 0, - 0, -412, -412, -412, 0, 6, 0, 314, 0, 0, - 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, - 0, 314, 0, 0, 0, 10, 11, 12, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 314, 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, - -545, 546, 0, 0, 0, 152, 0, 0, 0, 0, - 153, 154, 155, 156, 157, 158, 0, 0, 0, 0, - 0, 0, 0, -273, -273, 4, 0, 5, 159, 160, - 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -412, - -412, -412, 162, 6, 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, 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, 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, -273, -273, -273, 0, 0, - 159, 160, 161, 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, -273, -273, -273, 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, 164, - 165, 166, 167, 168, 169, 0, 0, 0, 0, 0, - 0, 0, 0, 170, -273, -273, -273, 171, -273, -273, - -273, -273, -273, -273, -273, -273, -273, -273, 0, -273, + 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, 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, - -273, -273, 0, 0, 0, 0, 0, 0, 79, 172, - 173, -273, 174, 175, 84, -273, 216, 0, 0, 0, - 0, 140, 141, 142, 0, 0, 217, 145, 146, 147, - 148, 149, 150, 218, -170, -549, 0, 0, 0, 219, - 0, 0, 0, 0, 153, 154, 155, 156, 157, 158, - 0, 0, 0, 0, 0, 0, 0, -273, -273, -273, - 0, 0, 159, 160, 161, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -273, -273, -273, 162, 0, 0, 0, + 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, 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, 164, 165, 166, 167, 168, 169, 0, 0, 0, - 0, 0, 0, 0, 0, 170, -273, -273, -273, 171, + 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, - 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, - 79, 172, 173, -273, 174, 220, 221, -273, -168, 0, - 0, 0, 0, -168, -168, -168, 0, -168, -168, -168, - -168, -168, -168, -168, -168, -168, -168, -168, -168, -694, - -168, -168, 0, -168, 0, -168, -168, -168, -168, -168, - -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, + -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, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, - -168, -168, -168, -168, -168, 0, 0, 0, -168, 0, - 0, 0, 22, 23, 24, 25, 0, 26, 0, 0, - 0, 0, 31, 32, 0, 0, 35, 36, 0, 38, - 39, 40, 41, -168, -168, -168, -168, -168, -168, 0, - 0, 0, 0, 139, 53, 54, 0, -168, 140, 141, - 142, -168, 143, 144, 145, 146, 147, 148, 149, 150, - 151, -545, 0, 0, 0, 0, 152, 0, 0, 78, - 0, 153, 154, 155, 156, 157, 158, 0, 0, 82, - 0, 0, 0, 0, -273, -273, 0, 0, 139, 159, - 160, 161, 0, 140, 141, 142, 0, 143, 144, 145, - 146, 147, 148, 149, 150, 151, -545, 0, 0, 0, - 0, 152, 0, 162, 0, 0, 153, 154, 155, 156, - 157, 158, -168, -168, -168, 0, -168, -168, -168, -273, - -273, 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, -168, 0, -168, -168, -168, -168, -168, -168, -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, 0, -518, 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, -545, -549, 0, 0, 0, 219, 0, 0, 0, - 0, 153, 154, 155, 156, 157, 158, 79, 172, 173, - 0, 174, 175, 84, -273, -273, 0, 0, 139, 159, - 160, 161, 0, 140, 141, 142, 0, 143, 144, 145, - 146, 147, 148, 149, 150, 151, -545, 640, 0, 0, - 0, 152, 0, 162, 0, 0, 153, 154, 155, 156, - 157, 158, 79, 172, 173, 0, 174, 175, 84, -273, - -273, 0, 0, 0, 159, 160, 161, -486, 164, 165, - 166, 167, 168, 169, 0, 0, 0, 0, 0, 0, - 0, 0, 170, 0, 0, 0, 171, 0, 162, 0, - 0, 0, 696, -688, 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, -545, -549, 0, 162, 0, 219, 0, 0, 0, - 0, 153, 154, 155, 156, 157, 158, 79, 172, 173, - 0, 174, 220, 221, -273, -273, 0, 0, 139, 159, - 160, 161, 0, 140, 141, 142, 0, 143, 144, 145, - 146, 147, 148, 149, 150, 151, -545, 171, 0, 0, - 0, 152, 0, 162, 0, 0, 153, 154, 155, 156, - 157, 158, 79, 172, 173, 0, 174, 175, 84, -273, - -273, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 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, -545, 564, 0, 0, 0, 349, 0, 0, 0, - 0, 153, 154, 155, 156, 157, 158, 79, 172, 173, - 0, 174, 220, 221, -273, -273, 4, 0, 5, 159, - 160, 161, 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, 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, -545, 641, - 0, 0, 0, 349, 0, 0, 0, 0, 153, 154, - 155, 156, 157, 158, 0, 0, 0, 0, 0, 0, - 0, -273, -273, 4, 0, 5, 159, 160, 161, 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, 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, 164, + 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, 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, -545, 653, 0, 0, 0, - 349, 0, 0, 0, 0, 153, 154, 155, 156, 157, - 158, 0, 0, 0, 0, 0, 0, 0, -273, -273, - 4, 0, 5, 159, 160, 161, 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, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 162, 6, 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, 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, + 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, 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, -545, 652, 0, 0, 0, 349, 0, 0, - 0, 0, 153, 154, 155, 156, 157, 158, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, 0, - 159, 160, 161, 140, 141, 142, 0, 143, 144, 145, - 146, 147, 148, 149, 150, 218, -545, 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, 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, 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, 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, -545, 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, -545, 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, 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, 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, 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, - -545, 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, -545, 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, 291, 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, -545, - 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, -545, 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, 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, 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, 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, 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, -548, 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, 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, 0, 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, 0, 0, 0, 0, 0, - 814, 1136, 0, 134, 82, 291, 0, 815, 85, 816, - 153, 154, 155, 156, 157, 158, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 814, 0, 159, 160, - 161, 291, 0, 815, 0, 816, 153, 154, 155, 156, - 157, 158, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 162, -170, 159, 160, 161, 0, 349, 0, - 0, 0, 0, 153, 154, 155, 156, 157, 158, 0, - 0, 0, 0, 0, 617, 0, 0, 0, 162, 291, - 0, 159, 160, 161, 153, 154, 155, 156, 157, 158, - 0, 291, 506, 0, 0, 171, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 0, 0, 0, 0, - 0, 0, 0, 0, 159, 160, 161, 0, 0, 0, - 0, 171, 696, 0, 0, 0, 162, 291, 0, 0, - 0, 0, 153, 154, 155, 156, 157, 158, 162, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 171, 0, - 159, 160, 161, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 79, 172, 173, 171, - 174, 83, 84, 0, 162, 0, 0, 0, 0, 0, - 0, 171, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 79, 172, 173, 0, 174, 83, 84, 0, - 0, 0, 0, 0, 0, 0, -273, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3, 171, 0, 79, - 292, 293, 0, 174, 0, 0, 4, 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, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 0, 0, 678, 0, - 153, 154, 155, 156, 157, 158, 291, 973, 0, 0, - 0, 153, 154, 155, 156, 157, 158, 0, 159, 160, - 161, 0, 0, 0, 0, 0, 0, 291, -255, 159, - 160, 161, 153, 154, 155, 156, 157, 158, 0, 291, - 0, 0, 162, 0, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 0, 0, 0, 0, 0, 0, - 0, 0, 159, 160, 161, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, - 0, 0, 0, 338, 0, 171, 162, 0, 153, 154, - 155, 156, 157, 158, 0, 636, 171, 0, 0, 0, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 0, - 0, 0, 0, 0, 0, 0, 638, 171, 159, 160, - 161, 153, 154, 155, 156, 157, 158, 715, 0, 171, - 162, 0, 716, 717, 718, 719, 720, 721, 0, 159, - 160, 161, 162, 0, 0, 0, 0, 0, 0, 0, - 159, 722, 723, 0, 0, 0, 79, 292, 293, 0, - 174, 0, 0, 162, 0, 0, 0, 79, 292, 293, - 0, 174, 0, 171, 724, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 171, 0, 0, 79, 292, - 293, 0, 174, 0, 0, 0, 0, 0, 0, 0, - 79, 292, 293, 0, 174, 0, 171, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 171, 0, 0, - 0, 0, 0, 0, -199, -199, 4, 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, 79, 292, 293, 0, - 174, 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, 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, -412, -412, -412, 0, 6, + 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, 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, 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, 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, 80, + 728, 729, 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, 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, - 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, 1085, 134, - 82, 0, 0, 0, 85, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -412, -412, -412, 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, 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, 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, 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, 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, 0, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 0, 26, 27, 28, 29, 30, 31, 32, + 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, 4, 0, 0, 0, - 0, 0, 0, 0, 134, 82, 0, 0, 0, 85, + 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, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 134, - 82, 0, 0, 0, 85 + 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 }; static const short yycheck[] = { 0, - 3, 119, 395, 327, 5, 0, 0, 452, 9, 10, - 11, 12, 394, 456, 27, 306, 913, 646, 128, 308, - 589, 56, 615, 1031, 140, 349, 541, 230, 396, 646, - 19, 646, 690, 432, 392, 393, 431, 921, 21, 948, - 650, 650, 25, 800, 930, 384, 385, 933, 539, 646, - 5, 10, 0, 1097, 1098, 450, 24, 466, 261, 34, - 5, 11, 12, 774, 386, 387, 550, 18, 153, 154, - 155, 156, 157, 158, 933, 24, 705, 41, 789, 10, - 25, 0, 18, 18, 568, 86, 5, 5, 705, 24, - 705, 86, 86, 57, 13, 14, 814, 18, 41, 34, - 21, 819, 497, 650, 25, 823, 24, 1115, 705, 24, - 219, 680, 1120, 668, 57, 224, 34, 226, 119, 34, - 26, 1165, 28, 126, 1021, 1022, 21, 11, 12, 18, - 25, 646, 21, 136, 23, 136, 111, 112, 86, 45, - 1049, 21, 37, 38, 88, 25, 147, 1031, 1032, 184, - 22, 152, 32, 33, 26, 646, 28, 52, 53, 483, - 21, 19, 1170, 650, 774, 774, 27, 86, 826, 170, - 1056, 281, 1058, 45, 832, 932, 189, 934, 467, 789, - 789, 21, 101, 102, 103, 104, 105, 106, 107, 108, - 705, 110, 601, 152, 113, 196, 591, 1056, 1095, 1058, - 119, 600, 405, 204, 599, 206, 189, 208, 926, 128, - 211, 130, 131, 132, 705, 650, 21, 136, 219, 18, - 25, 152, 1106, 224, 1108, 226, 28, 774, 338, 24, - 185, 186, 187, 152, 39, 190, 191, 196, 239, 240, - 159, 24, 789, 45, 799, 204, 570, 802, 693, 208, - 185, 186, 211, 646, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 646, 196, 24, 185, 186, 219, - 185, 186, 10, 24, 224, 26, 226, 208, 646, 280, - 211, 240, 283, 284, 285, 0, 280, 774, 646, 239, - 5, 34, 7, 296, 952, 109, 381, 382, 383, 113, - 219, 115, 789, 117, 305, 596, 24, 646, 122, 240, - 311, 305, 705, 910, 24, 431, 26, 426, 427, 133, - 24, 135, 21, 705, 646, 18, 25, 185, 186, 187, - 34, 1215, 190, 191, 450, 219, 24, 705, 257, 774, - 224, 26, 226, 1061, 24, 88, 34, 705, 18, 34, - 351, 50, 51, 23, 789, 239, 28, 24, 359, 10, - 361, 280, 281, 177, 283, 284, 705, 960, 826, 89, - 90, 86, 291, 45, 832, 16, 21, 296, 488, 1008, - 25, 497, 16, 705, 21, 100, 305, 956, 25, 21, - 905, 1008, 311, 1008, 16, 27, 111, 112, 843, 119, - 120, 486, 5, 21, 405, 50, 51, 25, 37, 38, - 805, 1008, 903, 133, 152, 32, 33, 54, 55, 338, - 815, 136, 25, 52, 53, 426, 427, 24, 423, 26, - 349, 21, 433, 18, 435, 25, 21, 34, 16, 434, - 34, 435, 185, 186, 445, 21, 405, 190, 191, 25, - 264, 388, 389, 390, 391, 456, 21, 458, 196, 15, - 50, 51, 27, 466, 574, 466, 204, 21, 469, 22, - 208, 25, 473, 211, 405, 591, 426, 427, 101, 5, - 21, 185, 186, 599, 25, 299, 5, 18, 302, 22, - 21, 32, 33, 1008, 952, 1092, 310, 185, 186, 313, - 501, 152, 240, 422, 22, 24, 25, 26, 901, 510, - 511, 621, 26, 29, 28, 34, 435, 1008, 900, 26, - 21, 28, 56, 442, 25, 444, 636, 446, 638, 39, - 449, 45, 21, 452, 902, 454, 25, 456, 45, 458, - 898, 899, 426, 427, 463, 196, 21, 466, 549, 550, - 25, 890, 891, 204, 473, 550, 557, 208, 50, 51, - 211, 50, 51, 557, 565, 1162, 40, 568, 569, 488, - 892, 893, 95, 568, 23, 693, 24, 26, 26, 28, - 295, 5, 185, 186, 187, 54, 55, 190, 191, 240, - 549, 185, 186, 187, 19, 21, 190, 191, 601, 25, - 601, 25, 21, 29, 18, 715, 25, 21, 422, 25, - 26, 0, 28, 95, 18, 1008, 5, 21, 432, 189, - 9, 25, 913, 437, 25, 26, 1008, 28, 442, 45, - 444, 716, 717, 718, 719, 720, 721, 24, 557, 26, - 1008, 642, 643, 967, 45, 646, 18, 461, 22, 21, - 1008, 465, 571, 654, 655, 574, 657, 22, 21, 185, - 186, 187, 25, 954, 190, 191, 24, 405, 22, 1008, - 671, 590, 673, 676, 21, 594, 595, 95, 25, 19, - 21, 682, 601, 1126, 25, 20, 1008, 5, 689, 805, - 693, 692, 693, 694, 21, 1140, 21, 86, 25, 815, - 25, 21, 621, 95, 705, 25, 24, 25, 26, 646, - 21, 21, 631, 632, 25, 25, 34, 636, 24, 638, - 24, 27, 26, 438, 28, 843, 1017, 5, 34, 21, - 119, 27, 21, 25, 21, 1026, 25, 22, 25, 18, - 856, 45, 21, 662, 48, 49, 24, 136, 21, 34, - 24, 670, 25, 672, 405, 1046, 34, 676, 147, 6, - 7, 185, 186, 187, 683, 684, 190, 191, 705, 688, - 25, 26, 1063, 692, 693, 589, 10, 11, 12, 24, - 24, 26, 25, 21, 37, 38, 600, 25, 24, 34, - 26, 792, 25, 26, 1189, 28, 715, 21, 34, 52, - 53, 25, 887, 888, 889, 619, 25, 26, 18, 28, - 1101, 549, 45, 814, 18, 816, 22, 24, 819, 21, - 27, 21, 823, 25, 341, 25, 24, 34, 21, 1224, - 21, 1122, 25, 647, 25, 649, 34, 26, 18, 21, - 843, 21, 843, 25, 23, 34, 18, 21, 365, 21, - 851, 25, 18, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 42, 43, 21, 185, 186, 187, - 25, 21, 190, 191, 21, 25, 795, 21, 25, 185, - 186, 25, 18, 189, 401, 21, 971, 34, 35, 36, - 18, 280, 24, 608, 283, 284, 285, 24, 549, 25, - 185, 186, 187, 181, 182, 190, 191, 185, 186, 25, - 21, 189, 913, 727, 25, 21, 305, 21, 152, 25, - 921, 25, 311, 842, 843, 926, 845, 20, 21, 21, - 185, 186, 187, 25, 21, 190, 191, 18, 25, 18, - 185, 186, 187, 18, 21, 190, 191, 192, 25, 185, - 186, 187, 21, 18, 190, 191, 25, 894, 895, 896, - 897, 18, 196, 19, 21, 1075, 21, 22, 782, 783, - 204, 68, 69, 70, 208, 976, 977, 211, 185, 186, - 32, 33, 189, 181, 182, 219, 220, 185, 186, 18, - 224, 189, 226, 34, 35, 36, 185, 186, 187, 23, - 21, 190, 191, 9, 25, 239, 240, 1008, 50, 51, - 929, 825, 11, 34, 35, 36, 24, 936, 1019, 11, - 1021, 1022, 1140, 25, 1019, 34, 35, 36, 1029, 91, - 1031, 1032, 54, 55, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 20, 21, 435, 1048, 185, 186, - 187, 21, 1053, 190, 191, 19, 445, 19, 21, 1053, - 1061, 19, 25, 1066, 10, 1066, 19, 456, 24, 458, - 1071, 1008, 1066, 1189, 37, 38, 91, 466, 20, 21, - 469, 24, 797, 27, 473, 800, 25, 1203, 21, 52, - 53, 1092, 1093, 1094, 1095, 22, 1097, 1098, 21, 22, - 617, 25, 24, 21, 26, 1106, 28, 1108, 1224, 18, - 1111, 628, 32, 33, 1115, 929, 1117, 1118, 25, 1120, - 21, 510, 511, 45, 206, 1126, 48, 49, 111, 112, - 364, 1050, 25, 11, 1053, 52, 53, 54, 24, 1140, - 24, 24, 956, 23, 25, 27, 20, 1066, 19, 19, - 1069, 20, 27, 5, 19, 23, 1075, 24, 21, 1078, - 1079, 1162, 1163, 1164, 1165, 682, 25, 22, 557, 1170, - 24, 405, 25, 20, 20, 25, 73, 25, 27, 696, - 18, 21, 128, 27, 10, 11, 12, 21, 25, 1190, - 22, 24, 426, 427, 25, 25, 1190, 39, 56, 40, - 29, 25, 1121, 91, 150, 186, 152, 1126, 25, 1128, - 1129, 25, 601, 18, 1215, 930, 22, 932, 933, 934, - 24, 1140, 73, 74, 75, 76, 25, 91, 140, 80, - 81, 82, 83, 84, 85, 86, 20, 1051, 25, 18, - 25, 153, 154, 155, 156, 157, 158, 1166, 160, 161, - 196, 21, 91, 18, 189, 91, 91, 40, 204, 27, - 20, 18, 208, 91, 23, 211, 21, 1186, 1187, 351, - 24, 1190, 18, 219, 1193, 91, 191, 359, 22, 361, - 22, 21, 671, 21, 673, 22, 20, 20, 91, 25, - 25, 193, 40, 682, 240, 27, 27, 814, 25, 18, - 689, 27, 819, 692, 693, 20, 823, 20, 25, 86, - 0, 0, 921, 311, 1215, 549, 1130, 1183, 1111, 10, - 11, 12, 1011, 1083, 681, 1020, 152, 1162, 871, 1048, - 820, 787, 849, 458, 574, 1190, 673, 671, 843, 692, - 126, 1056, 296, 1058, 12, 291, 347, 239, 1146, 501, - 696, 433, 405, 870, 871, 849, 705, 848, 1008, 876, - 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, - 196, -1, 318, 319, 320, 321, -1, -1, 204, -1, - -1, -1, 208, -1, -1, 211, -1, -1, -1, -1, - -1, -1, 338, 219, -1, -1, -1, -1, 224, -1, - 226, 23, -1, 349, 10, 11, 12, -1, 1222, 926, - -1, -1, -1, 239, 240, -1, -1, -1, -1, 501, - 366, 10, 11, 12, -1, 814, -1, 816, -1, -1, - 819, -1, -1, -1, 823, -1, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, - -1, -1, -1, -1, 843, -1, -1, -1, -1, 405, - -1, 152, 851, -1, -1, -1, -1, 413, 550, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, -1, 568, 569, -1, -1, + 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 10, 11, 12, 196, -1, -1, -1, -1, - -1, -1, -1, 204, -1, -1, -1, 208, -1, 431, - 211, -1, -1, -1, -1, -1, -1, -1, 219, -1, - -1, -1, -1, 224, -1, 226, -1, 926, 450, -1, - -1, -1, -1, -1, 1061, -1, 152, -1, 239, 240, - -1, -1, 10, 11, 12, -1, -1, -1, -1, 24, - 642, 643, 27, 152, 29, 30, 31, 32, 33, 34, - -1, -1, -1, 655, 486, -1, -1, -1, -1, 405, - -1, -1, 47, 48, 49, 497, -1, 976, 977, -1, - 196, -1, -1, -1, 540, -1, -1, -1, 204, -1, - 426, 427, 208, 549, -1, 211, 71, 196, -1, -1, - -1, -1, 694, 219, -1, 204, -1, -1, 224, 208, - 226, -1, 211, -1, -1, -1, -1, 539, -1, 541, - 219, 543, 544, 239, 240, 224, -1, 226, -1, -1, - -1, -1, -1, -1, 152, -1, -1, -1, -1, 114, - 239, 240, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1053, -1, -1, -1, -1, 615, - -1, -1, 1061, -1, -1, -1, -1, 1066, -1, 591, - -1, -1, 1071, -1, -1, -1, -1, 599, 196, -1, - 636, -1, 638, -1, 152, -1, 204, -1, 644, -1, - 208, -1, 648, 211, 1093, 1094, -1, -1, -1, -1, - -1, 219, -1, -1, 405, -1, 224, -1, 226, -1, - 185, 186, 187, 549, 189, -1, -1, -1, 1117, 1118, - -1, 239, 240, -1, 646, 426, 427, 1126, 196, -1, - -1, -1, -1, -1, -1, -1, 204, -1, -1, -1, - 208, 1140, -1, 211, -1, -1, -1, -1, 704, -1, - -1, 219, -1, -1, -1, -1, 224, -1, 226, 715, - -1, -1, -1, -1, 1163, 1164, -1, -1, -1, -1, - -1, 239, 240, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 705, -1, -1, -1, -1, -1, 405, - -1, 1190, -1, -1, 716, 717, 718, 719, 720, 721, - 722, 723, -1, -1, -1, -1, 405, -1, -1, -1, - 426, 427, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1, 426, 427, -1, - -1, 6, 7, 8, -1, -1, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, -1, -1, 549, 24, - 25, -1, -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, 805, -1, -1, -1, 405, 18, -1, - -1, -1, -1, 815, 24, -1, 71, -1, -1, 29, - 30, 31, 32, 33, 34, -1, -1, -1, 426, 427, - -1, -1, -1, -1, -1, -1, 872, 47, 48, 49, - 95, 96, 97, 98, 99, 100, 101, -1, -1, -1, - -1, -1, 18, 549, 856, 110, -1, 405, 24, 114, - -1, 71, -1, 29, 30, 31, 32, 33, 34, -1, - 549, -1, -1, -1, -1, -1, -1, -1, 426, 427, - -1, 47, 48, 49, -1, 887, 888, 889, 890, 891, - 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, - 902, 903, -1, 905, 114, 71, -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, -1, -1, -1, -1, -1, -1, -1, -1, - 0, 1, -1, -1, 960, -1, -1, -1, -1, -1, - 185, 186, 187, -1, 189, 190, 191, -1, 18, -1, - -1, -1, -1, -1, 24, -1, -1, -1, 114, -1, - -1, 549, -1, -1, 34, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 44, -1, 46, -1, -1, 971, - 1006, -1, -1, -1, -1, 185, 186, 187, -1, 189, - -1, -1, -1, -1, -1, -1, -1, -1, 68, 69, - 70, -1, 72, -1, -1, -1, -1, 77, 78, 79, - -1, 549, -1, -1, -1, -1, 1008, -1, -1, -1, - -1, -1, 92, 93, 94, -1, -1, -1, -1, 185, - 186, 187, -1, 189, -1, -1, -1, -1, -1, -1, - -1, 111, 112, 113, 1070, 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, 0, 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, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, -1, -1, -1, -1, -1, 24, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 34, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 44, -1, 46, + 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, -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, -1, -1, -1, -1, -1, -1, - -1, 68, 69, 70, -1, 72, -1, 1189, -1, -1, - 77, 78, 79, -1, -1, -1, -1, -1, -1, -1, - -1, 1203, -1, -1, -1, 92, 93, 94, -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, 1224, -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, -1, -1, 68, - 69, 70, 71, 72, -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, -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, -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, -1, -1, -1, 68, 69, 70, 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, 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, + 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, -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, @@ -2262,127 +2314,119 @@ static const short yycheck[] = { 0, -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, + 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, -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, -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, + 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, -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, - -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, 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, 121, 122, 123, 124, -1, 126, -1, -1, - -1, -1, 131, 132, -1, -1, 135, 136, -1, 138, - 139, 140, 141, 96, 97, 98, 99, 100, 101, -1, - -1, -1, -1, 1, 153, 154, -1, 110, 6, 7, - 8, 114, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, -1, -1, -1, -1, 24, -1, -1, 178, - -1, 29, 30, 31, 32, 33, 34, -1, -1, 188, - -1, -1, -1, -1, 42, 43, -1, -1, 1, 47, - 48, 49, -1, 6, 7, 8, -1, 10, 11, 12, + -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, 13, 14, 15, 16, 17, 18, 19, -1, -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, -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, -1, 19, 20, -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, 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, + -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, -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, + 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, 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, -1, -1, -1, -1, -1, -1, - -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, + 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, -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, -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, - 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, + -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, + 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, 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, 42, 43, @@ -2394,261 +2438,261 @@ static const short yycheck[] = { 0, -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, + 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, -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, -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, 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, + 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, 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, + -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, 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, 19, - -1, -1, -1, -1, 24, -1, -1, -1, -1, 29, - 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, - -1, 96, 97, 98, 99, 100, 101, 47, 48, 49, - -1, -1, -1, -1, -1, 110, 6, 7, 8, 114, + -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, 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, + 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, 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, 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, -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, 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, -1, -1, -1, -1, -1, -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, 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, 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, - 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, -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, 20, -1, 187, 188, 24, -1, 26, 192, 28, + -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, 19, -1, 47, 48, - 49, 24, -1, 26, -1, 28, 29, 30, 31, 32, - 33, 34, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 71, 19, 47, 48, 49, -1, 24, -1, - -1, -1, -1, 29, 30, 31, 32, 33, 34, -1, - -1, -1, -1, -1, 19, -1, -1, -1, 71, 24, - -1, 47, 48, 49, 29, 30, 31, 32, 33, 34, - -1, 24, 25, -1, -1, 114, 29, 30, 31, 32, - 33, 34, 47, 48, 49, 71, -1, -1, -1, -1, - -1, -1, -1, -1, 47, 48, 49, -1, -1, -1, - -1, 114, 19, -1, -1, -1, 71, 24, -1, -1, - -1, -1, 29, 30, 31, 32, 33, 34, 71, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 114, -1, - 47, 48, 49, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 185, 186, 187, 114, - 189, 190, 191, -1, 71, -1, -1, -1, -1, -1, - -1, 114, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 185, 186, 187, -1, 189, 190, 191, -1, - -1, -1, -1, -1, -1, -1, 24, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 34, 114, -1, 185, - 186, 187, -1, 189, -1, -1, 44, -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, 185, 186, 187, -1, 189, -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, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -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, -1, -1, -1, -1, -1, -1, 185, 186, 187, - 188, -1, 190, 191, 192, 24, -1, -1, 27, -1, - 29, 30, 31, 32, 33, 34, 24, 25, -1, -1, - -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, -1, 24, - -1, -1, 71, -1, 29, 30, 31, 32, 33, 34, - 47, 48, 49, 71, -1, -1, -1, -1, -1, -1, - -1, -1, 47, 48, 49, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, - -1, -1, -1, 24, -1, 114, 71, -1, 29, 30, - 31, 32, 33, 34, -1, 24, 114, -1, -1, -1, - 29, 30, 31, 32, 33, 34, 47, 48, 49, -1, - -1, -1, -1, -1, -1, -1, 24, 114, 47, 48, - 49, 29, 30, 31, 32, 33, 34, 24, -1, 114, - 71, -1, 29, 30, 31, 32, 33, 34, -1, 47, - 48, 49, 71, -1, -1, -1, -1, -1, -1, -1, - 47, 48, 49, -1, -1, -1, 185, 186, 187, -1, - 189, -1, -1, 71, -1, -1, -1, 185, 186, 187, - -1, 189, -1, 114, 71, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 114, -1, -1, 185, 186, - 187, -1, 189, -1, -1, -1, -1, -1, -1, -1, - 185, 186, 187, -1, 189, -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, -1, -1, -1, -1, -1, -1, -1, -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, -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, 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, -1, -1, -1, -1, -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, -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, 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, -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, -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, + 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, -1, -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, -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, 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, 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, -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, -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, + 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, -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, -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, -1, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, -1, 126, 127, 128, 129, 130, 131, 132, + 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, 44, -1, -1, -1, - -1, -1, -1, -1, 187, 188, -1, -1, -1, 192, + 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, -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, -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 + -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 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ @@ -3249,7 +3293,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].count, idDecl_getTyp (yyval.ntyp)); ; +{ yyval.ntyp = yyvsp[0].ntyp; qtype_adjustPointers (yyvsp[-1].pointers, idDecl_getTyp (yyval.ntyp)); ; break;} case 21: { yyval.ntyp = idDecl_create (yyvsp[0].cname, qtype_unknown ()); ; @@ -4322,7 +4366,7 @@ case 359: { yyval.typequal = qual_createVolatile (); ; break;} case 360: -{ yyval.typequal = yyvsp[-1].typequal; ; +{ yyval.typequal = qual_createRestrict (); ; break;} case 361: { yyval.typequal = yyvsp[-1].typequal; ; @@ -4348,240 +4392,245 @@ case 367: case 368: { yyval.typequal = yyvsp[-1].typequal; ; break;} -case 375: -{ yyval.ctyp = ctype_makeAnytype (); ; +case 369: +{ yyval.typequal = yyvsp[-1].typequal; ; break;} case 376: -{ yyval.ctyp = ctype_anyintegral; ; +{ yyval.ctyp = ctype_makeAnytype (); ; break;} case 377: -{ yyval.ctyp = ctype_unsignedintegral; ; +{ yyval.ctyp = ctype_anyintegral; ; break;} case 378: +{ yyval.ctyp = ctype_unsignedintegral; ; + break;} +case 379: { yyval.ctyp = ctype_signedintegral; ; break;} -case 382: +case 383: { yyval.ctyp = ctype_fromQual (yyvsp[-1].typequal); ; break;} -case 383: +case 384: { yyval.qtyp = qtype_resolve (yyvsp[-1].qtyp); ; break;} -case 384: +case 385: { yyval.qtyp = yyvsp[0].qtyp; ; break;} -case 385: +case 386: { yyval.qtyp = qtype_mergeAlt (yyvsp[-3].qtyp, yyvsp[-1].qtyp); ; break;} -case 387: -{ yyval.qtyp = qtype_mergeAlt (yyvsp[-2].qtyp, yyvsp[0].qtyp); ; - break;} case 388: -{ yyval.qtyp = qtype_addQual (yyvsp[0].qtyp, yyvsp[-1].typequal); ; +{ yyval.qtyp = qtype_mergeAlt (yyvsp[-2].qtyp, yyvsp[0].qtyp); ; break;} case 389: { yyval.qtyp = qtype_addQual (yyvsp[0].qtyp, yyvsp[-1].typequal); ; break;} case 390: -{ yyval.qtyp = qtype_combine (yyvsp[0].qtyp, yyvsp[-1].ctyp); ; +{ yyval.qtyp = qtype_addQual (yyvsp[0].qtyp, yyvsp[-1].typequal); ; break;} case 391: -{ yyval.qtyp = qtype_unknown (); ; +{ yyval.qtyp = qtype_combine (yyvsp[0].qtyp, yyvsp[-1].ctyp); ; break;} case 392: -{ yyval.qtyp = yyvsp[0].qtyp; ; +{ yyval.qtyp = qtype_unknown (); ; break;} case 393: -{ yyval.conL = constraintList_undefined; ; +{ yyval.qtyp = yyvsp[0].qtyp; ; break;} case 394: -{ sRef_setGlobalScopeSafe (); ; +{ yyval.conL = constraintList_undefined; ; break;} case 395: -{ sRef_clearGlobalScopeSafe (); ; +{ sRef_setGlobalScopeSafe (); ; break;} case 396: -{ ctype ct; ct = declareStruct (yyvsp[-9].cname, yyvsp[-4].flist); /* setGlobalStructInfo(ct, $12);*/ yyval.ctyp = ct; ; +{ sRef_clearGlobalScopeSafe (); ; break;} case 397: -{ sRef_setGlobalScopeSafe (); ; +{ ctype ct; ct = declareStruct (yyvsp[-9].cname, yyvsp[-4].flist); /* setGlobalStructInfo(ct, $12);*/ yyval.ctyp = ct; ; break;} case 398: -{ sRef_clearGlobalScopeSafe (); ; +{ sRef_setGlobalScopeSafe (); ; break;} case 399: -{ yyval.ctyp = declareUnion (yyvsp[-8].cname, yyvsp[-3].flist); ; +{ sRef_clearGlobalScopeSafe (); ; break;} case 400: -{ yyval.ctyp = declareStruct (yyvsp[-3].cname, uentryList_new ()); ; +{ yyval.ctyp = declareUnion (yyvsp[-8].cname, yyvsp[-3].flist); ; break;} case 401: -{ yyval.ctyp = declareUnion (yyvsp[-3].cname, uentryList_new ()); ; +{ yyval.ctyp = declareStruct (yyvsp[-3].cname, uentryList_new ()); ; break;} case 402: -{ sRef_setGlobalScopeSafe (); ; +{ yyval.ctyp = declareUnion (yyvsp[-3].cname, uentryList_new ()); ; break;} case 403: -{ sRef_clearGlobalScopeSafe (); ; +{ sRef_setGlobalScopeSafe (); ; break;} case 404: -{ yyval.ctyp = declareUnnamedStruct (yyvsp[-3].flist); ; +{ sRef_clearGlobalScopeSafe (); ; break;} case 405: -{ sRef_setGlobalScopeSafe (); ; +{ yyval.ctyp = declareUnnamedStruct (yyvsp[-3].flist); ; break;} case 406: -{ sRef_clearGlobalScopeSafe (); ; +{ sRef_setGlobalScopeSafe (); ; break;} case 407: -{ yyval.ctyp = declareUnnamedUnion (yyvsp[-3].flist); ; +{ sRef_clearGlobalScopeSafe (); ; break;} case 408: -{ yyval.ctyp = ctype_createUnnamedStruct (uentryList_new ()); ; +{ yyval.ctyp = declareUnnamedUnion (yyvsp[-3].flist); ; break;} case 409: -{ yyval.ctyp = ctype_createUnnamedUnion (uentryList_new ()); ; +{ yyval.ctyp = ctype_createUnnamedStruct (uentryList_new ()); ; break;} case 410: -{ yyval.ctyp = handleStruct (yyvsp[-1].cname); ; +{ yyval.ctyp = ctype_createUnnamedUnion (uentryList_new ()); ; break;} case 411: -{ yyval.ctyp = handleUnion (yyvsp[-1].cname); ; +{ yyval.ctyp = handleStruct (yyvsp[-1].cname); ; break;} case 412: +{ yyval.ctyp = handleUnion (yyvsp[-1].cname); ; + break;} +case 413: { g_expectingTypeName = FALSE; ; break;} -case 414: +case 415: { yyval.flist = uentryList_undefined; /* bogus! */ ; break;} -case 415: +case 416: { yyval.flist = uentryList_mergeFields (yyvsp[-1].flist, yyvsp[0].flist); ; break;} -case 416: +case 417: { yyval.flist = fixUentryList (yyvsp[-2].ntyplist, yyvsp[-4].qtyp); ; break;} -case 417: +case 418: { yyval.flist = fixUnnamedDecl (yyvsp[-2].qtyp); ; break;} -case 418: +case 419: { yyval.ntyplist = idDeclList_singleton (yyvsp[-1].ntyp); ; break;} -case 419: +case 420: { yyval.ntyplist = idDeclList_add (yyvsp[-3].ntyplist, yyvsp[-1].ntyp); ; break;} -case 420: +case 421: { yyval.ntyp = yyvsp[0].ntyp; ; break;} -case 421: +case 422: { yyval.ntyp = idDecl_undefined; ; break;} -case 422: +case 423: { yyval.ntyp = yyvsp[-3].ntyp; ; break;} -case 423: +case 424: { yyval.ctyp = declareUnnamedEnum (yyvsp[-2].enumnamelist); ; break;} -case 424: +case 425: { context_pushLoc (); ; break;} -case 425: +case 426: { context_popLoc (); yyval.ctyp = declareEnum (yyvsp[-5].cname, yyvsp[-2].enumnamelist); ; break;} -case 426: +case 427: { yyval.ctyp = handleEnum (yyvsp[-1].cname); ; break;} -case 427: +case 428: { yyval.enumnamelist = enumNameList_single (yyvsp[0].cname); ; break;} -case 428: +case 429: { yyval.enumnamelist = enumNameList_push (yyvsp[-2].enumnamelist, yyvsp[0].cname); ; break;} -case 430: +case 431: { uentry ue = uentry_makeEnumConstant (yyvsp[0].cname, ctype_unknown); usymtab_supGlobalEntry (ue); yyval.cname = yyvsp[0].cname; ; break;} -case 431: +case 432: { uentry ue = uentry_makeEnumInitializedConstant (yyvsp[-3].cname, ctype_unknown, yyvsp[0].expr); usymtab_supGlobalEntry (ue); yyval.cname = yyvsp[-3].cname; ; break;} -case 433: +case 434: { yyval.ntyp = idDecl_create (cstring_undefined, qtype_create (yyvsp[0].ctyp)); ; break;} -case 434: +case 435: { qtype qt = qtype_unknown (); - - qtype_adjustPointers (yyvsp[-1].count, qt); + qtype_adjustPointers (yyvsp[-1].pointers, qt); yyval.ntyp = idDecl_create (cstring_copy (LastIdentifier ()), qt); ; break;} -case 435: -{ yyval.ntyp = yyvsp[0].ntyp; qtype_adjustPointers (yyvsp[-1].count, idDecl_getTyp (yyval.ntyp)); ; - break;} -case 437: -{ yyval.ntyp = yyvsp[0].ntyp; qtype_adjustPointers (yyvsp[-1].count, idDecl_getTyp (yyval.ntyp)); ; +case 436: +{ yyval.ntyp = yyvsp[0].ntyp; qtype_adjustPointers (yyvsp[-1].pointers, idDecl_getTyp (yyval.ntyp)); ; break;} case 438: -{ yyval.entrylist = handleParamTypeList (yyvsp[0].entrylist); ; +{ yyval.ntyp = yyvsp[0].ntyp; qtype_adjustPointers (yyvsp[-1].pointers, idDecl_getTyp (yyval.ntyp)); ; break;} case 439: -{ yyval.entrylist = handleParamIdList (yyvsp[0].entrylist); ; +{ yyval.entrylist = handleParamTypeList (yyvsp[0].entrylist); ; break;} case 440: -{ /* ignored for now */; ; +{ 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 (); ; break;} case 444: -{ yyval.count = 1; ; +{ yyval.tquallist = qualList_single (yyvsp[0].typequal); ; break;} case 445: -{ yyval.count = 1; ; +{ yyval.tquallist = qualList_add (yyvsp[-1].tquallist, yyvsp[0].typequal); ; break;} case 446: -{ yyval.count = 1 + yyvsp[0].count; ; +{ yyval.pointers = pointers_create (yyvsp[0].tok); ; break;} case 447: -{ yyval.count = 1 + yyvsp[0].count; ; +{ yyval.pointers = pointers_createMods (yyvsp[-1].tok, yyvsp[0].tquallist); ; + 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 450: +case 452: { yyval.entrylist = uentryList_single (uentry_makeVariableLoc (yyvsp[0].cname, ctype_int)); ; break;} -case 451: +case 453: { yyval.entrylist = uentryList_add (yyvsp[-2].entrylist, uentry_makeVariableLoc (yyvsp[0].cname, ctype_int)); ; break;} -case 452: +case 454: { yyval.entrylist = uentryList_single (uentry_makeElipsisMarker ()); ; break;} -case 454: +case 456: { yyval.entrylist = uentryList_add (yyvsp[-2].entrylist, uentry_makeElipsisMarker ()); ; break;} -case 455: +case 457: { storeLoc (); ; break;} -case 456: +case 458: { yyval.entrylist = uentryList_single (yyvsp[0].oentry); ; break;} -case 457: +case 459: { storeLoc (); ; break;} -case 458: +case 460: { yyval.entrylist = uentryList_add (yyvsp[-3].entrylist, yyvsp[0].oentry); ; break;} -case 459: +case 461: { if (isFlipOldStyle ()) { @@ -4594,7 +4643,7 @@ case 459: yyval.oentry = makeCurrentParam (idDecl_fixParamBase (yyvsp[-1].ntyp, yyvsp[-2].qtyp)); ; break;} -case 460: +case 462: { idDecl tparam = idDecl_create (yyvsp[0].cname, qtype_unknown ()); @@ -4609,182 +4658,176 @@ case 460: idDecl_free (tparam); ; break;} -case 462: +case 464: { yyval.qtyp = qtype_newBase (yyvsp[-1].qtyp, yyvsp[0].ctyp); ; break;} -case 463: -{ yyval.ctyp = ctype_adjustPointers (yyvsp[0].count, ctype_unknown); ; - break;} case 465: -{ yyval.ctyp = ctype_adjustPointers (yyvsp[-1].count, yyvsp[0].ctyp); ; +{ yyval.ctyp = ctype_adjustPointers (yyvsp[0].pointers, ctype_unknown); ; break;} -case 466: -{ yyval.ctyp = ctype_unknown; ; +case 467: +{ yyval.ctyp = ctype_adjustPointers (yyvsp[-1].pointers, yyvsp[0].ctyp); ; break;} case 468: +{ yyval.ctyp = ctype_unknown; ; + break;} +case 470: { yyval.ctyp = ctype_expectFunction (yyvsp[-1].ctyp); ; break;} -case 469: +case 471: { yyval.ctyp = ctype_makeArray (ctype_unknown); ; break;} -case 470: +case 472: { yyval.ctyp = ctype_makeFixedArray (ctype_unknown, exprNode_getLongValue (yyvsp[-1].expr)); ; break;} -case 471: +case 473: { yyval.ctyp = ctype_makeInnerArray (yyvsp[-2].ctyp); ; break;} -case 472: +case 474: { yyval.ctyp = ctype_makeInnerFixedArray (yyvsp[-3].ctyp, exprNode_getLongValue (yyvsp[-1].expr)); ; break;} -case 473: +case 475: { yyval.ctyp = ctype_makeFunction (ctype_unknown, uentryList_makeMissingParams ()); ; break;} -case 474: +case 476: { yyval.ctyp = ctype_makeParamsFunction (ctype_unknown, yyvsp[-1].entrylist); ; break;} -case 475: +case 477: { yyval.ctyp = ctype_makeFunction (yyvsp[-3].ctyp, uentryList_makeMissingParams ()); ; break;} -case 476: +case 478: { yyval.ctyp = ctype_makeParamsFunction (yyvsp[-4].ctyp, yyvsp[-1].entrylist); ; break;} -case 486: +case 488: { yyval.expr = yyvsp[0].expr; ; break;} -case 489: +case 491: { yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 490: +case 492: { yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 491: +case 493: { yyval.expr = exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr); ; break;} -case 492: +case 494: { yyval.expr = exprNode_doWhile (yyvsp[-4].expr, yyvsp[-1].expr); ; break;} -case 493: +case 495: { yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 494: +case 496: { context_setProtectVars (); ; break;} -case 495: +case 497: { context_sizeofReleaseVars (); ; break;} -case 496: +case 498: { yyval.expr = exprNode_forPred (yyvsp[-7].expr, yyvsp[-5].expr, yyvsp[-2].expr); context_enterForClause (yyvsp[-5].expr); ; break;} -case 497: +case 499: { setProcessingIterVars (yyvsp[-2].entry); ; break;} -case 498: +case 500: { yyval.expr = exprNode_iterStart (yyvsp[-5].entry, yyvsp[-1].exprlist); ; break;} -case 499: +case 501: { yyval.expr = exprNode_createId (yyvsp[0].entry); ; break;} -case 503: +case 505: { yyval.expr = yyvsp[-1].expr; DPRINTF (("def stmt: %s", exprNode_unparse (yyval.expr))); ; break;} -case 511: +case 513: { yyval.expr = yyvsp[-1].expr; ; break;} -case 512: +case 514: { yyval.expr = exprNode_makeError (); ; break;} -case 513: +case 515: { exprNode_checkIfPred (yyvsp[0].expr); ; break;} -case 514: +case 516: { /* don't: context_exitTrueClause ($1, $2); */ yyval.expr = exprNode_if (yyvsp[-2].expr, yyvsp[0].expr); ; break;} -case 515: +case 517: { yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} -case 516: +case 518: { yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} -case 527: -{ yyval.expr = exprNode_addParens (yyvsp[-2].tok, yyvsp[-1].expr); ; - break;} case 529: -{ yyval.expr = exprNode_makeError (); ; - break;} -case 530: -{ yyval.expr = exprNode_labelMarker (yyvsp[-1].cname); ; +{ yyval.expr = exprNode_addParens (yyvsp[-2].tok, yyvsp[-1].expr); ; break;} case 531: -{ yyval.expr = exprNode_notReached (yyvsp[0].expr); ; +{ yyval.expr = exprNode_makeError (); ; break;} case 532: -{ ; ; +{ yyval.expr = exprNode_labelMarker (yyvsp[-1].cname); ; break;} case 533: -{ ; ; +{ yyval.expr = exprNode_notReached (yyvsp[0].expr); ; break;} case 534: -{ context_enterCaseClause (yyvsp[0].expr); ; +{ ; ; break;} case 535: -{ yyval.expr = exprNode_caseMarker (yyvsp[-2].expr, FALSE); ; +{ ; ; break;} case 536: { context_enterCaseClause (yyvsp[0].expr); ; break;} case 537: -{ yyval.expr = exprNode_caseMarker (yyvsp[-2].expr, TRUE); ; +{ yyval.expr = exprNode_caseMarker (yyvsp[-2].expr, FALSE); ; break;} case 538: -{ context_enterCaseClause (exprNode_undefined); ; +{ context_enterCaseClause (yyvsp[0].expr); ; break;} case 539: -{ yyval.expr = exprNode_defaultMarker (yyvsp[-2].tok, FALSE); ; +{ yyval.expr = exprNode_caseMarker (yyvsp[-2].expr, TRUE); ; break;} case 540: { context_enterCaseClause (exprNode_undefined); ; break;} case 541: -{ yyval.expr = exprNode_defaultMarker (yyvsp[-2].tok, TRUE); ; +{ yyval.expr = exprNode_defaultMarker (yyvsp[-2].tok, FALSE); ; break;} case 542: -{ yyval.expr = yyvsp[-1].expr; ; +{ context_enterCaseClause (exprNode_undefined); ; break;} case 543: -{ yyval.expr = yyvsp[0].expr; context_exitInner (yyvsp[0].expr); ; +{ yyval.expr = exprNode_defaultMarker (yyvsp[-2].tok, TRUE); ; break;} case 544: { yyval.expr = yyvsp[-1].expr; ; break;} case 545: -{ context_enterInnerContext (); ; +{ yyval.expr = yyvsp[0].expr; context_exitInner (yyvsp[0].expr); ; break;} case 546: -{ context_exitInnerPlain (); ; +{ yyval.expr = yyvsp[-1].expr; ; break;} case 547: -{ context_enterStructInnerContext (); ; +{ context_enterInnerContext (); ; break;} case 548: -{ context_exitStructInnerContext (); ; +{ context_exitInnerPlain (); ; break;} case 549: -{ context_exitInnerSafe (); ; +{ context_enterStructInnerContext (); ; break;} case 550: -{ yyval.expr = exprNode_createTok (yyvsp[0].tok); ; +{ context_exitStructInnerContext (); ; break;} case 551: -{ yyval.expr = exprNode_notReached (exprNode_createTok (yyvsp[0].tok)); ; +{ context_exitInnerSafe (); ; break;} case 552: -{ yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ; +{ yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} case 553: -{ yyval.expr = exprNode_notReached (exprNode_updateLocation (yyvsp[-2].expr, lltok_getLoc (yyvsp[0].tok))); ; +{ yyval.expr = exprNode_notReached (exprNode_createTok (yyvsp[0].tok)); ; break;} case 554: { yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ; @@ -4793,33 +4836,33 @@ case 555: { yyval.expr = exprNode_notReached (exprNode_updateLocation (yyvsp[-2].expr, lltok_getLoc (yyvsp[0].tok))); ; break;} case 556: -{ yyval.expr = exprNode_updateLocation (exprNode_concat (yyvsp[-2].expr, yyvsp[-1].expr), lltok_getLoc (yyvsp[0].tok)); ; +{ yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ; break;} case 557: +{ yyval.expr = exprNode_notReached (exprNode_updateLocation (yyvsp[-2].expr, lltok_getLoc (yyvsp[0].tok))); ; + break;} +case 558: +{ yyval.expr = exprNode_updateLocation (exprNode_concat (yyvsp[-2].expr, yyvsp[-1].expr), lltok_getLoc (yyvsp[0].tok)); ; + break;} +case 559: { yyval.expr = exprNode_notReached (exprNode_updateLocation (exprNode_concat (yyvsp[-3].expr, yyvsp[-2].expr), lltok_getLoc (yyvsp[-1].tok))); ; break;} -case 558: +case 560: { yyval.expr = exprNode_makeBlock (yyvsp[0].expr); ; break;} -case 559: +case 561: { yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} -case 560: +case 562: { yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ; break;} -case 561: +case 563: { yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ; break;} -case 562: -{ yyval.expr = exprNode_updateLocation (exprNode_concat (yyvsp[-2].expr, yyvsp[-1].expr), lltok_getLoc (yyvsp[0].tok)); ; - break;} case 564: -{ yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ; - break;} -case 565: -{ yyval.expr = yyvsp[0].expr; ; +{ yyval.expr = exprNode_updateLocation (exprNode_concat (yyvsp[-2].expr, yyvsp[-1].expr), lltok_getLoc (yyvsp[0].tok)); ; break;} case 566: { yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ; @@ -4828,25 +4871,25 @@ case 567: { yyval.expr = yyvsp[0].expr; ; break;} case 568: -{ yyval.expr = exprNode_concat (yyvsp[-2].expr, yyvsp[0].expr); ; +{ yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ; break;} case 569: { yyval.expr = yyvsp[0].expr; ; break;} case 570: -{ yyval.expr = yyvsp[-2].expr; ; +{ yyval.expr = exprNode_concat (yyvsp[-2].expr, yyvsp[0].expr); ; break;} case 571: { yyval.expr = yyvsp[0].expr; ; break;} case 572: -{ yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ; +{ yyval.expr = yyvsp[-2].expr; ; break;} case 573: -{ yyval.expr = exprNode_createTok (yyvsp[0].tok); ; +{ yyval.expr = yyvsp[0].expr; ; break;} case 574: -{ yyval.expr = exprNode_statement (yyvsp[-1].expr, yyvsp[0].tok); ; +{ yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ; break;} case 575: { yyval.expr = exprNode_createTok (yyvsp[0].tok); ; @@ -4855,70 +4898,76 @@ case 576: { yyval.expr = exprNode_statement (yyvsp[-1].expr, yyvsp[0].tok); ; break;} case 577: -{ yyval.expr = exprNode_checkExpr (yyvsp[0].expr); ; +{ yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} case 578: +{ yyval.expr = exprNode_statement (yyvsp[-1].expr, yyvsp[0].tok); ; + break;} +case 579: +{ yyval.expr = exprNode_checkExpr (yyvsp[0].expr); ; + break;} +case 580: { exprNode_produceGuards (yyvsp[-1].expr); context_enterTrueClause (yyvsp[-1].expr); exprNode_checkIfPred (yyvsp[-1].expr); yyval.expr = yyvsp[-1].expr; ; break;} -case 579: +case 581: { context_exitTrueClause (yyvsp[-1].expr, yyvsp[0].expr); yyval.expr = exprNode_if (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 580: +case 582: { context_enterFalseClause (yyvsp[-2].expr); ; break;} -case 581: +case 583: { 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 582: +case 584: { context_enterSwitch (yyvsp[0].expr); ; break;} -case 583: +case 585: { yyval.expr = exprNode_switch (yyvsp[-3].expr, yyvsp[0].expr); ; break;} -case 584: +case 586: { yyval.expr = exprNode_whilePred (yyvsp[-1].expr); context_enterWhileClause (yyvsp[-1].expr); ; break;} -case 585: +case 587: { yyval.expr = exprNode_whilePred(yyvsp[-1].expr); ; break;} -case 586: +case 588: { context_enterIterClause (); ; break;} -case 587: +case 589: { setProcessingIterVars (yyvsp[-3].entry); ; break;} -case 588: +case 590: { yyval.expr = exprNode_iter (yyvsp[-9].entry, yyvsp[-4].exprlist, yyvsp[-2].expr, yyvsp[-1].entry); ; break;} -case 589: +case 591: { yyval.exprlist = exprNodeList_singleton (yyvsp[0].expr); ; break;} -case 590: +case 592: { nextIterParam (); ; break;} -case 591: +case 593: { yyval.exprlist = exprNodeList_push (yyvsp[-3].exprlist, yyvsp[0].expr); ; break;} -case 592: +case 594: { yyval.expr = exprNode_iterExpr (yyvsp[0].expr); ; break;} -case 593: +case 595: { yyval.expr = exprNode_iterId (yyvsp[0].entry); ; break;} -case 594: +case 596: { uentry ue = coerceIterId (yyvsp[0].cname); if (uentry_isValid (ue)) @@ -4931,44 +4980,38 @@ case 594: } ; break;} -case 595: +case 597: { yyval.expr = exprNode_iterNewId (yyvsp[0].cname); ; break;} -case 597: +case 599: { yyval.expr = exprNode_combineLiterals (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 599: +case 601: { yyval.expr = exprNode_addParens (yyvsp[-2].tok, yyvsp[-1].expr); ; break;} -case 601: +case 603: { yyval.expr = exprNode_arrayFetch (yyvsp[-3].expr, yyvsp[-1].expr); ; break;} -case 602: +case 604: { yyval.expr = exprNode_functionCall (yyvsp[-2].expr, exprNodeList_new ()); ; break;} -case 603: +case 605: { yyval.expr = exprNode_functionCall (yyvsp[-3].expr, yyvsp[-1].exprlist); ; break;} -case 604: +case 606: { yyval.expr = exprNode_vaArg (yyvsp[-5].tok, yyvsp[-3].expr, yyvsp[-1].qtyp); ; break;} -case 605: +case 607: { yyval.expr = exprNode_fieldAccess (yyvsp[-4].expr, yyvsp[-2].tok, yyvsp[-1].cname); ; break;} -case 606: +case 608: { yyval.expr = exprNode_arrowAccess (yyvsp[-4].expr, yyvsp[-2].tok, yyvsp[-1].cname); ; break;} -case 607: -{ yyval.expr = exprNode_postOp (yyvsp[-1].expr, yyvsp[0].tok); ; - break;} -case 608: +case 609: { yyval.expr = exprNode_postOp (yyvsp[-1].expr, yyvsp[0].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); ; +{ yyval.expr = exprNode_postOp (yyvsp[-1].expr, yyvsp[0].tok); ; break;} case 612: { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; @@ -4989,48 +5032,51 @@ case 617: { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 618: -{ yyval.expr = yyvsp[0].expr; ; +{ yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; + break;} +case 619: +{ yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 620: -{ yyval.expr = exprNode_cast (yyvsp[-3].tok, yyvsp[0].expr, yyvsp[-2].qtyp); ; +{ yyval.expr = yyvsp[0].expr; ; break;} case 622: -{ yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; +{ yyval.expr = exprNode_cast (yyvsp[-3].tok, yyvsp[0].expr, yyvsp[-2].qtyp); ; break;} -case 623: +case 624: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 624: +case 625: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 626: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 627: +case 628: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 629: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 630: +case 631: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 632: -{ yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; - break;} -case 633: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 634: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 635: +{ yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; + break;} +case 636: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 637: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 638: +case 639: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 640: @@ -5049,19 +5095,16 @@ case 648: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 650: +{ yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; + break;} +case 652: { context_enterTrueClause (yyvsp[-1].expr); ; break;} -case 651: +case 653: { context_enterFalseClause (yyvsp[-4].expr); ; break;} -case 652: -{ yyval.expr = exprNode_cond (yyvsp[-6].expr, yyvsp[-3].expr, yyvsp[0].expr); ; - break;} case 654: -{ 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); ; +{ yyval.expr = exprNode_cond (yyvsp[-6].expr, yyvsp[-3].expr, yyvsp[0].expr); ; break;} case 656: { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; @@ -5091,90 +5134,96 @@ case 664: { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 665: -{ yyval.entry = yyvsp[0].entry; ; +{ yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 666: -{ yyval.entry = uentry_undefined; ; +{ yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 667: -{ context_enterDoWhileClause (); yyval.tok = yyvsp[0].tok; ; +{ yyval.entry = yyvsp[0].entry; ; break;} case 668: -{ yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); context_exitWhileClause (yyvsp[-1].expr, yyvsp[0].expr); ; +{ yyval.entry = uentry_undefined; ; break;} case 669: -{ yyval.expr = exprNode_statement (exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr), yyvsp[0].tok); ; +{ context_enterDoWhileClause (); yyval.tok = yyvsp[0].tok; ; break;} case 670: -{ yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); context_exitForClause (yyvsp[-1].expr, yyvsp[0].expr); ; +{ yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); context_exitWhileClause (yyvsp[-1].expr, yyvsp[0].expr); ; break;} case 671: -{ yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); context_exitWhileClause (yyvsp[-1].expr, yyvsp[0].expr); ; +{ yyval.expr = exprNode_statement (exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr), yyvsp[0].tok); ; break;} case 672: -{ yyval.expr = exprNode_statement (exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr), yyvsp[0].tok); ; +{ yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); context_exitForClause (yyvsp[-1].expr, yyvsp[0].expr); ; break;} case 673: -{ yyval.expr = exprNode_doWhile (yyvsp[-4].expr, yyvsp[-1].expr); ; +{ yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); context_exitWhileClause (yyvsp[-1].expr, yyvsp[0].expr); ; break;} case 674: -{ yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); context_exitForClause (yyvsp[-1].expr, yyvsp[0].expr); ; +{ yyval.expr = exprNode_statement (exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr), yyvsp[0].tok); ; break;} case 675: -{ yyval.expr = exprNode_goto (yyvsp[-1].cname); ; +{ yyval.expr = exprNode_doWhile (yyvsp[-4].expr, yyvsp[-1].expr); ; break;} case 676: -{ yyval.expr = exprNode_continue (yyvsp[-1].tok, BADTOK); ; +{ yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); context_exitForClause (yyvsp[-1].expr, yyvsp[0].expr); ; break;} case 677: -{ yyval.expr = exprNode_continue (yyvsp[-2].tok, QINNERCONTINUE); ; +{ yyval.expr = exprNode_goto (yyvsp[-1].cname); ; break;} case 678: -{ yyval.expr = exprNode_break (yyvsp[-1].tok, BADTOK); ; +{ yyval.expr = exprNode_continue (yyvsp[-1].tok, BADTOK); ; break;} case 679: -{ yyval.expr = exprNode_break (yyvsp[-1].tok, QSWITCHBREAK); ; +{ yyval.expr = exprNode_continue (yyvsp[-2].tok, QINNERCONTINUE); ; break;} case 680: -{ yyval.expr = exprNode_break (yyvsp[-1].tok, QLOOPBREAK); ; +{ yyval.expr = exprNode_break (yyvsp[-1].tok, BADTOK); ; break;} case 681: -{ yyval.expr = exprNode_break (yyvsp[-1].tok, QINNERBREAK); ; +{ yyval.expr = exprNode_break (yyvsp[-1].tok, QSWITCHBREAK); ; break;} case 682: -{ yyval.expr = exprNode_break (yyvsp[-1].tok, QSAFEBREAK); ; +{ yyval.expr = exprNode_break (yyvsp[-1].tok, QLOOPBREAK); ; break;} case 683: -{ yyval.expr = exprNode_nullReturn (yyvsp[-1].tok); ; +{ yyval.expr = exprNode_break (yyvsp[-1].tok, QINNERBREAK); ; break;} case 684: -{ yyval.expr = exprNode_return (yyvsp[-1].expr); ; +{ yyval.expr = exprNode_break (yyvsp[-1].tok, QSAFEBREAK); ; + break;} +case 685: +{ yyval.expr = exprNode_nullReturn (yyvsp[-1].tok); ; break;} case 686: -{ ; ; +{ yyval.expr = exprNode_return (yyvsp[-1].expr); ; break;} case 688: { ; ; break;} -case 691: +case 690: +{ ; ; + break;} +case 693: { yyval.cname = uentry_getName (yyvsp[0].entry); ; break;} -case 692: +case 694: { yyval.cname = uentry_getName (yyvsp[0].entry); ; break;} -case 693: +case 695: { yyval.cname = uentry_getName (yyvsp[0].entry); ; break;} -case 694: +case 696: { yyval.cname = yyvsp[0].cname; ; break;} -case 696: +case 698: { yyval.ctyp = ctype_unknown; ; break;} -case 697: +case 699: { yyval.ctyp = exprNode_getType (yyvsp[-1].expr); exprNode_free (yyvsp[-1].expr); ; break;} -case 698: +case 700: { yyval.ctyp = qtype_getType (yyvsp[-1].qtyp); ; break;} } diff --git a/src/cgrammar.y b/src/cgrammar.y index 039d318..4a08b45 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 QVOLATILE QINLINE QEXTENSION QEXTERN QSTATIC QAUTO QREGISTER +%token QCONST QRESTRICT 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 @@ -312,8 +312,8 @@ extern void yyerror (char *); %type designator designatorList designation -%type storageSpecifier typeQualifier typeModifier globQual -%type optGlobQuals +%type storageSpecifier typeQualifier typeModifier globQual innerMods +%type optGlobQuals innerModsList %type completeType completeTypeSpecifier optCompleteType %type completeTypeSpecifierAux altType typeExpression @@ -961,8 +961,8 @@ initializer instanceDecl : completeTypeSpecifier IsType TSEMI - { $$ = exprNode_makeError (); } - /* + { $$ = exprNode_makeError (); } + /* ** This causes r/r conflicts with function definitions. ** Instead we need to snarf one first. (gack) ** @@ -1213,6 +1213,7 @@ definedQualifier typeQualifier : QCONST IsType { $$ = qual_createConst (); } | QVOLATILE IsType { $$ = qual_createVolatile (); } + | QRESTRICT IsType { $$ = qual_createRestrict (); } | definedQualifier IsType { $$ = $1; } | stateQualifier IsType { $$ = $1; } | exitsQualifier IsType { $$ = $1; } @@ -1365,7 +1366,6 @@ optNamedDecl | pointers TYPE_NAME { qtype qt = qtype_unknown (); - qtype_adjustPointers ($1, qt); $$ = idDecl_create (cstring_copy (LastIdentifier ()), qt); } @@ -1382,18 +1382,19 @@ genericParamList | NotType paramIdList { $$ = handleParamIdList ($2); } innerMods - : QCONST { /* ignored for now */; } - | QVOLATILE { ; } + : QCONST { $$ = qual_createConst (); } + | QRESTRICT { $$ = qual_createRestrict (); } + | QVOLATILE { $$ = qual_createVolatile (); } innerModsList - : innerMods { ; } - | innerModsList innerMods { ; } + : innerMods { $$ = qualList_single ($1); } + | innerModsList innerMods { $$ = qualList_add ($1, $2); } pointers - : TMULT { $$ = 1; } - | TMULT innerModsList { $$ = 1; } - | TMULT pointers { $$ = 1 + $2; } - | TMULT innerModsList pointers { $$ = 1 + $3; } + : 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); } paramIdList : idList diff --git a/src/cpplib.c b/src/cpplib.c index 0e562d0..7534384 100644 --- a/src/cpplib.c +++ b/src/cpplib.c @@ -110,6 +110,9 @@ 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 @@ -8450,3 +8453,5 @@ void cppBuffer_forward (cppBuffer *buf, int n) llassert (buf->cur != NULL); buf->cur += n; } + +/*@=bufferoverflowhigh@*/ diff --git a/src/cscanner.l b/src/cscanner.l index b1e7d78..1a8e618 100644 --- a/src/cscanner.l +++ b/src/cscanner.l @@ -269,6 +269,7 @@ 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); } diff --git a/src/ctype.c b/src/ctype.c index d246bf7..7fc16c4 100644 --- a/src/ctype.c +++ b/src/ctype.c @@ -1998,13 +1998,14 @@ ctype_getBaseType (ctype c) } ctype -ctype_adjustPointers (int np, ctype c) +ctype_adjustPointers (pointers p, ctype c) { - + int np = pointers_depth (p); + if (ctype_isFunction (c)) { c = ctype_makeParamsFunction - (ctype_adjustPointers (np, ctype_getReturnType (c)), + (ctype_adjustPointers (p, ctype_getReturnType (c)), uentryList_copy (ctype_argsFunction (c))); } else diff --git a/src/fileloc.c b/src/fileloc.c index bce4b0c..151d7dd 100644 --- a/src/fileloc.c +++ b/src/fileloc.c @@ -702,6 +702,12 @@ 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 { @@ -738,6 +744,7 @@ fileloc_unparse (fileloc f) else { res = fname; + /*@-branchstate@*/ /* spurious warnings reporteded because of break above */ } } else if (fileloc_linenoDefined (f)) @@ -767,7 +774,8 @@ 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; } diff --git a/src/flags.c b/src/flags.c index 1931cba..9f97ef1 100644 --- a/src/flags.c +++ b/src/flags.c @@ -300,7 +300,7 @@ summarizeErrors () hadOne = TRUE; } - sprintf (buf, "%s%7d %9d", cstring_toCharsSafe (fs), nrep, nsup); + (void) snprintf (buf, 128, "%s%7d %9d", cstring_toCharsSafe (fs), nrep, nsup); sumrep += nrep; sumsup += nsup; @@ -316,7 +316,7 @@ summarizeErrors () llmsglit (" ======== ========="); - sprintf (buf, "%s%7d %9d", cstring_toCharsSafe (ts), sumrep, sumsup); + (void) snprintf (buf, 128, "%s%7d %9d", cstring_toCharsSafe (ts), sumrep, sumsup); cstring_free (ts); llmsgplain (cstring_copy (cstring_fromChars (buf))); } diff --git a/src/flags.def b/src/flags.def index f8a0808..4fde87f 100644 --- a/src/flags.def +++ b/src/flags.def @@ -3270,6 +3270,13 @@ 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", diff --git a/src/general.c b/src/general.c index e621870..5a2e090 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; - - sprintf (temp, "%i", i); + int sres = snprintf (temp, 255, "%i", i); + check (sres >= 0 && sres <= 255); outs = (char *) dmalloc (sizeof (*outs) * (1 + strlen (temp))); strcpy (outs, temp); diff --git a/src/llgrammar.c.der b/src/llgrammar.c.der index 773c237..7f761c3 100644 --- a/src/llgrammar.c.der +++ b/src/llgrammar.c.der @@ -276,6 +276,7 @@ typedef union /*@only@*/ abstBodyNode abstbody; /*@only@*/ abstractNode abstract; /*@only@*/ exposedNode exposed; + /*@only@*/ pointers pointers; /* taggedUnionNode taggedunion; */ /*@only@*/ globalList globals; /*@only@*/ constDeclarationNode constdeclaration; @@ -544,48 +545,48 @@ static const short yyrhs[] = { -1, #if YYDEBUG != 0 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 + 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 }; #endif @@ -2835,13 +2836,13 @@ case 236: break;} case 238: { llassert (lclTypeSpecNode_isDefined (yyvsp[-1].lcltypespec)); - yyvsp[-1].lcltypespec->pointers = yyvsp[0].count; yyval.lcltypespec = yyvsp[-1].lcltypespec; ; + yyvsp[-1].lcltypespec->pointers = yyvsp[0].pointers; yyval.lcltypespec = yyvsp[-1].lcltypespec; ; break;} case 239: -{ yyval.count = 1; ; +{ yyval.pointers = pointers_createLt (yyvsp[0].ltok); ; break;} case 240: -{ yyval.count = yyvsp[-1].count + 1; ; +{ yyval.pointers = pointers_extend (yyvsp[-1].pointers, pointers_createLt (yyvsp[0].ltok)); ; break;} case 241: { (void) checkAndEnterTag (TAG_FWDSTRUCT, ltoken_copy (yyvsp[0].ltok)); ; diff --git a/src/llgrammar.y b/src/llgrammar.y index 24039b0..09ce6ba 100644 --- a/src/llgrammar.y +++ b/src/llgrammar.y @@ -105,6 +105,7 @@ bool g_inTypeDef = FALSE; /*@only@*/ abstBodyNode abstbody; /*@only@*/ abstractNode abstract; /*@only@*/ exposedNode exposed; + /*@only@*/ pointers pointers; /* taggedUnionNode taggedunion; */ /*@only@*/ globalList globals; /*@only@*/ constDeclarationNode constdeclaration; @@ -318,7 +319,8 @@ bool g_inTypeDef = FALSE; %type opForm %type signature %type typeName -%type middle placeList pointers +%type middle placeList +%type pointers %type optAbstDeclarator %type lclTypeSpec lclType sortSpec %type enumeratorList postfixOps @@ -885,8 +887,8 @@ lclType $1->pointers = $2; $$ = $1; } pointers - : LLT_MULOP { $$ = 1; } - | pointers LLT_MULOP { $$ = $1 + 1; } + : LLT_MULOP { $$ = pointers_createLt ($1); } + | pointers LLT_MULOP { $$ = pointers_extend ($1, pointers_createLt ($2)); } structOrUnionSpec : LLT_STRUCT optTagId diff --git a/src/llmain.c b/src/llmain.c index b0fb00e..5d4c546 100644 --- a/src/llmain.c +++ b/src/llmain.c @@ -1124,24 +1124,24 @@ int main (int argc, char *argv[]) if (anylcl) { - 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)); + (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)); } else { - 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)); + (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)); } llgenindentmsgnoloc (cstring_fromCharsO (msg)); diff --git a/src/message.c b/src/message.c index 87a5cf5..41757a5 100644 --- a/src/message.c +++ b/src/message.c @@ -42,7 +42,7 @@ typedef enum /* char *s, anytype v */ /*@notfunction@*/ -# define GETPRINTF(s,v) (sprintf (strbuf, s, v), mstring_copy (strbuf)) +# define GETPRINTF(s,v) (snprintf (strbuf, 64, s, v), mstring_copy (strbuf)) /* ** returns control code indicated by *c, and diff --git a/src/mtgrammar.c b/src/mtgrammar.c index ad56cf6..8c80b9a 100644 --- a/src/mtgrammar.c +++ b/src/mtgrammar.c @@ -107,8 +107,9 @@ #define MT_SIGNEDINTEGRALTYPE 298 #define MT_CONST 299 #define MT_VOLATILE 300 -#define MT_STRINGLIT 301 -#define MT_IDENT 302 +#define MT_RESTRICT 301 +#define MT_STRINGLIT 302 +#define MT_IDENT 303 @@ -160,11 +161,12 @@ typedef union { mtTransferAction mttransferaction; mtLoseReferenceList mtlosereferencelist; mtLoseReference mtlosereference; - + pointers pointers; /*@only@*/ cstringList cstringlist; ctype ctyp; /*@only@*/ qtype qtyp; - int count; + qual qual; + qualList quals; } YYSTYPE; #ifndef YYDEBUG #define YYDEBUG 1 @@ -180,11 +182,11 @@ typedef union { -#define YYFINAL 135 +#define YYFINAL 136 #define YYFLAG -32768 -#define YYNTBASE 49 +#define YYNTBASE 50 -#define YYTRANSLATE(x) ((unsigned)(x) <= 302 ? yytranslate[x] : 92) +#define YYTRANSLATE(x) ((unsigned)(x) <= 303 ? yytranslate[x] : 93) static const char yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -217,7 +219,7 @@ static const char yytranslate[] = { 0, 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 + 47, 48, 49 }; #if YYDEBUG != 0 @@ -226,56 +228,56 @@ static const short yyprhs[] = { 0, 25, 27, 29, 31, 33, 35, 37, 39, 42, 43, 45, 48, 51, 54, 57, 60, 63, 64, 66, 68, 71, 73, 77, 80, 81, 83, 85, 87, 90, 92, - 95, 98, 102, 104, 106, 108, 111, 115, 118, 122, + 95, 98, 102, 104, 106, 108, 110, 113, 117, 120, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, - 144, 147, 149, 153, 156, 159, 163, 168, 171, 173, - 176, 181, 184, 186, 189, 195, 197, 199, 202, 205, - 208, 211, 213, 216, 220, 222, 225, 231, 233, 235, - 237, 240 + 144, 146, 149, 151, 155, 158, 161, 165, 170, 173, + 175, 178, 183, 186, 188, 191, 197, 199, 201, 204, + 207, 210, 213, 215, 218, 222, 224, 227, 233, 235, + 237, 239, 242 }; static const short yyrhs[] = { -1, - 50, 0, 5, 51, 4, 0, 6, 5, 51, 4, - 0, 48, 52, 0, 0, 53, 52, 0, 54, 0, - 69, 0, 72, 0, 71, 0, 74, 0, 77, 0, - 83, 0, 81, 0, 82, 0, 84, 0, 7, 56, - 0, 0, 56, 0, 12, 57, 0, 11, 57, 0, - 13, 57, 0, 14, 57, 0, 15, 57, 0, 16, - 57, 0, 0, 58, 0, 59, 0, 59, 62, 0, - 60, 0, 59, 28, 58, 0, 67, 61, 0, 0, - 59, 0, 63, 0, 66, 0, 63, 66, 0, 27, - 0, 27, 65, 0, 27, 63, 0, 27, 65, 63, - 0, 45, 0, 46, 0, 64, 0, 65, 64, 0, - 29, 62, 30, 0, 31, 32, 0, 66, 31, 32, - 0, 36, 0, 37, 0, 38, 0, 39, 0, 40, - 0, 41, 0, 42, 0, 43, 0, 44, 0, 68, - 0, 48, 0, 8, 70, 0, 48, 0, 48, 35, - 70, 0, 10, 91, 0, 9, 73, 0, 56, 18, - 91, 0, 56, 18, 91, 73, 0, 17, 75, 0, - 76, 0, 76, 75, 0, 48, 55, 18, 91, 0, - 19, 78, 0, 79, 0, 79, 78, 0, 80, 26, - 80, 18, 89, 0, 91, 0, 27, 0, 21, 87, - 0, 22, 87, 0, 20, 87, 0, 23, 85, 0, - 86, 0, 86, 85, 0, 91, 18, 90, 0, 88, - 0, 88, 87, 0, 91, 24, 91, 18, 89, 0, - 91, 0, 90, 0, 25, 0, 25, 47, 0, 48, - 0 + 51, 0, 5, 52, 4, 0, 6, 5, 52, 4, + 0, 49, 53, 0, 0, 54, 53, 0, 55, 0, + 70, 0, 73, 0, 72, 0, 75, 0, 78, 0, + 84, 0, 82, 0, 83, 0, 85, 0, 7, 57, + 0, 0, 57, 0, 12, 58, 0, 11, 58, 0, + 13, 58, 0, 14, 58, 0, 15, 58, 0, 16, + 58, 0, 0, 59, 0, 60, 0, 60, 63, 0, + 61, 0, 60, 28, 59, 0, 68, 62, 0, 0, + 60, 0, 64, 0, 67, 0, 64, 67, 0, 27, + 0, 27, 66, 0, 27, 64, 0, 27, 66, 64, + 0, 45, 0, 46, 0, 47, 0, 65, 0, 66, + 65, 0, 29, 63, 30, 0, 31, 32, 0, 67, + 31, 32, 0, 36, 0, 37, 0, 38, 0, 39, + 0, 40, 0, 41, 0, 42, 0, 43, 0, 44, + 0, 69, 0, 49, 0, 8, 71, 0, 49, 0, + 49, 35, 71, 0, 10, 92, 0, 9, 74, 0, + 57, 18, 92, 0, 57, 18, 92, 74, 0, 17, + 76, 0, 77, 0, 77, 76, 0, 49, 56, 18, + 92, 0, 19, 79, 0, 80, 0, 80, 79, 0, + 81, 26, 81, 18, 90, 0, 92, 0, 27, 0, + 21, 88, 0, 22, 88, 0, 20, 88, 0, 23, + 86, 0, 87, 0, 87, 86, 0, 92, 18, 91, + 0, 89, 0, 89, 88, 0, 92, 24, 92, 18, + 90, 0, 92, 0, 91, 0, 25, 0, 25, 48, + 0, 49, 0 }; #endif #if YYDEBUG != 0 static const short yyrline[] = { 0, - 158, 159, 162, 164, 168, 172, 173, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 189, 193, 194, - 197, 198, 199, 200, 201, 202, 209, 210, 213, 214, - 217, 218, 222, 225, 226, 230, 231, 232, 235, 236, - 237, 238, 241, 242, 245, 246, 249, 250, 251, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 273, - 276, 279, 280, 284, 287, 290, 292, 296, 299, 300, - 304, 308, 311, 312, 315, 319, 320, 323, 326, 329, - 332, 335, 336, 339, 342, 343, 346, 350, 351, 354, - 355, 358 + 160, 161, 164, 166, 170, 174, 175, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 191, 195, 196, + 199, 200, 201, 202, 203, 204, 211, 212, 215, 216, + 219, 220, 224, 227, 228, 232, 233, 234, 237, 238, + 239, 240, 243, 244, 245, 248, 249, 252, 253, 254, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 276, 279, 282, 283, 287, 290, 293, 295, 299, 302, + 303, 307, 311, 314, 315, 318, 322, 323, 326, 329, + 332, 335, 338, 339, 342, 345, 346, 349, 353, 354, + 357, 358, 361 }; #endif @@ -289,12 +291,12 @@ static const char * const yytname[] = { "$","error","$undefined.","MT_BADTOK", "MT_LOSEREFERENCE","MT_AS","MT_ERROR","MT_PLUS","MT_STAR","MT_BAR","MT_LPAREN", "MT_RPAREN","MT_LBRACKET","MT_RBRACKET","MT_LBRACE","MT_RBRACE","MT_COMMA","MT_CHAR", "MT_INT","MT_FLOAT","MT_DOUBLE","MT_VOID","MT_ANYTYPE","MT_INTEGRALTYPE","MT_UNSIGNEDINTEGRALTYPE", -"MT_SIGNEDINTEGRALTYPE","MT_CONST","MT_VOLATILE","MT_STRINGLIT","MT_IDENT","file", -"mtsDeclaration","declarationNode","declarationPieces","declarationPiece","contextDeclaration", -"optContextSelection","contextSelection","optType","typeExpression","completeType", -"completeTypeAux","optCompleteType","abstractDecl","pointers","innerMods","innerModsList", -"abstractDeclBase","typeSpecifier","typeName","valuesDeclaration","valuesList", -"defaultNode","defaultsDeclaration","defaultDeclarationList","annotationsDeclaration", +"MT_SIGNEDINTEGRALTYPE","MT_CONST","MT_VOLATILE","MT_RESTRICT","MT_STRINGLIT", +"MT_IDENT","file","mtsDeclaration","declarationNode","declarationPieces","declarationPiece", +"contextDeclaration","optContextSelection","contextSelection","optType","typeExpression", +"completeType","completeTypeAux","optCompleteType","abstractDecl","pointers", +"innerMods","innerModsList","abstractDeclBase","typeSpecifier","typeName","valuesDeclaration", +"valuesList","defaultNode","defaultsDeclaration","defaultDeclarationList","annotationsDeclaration", "annotationsDeclarationList","annotationDeclaration","mergeDeclaration","mergeClauses", "mergeClause","mergeItem","preconditionsDeclaration","postconditionsDeclaration", "transfersDeclaration","loseReferenceDeclaration","lostClauses","lostClause", @@ -303,16 +305,16 @@ static const char * const yytname[] = { "$","error","$undefined.","MT_BADTOK", #endif static const short yyr1[] = { 0, - 49, 49, 50, 50, 51, 52, 52, 53, 53, 53, - 53, 53, 53, 53, 53, 53, 53, 54, 55, 55, - 56, 56, 56, 56, 56, 56, 57, 57, 58, 58, - 59, 59, 60, 61, 61, 62, 62, 62, 63, 63, - 63, 63, 64, 64, 65, 65, 66, 66, 66, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 68, - 69, 70, 70, 71, 72, 73, 73, 74, 75, 75, - 76, 77, 78, 78, 79, 80, 80, 81, 82, 83, - 84, 85, 85, 86, 87, 87, 88, 89, 89, 90, - 90, 91 + 50, 50, 51, 51, 52, 53, 53, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 55, 56, 56, + 57, 57, 57, 57, 57, 57, 58, 58, 59, 59, + 60, 60, 61, 62, 62, 63, 63, 63, 64, 64, + 64, 64, 65, 65, 65, 66, 66, 67, 67, 67, + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + 69, 70, 71, 71, 72, 73, 74, 74, 75, 76, + 76, 77, 78, 79, 79, 80, 81, 81, 82, 83, + 84, 85, 86, 86, 87, 88, 88, 89, 90, 90, + 91, 91, 92 }; static const short yyr2[] = { 0, @@ -320,96 +322,96 @@ static const short yyr2[] = { 0, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 2, 2, 2, 2, 2, 2, 0, 1, 1, 2, 1, 3, 2, 0, 1, 1, 1, 2, 1, 2, - 2, 3, 1, 1, 1, 2, 3, 2, 3, 1, + 2, 3, 1, 1, 1, 1, 2, 3, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 1, 3, 2, 2, 3, 4, 2, 1, 2, - 4, 2, 1, 2, 5, 1, 1, 2, 2, 2, - 2, 1, 2, 3, 1, 2, 5, 1, 1, 1, - 2, 1 + 1, 2, 1, 3, 2, 2, 3, 4, 2, 1, + 2, 4, 2, 1, 2, 5, 1, 1, 2, 2, + 2, 2, 1, 2, 3, 1, 2, 5, 1, 1, + 1, 2, 1 }; static const short yydefact[] = { 1, 0, 0, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 8, 9, 11, 10, 12, 13, 15, 16, 14, 17, 3, 0, - 27, 27, 27, 27, 27, 27, 18, 62, 61, 0, - 65, 92, 64, 19, 68, 69, 77, 72, 73, 0, - 76, 80, 85, 0, 78, 79, 81, 82, 0, 7, - 4, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 60, 22, 28, 29, 31, 34, 59, 21, 23, 24, - 25, 26, 0, 0, 0, 20, 70, 74, 0, 86, - 0, 83, 0, 39, 0, 0, 0, 30, 36, 37, - 35, 33, 63, 66, 0, 0, 0, 90, 84, 43, - 44, 41, 45, 40, 32, 0, 48, 38, 0, 67, - 71, 0, 0, 91, 42, 46, 47, 49, 75, 89, - 88, 87, 0, 0, 0 + 27, 27, 27, 27, 27, 27, 18, 63, 62, 0, + 66, 93, 65, 19, 69, 70, 78, 73, 74, 0, + 77, 81, 86, 0, 79, 80, 82, 83, 0, 7, + 4, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 61, 22, 28, 29, 31, 34, 60, 21, 23, 24, + 25, 26, 0, 0, 0, 20, 71, 75, 0, 87, + 0, 84, 0, 39, 0, 0, 0, 30, 36, 37, + 35, 33, 64, 67, 0, 0, 0, 91, 85, 43, + 44, 45, 41, 46, 40, 32, 0, 49, 38, 0, + 68, 72, 0, 0, 92, 42, 47, 48, 50, 76, + 90, 89, 88, 0, 0, 0 }; -static const short yydefgoto[] = { 133, +static const short yydefgoto[] = { 134, 3, 5, 17, 18, 19, 85, 40, 72, 73, 74, - 75, 102, 98, 99, 113, 114, 100, 76, 77, 20, + 75, 102, 98, 99, 114, 115, 100, 76, 77, 20, 39, 21, 22, 41, 23, 45, 46, 24, 48, 49, - 50, 25, 26, 27, 28, 57, 58, 52, 53, 129, - 130, 54 + 50, 25, 26, 27, 28, 57, 58, 52, 53, 130, + 131, 54 }; -static const short yypact[] = { 4, - -37, 35,-32768, 36, 37, -37, 21, 2, 21, 17, - 18, -19, 17, 17, 17, 17,-32768, 36,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 63, - -23, -23, -23, -23, -23, -23,-32768, 33,-32768, 51, --32768,-32768,-32768, 21,-32768, 18,-32768,-32768, -19, 44, --32768,-32768, 17, 47,-32768,-32768,-32768, 17, 54,-32768, +static const short yypact[] = { 21, + -29, 30,-32768, 2, 33, -29, 52, -9, 52, -8, + -3, -19, -8, -8, -8, -8,-32768, 2,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 54, + 13, 13, 13, 13, 13, 13,-32768, 24,-32768, 43, +-32768,-32768,-32768, 52,-32768, -3,-32768,-32768, -19, 34, +-32768,-32768, -8, 46,-32768,-32768,-32768, -8, 57,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768, -5,-32768, -23,-32768,-32768,-32768,-32768, --32768,-32768, 2, 17, 55,-32768,-32768,-32768, -19,-32768, - 17,-32768, 50, -15, -23, 20, 45,-32768, 23, 49, - 48,-32768,-32768, 21, 17, 60, 64, 38,-32768,-32768, --32768,-32768,-32768, -15,-32768, 53,-32768, 49, 52,-32768, --32768, -20, -20,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 86, 87,-32768 +-32768,-32768,-32768, 16,-32768, 13,-32768,-32768,-32768,-32768, +-32768,-32768, -9, -8, 58,-32768,-32768,-32768, -19,-32768, + -8,-32768, 47, -14, 13, 42, 45,-32768, 5, 49, + 50,-32768,-32768, 52, -8, 64, 65, 36,-32768,-32768, +-32768,-32768,-32768,-32768, -14,-32768, 55,-32768, 49, 56, +-32768,-32768, -20, -20,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 86, 87,-32768 }; static const short yypgoto[] = {-32768, --32768, 82, 71,-32768,-32768,-32768, -6, 28, -4, 14, --32768,-32768, -3, -87, -22,-32768, -2,-32768,-32768,-32768, - 11,-32768,-32768, -8,-32768, 56,-32768,-32768, 57,-32768, - 9,-32768,-32768,-32768,-32768, 41,-32768, -11,-32768, -18, - 7, -10 +-32768, 83, 72,-32768,-32768,-32768, -6, -18, -4, 17, +-32768,-32768, -2, -87, -23,-32768, -1,-32768,-32768,-32768, + 14,-32768,-32768, -5,-32768, 59,-32768,-32768, 51,-32768, + 7,-32768,-32768,-32768,-32768, 44,-32768, -11,-32768, -21, + 8, -10 }; -#define YYLAST 113 +#define YYLAST 114 static const short yytable[] = { 43, - 37, 51, 55, 56, 108, 59, 112, 47, 1, 2, - 4, 94, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 94, 95, 96, 71, 97, 125, 42, 42, 110, - 111, 31, 32, 33, 34, 35, 36, 86, 51, 6, - 29, 90, 7, 8, 9, 10, 94, 59, 96, 38, - 97, 96, 11, 97, 12, 13, 14, 15, 16, 78, - 79, 80, 81, 82, 42, 44, 61, 83, 84, 89, - 91, 93, 105, 104, 108, 95, 117, 122, 51, 119, - 107, 123, 127, 128, 124, 134, 135, 30, 60, 101, - 115, 126, 116, 103, 121, 120, 118, 106, 92, 109, - 0, 87, 0, 0, 132, 88, 0, 0, 0, 0, - 0, 131, 131 + 37, 51, 55, 56, 108, 59, 113, 47, 7, 8, + 9, 10, 94, 78, 79, 80, 81, 82, 11, 4, + 12, 13, 14, 15, 16, 1, 2, 126, 42, 42, + 110, 111, 112, 96, 6, 97, 29, 86, 51, 38, + 42, 90, 94, 95, 96, 44, 97, 59, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 61, 83, 89, + 84, 71, 31, 32, 33, 34, 35, 36, 94, 91, + 96, 108, 97, 104, 93, 105, 118, 95, 51, 120, + 107, 123, 124, 125, 128, 135, 136, 129, 30, 60, + 116, 127, 101, 117, 122, 106, 103, 119, 121, 88, + 109, 92, 133, 0, 87, 0, 0, 0, 0, 0, + 0, 0, 132, 132 }; static const short yycheck[] = { 10, - 7, 12, 14, 15, 25, 16, 94, 27, 5, 6, - 48, 27, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 27, 28, 29, 48, 31, 114, 48, 48, 45, - 46, 11, 12, 13, 14, 15, 16, 44, 49, 5, - 4, 53, 7, 8, 9, 10, 27, 58, 29, 48, - 31, 29, 17, 31, 19, 20, 21, 22, 23, 32, - 33, 34, 35, 36, 48, 48, 4, 35, 18, 26, - 24, 18, 18, 84, 25, 28, 32, 18, 89, 31, - 91, 18, 30, 32, 47, 0, 0, 6, 18, 76, - 95, 114, 96, 83, 105, 104, 99, 89, 58, 93, - -1, 46, -1, -1, 123, 49, -1, -1, -1, -1, - -1, 122, 123 + 7, 12, 14, 15, 25, 16, 94, 27, 7, 8, + 9, 10, 27, 32, 33, 34, 35, 36, 17, 49, + 19, 20, 21, 22, 23, 5, 6, 115, 49, 49, + 45, 46, 47, 29, 5, 31, 4, 44, 49, 49, + 49, 53, 27, 28, 29, 49, 31, 58, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 4, 35, 26, + 18, 49, 11, 12, 13, 14, 15, 16, 27, 24, + 29, 25, 31, 84, 18, 18, 32, 28, 89, 31, + 91, 18, 18, 48, 30, 0, 0, 32, 6, 18, + 95, 115, 76, 96, 105, 89, 83, 99, 104, 49, + 93, 58, 124, -1, 46, -1, -1, -1, -1, -1, + -1, -1, 123, 124 }; #define YYPURE 1 @@ -1056,127 +1058,127 @@ case 35: { yyval.qtyp = yyvsp[0].qtyp; ; break;} case 36: -{ yyval.ctyp = ctype_adjustPointers (yyvsp[0].count, ctype_unknown); ; +{ yyval.ctyp = ctype_adjustPointers (yyvsp[0].pointers, ctype_unknown); ; break;} case 38: -{ yyval.ctyp = ctype_adjustPointers (yyvsp[-1].count, yyvsp[0].ctyp); ; +{ yyval.ctyp = ctype_adjustPointers (yyvsp[-1].pointers, yyvsp[0].ctyp); ; break;} case 39: -{ yyval.count = 1; ; +{ yyval.pointers = pointers_createMt (yyvsp[0].tok); ; break;} case 40: -{ yyval.count = 1; ; +{ yyval.pointers = pointers_createModsMt (yyvsp[-1].tok, yyvsp[0].quals); ; break;} case 41: -{ yyval.count = 1 + yyvsp[0].count; ; +{ yyval.pointers = pointers_extend (pointers_createMt (yyvsp[-1].tok), yyvsp[0].pointers); ; break;} case 42: -{ yyval.count = 1 + yyvsp[0].count; ; +{ yyval.pointers = pointers_extend (pointers_createModsMt (yyvsp[-2].tok, yyvsp[-1].quals), yyvsp[0].pointers); ; break;} case 43: -{ /* ignored for now */; ; +{ yyval.qual = qual_createConst (); ; break;} case 44: -{ ; ; +{ yyval.qual = qual_createVolatile (); ; break;} case 45: -{ ; ; +{ yyval.qual = qual_createRestrict (); ; break;} case 46: -{ ; ; +{ yyval.quals = qualList_single (yyvsp[0].qual); ; break;} case 47: -{ yyval.ctyp = ctype_expectFunction (yyvsp[-1].ctyp); ; +{ yyval.quals = qualList_add (yyvsp[-1].quals, yyvsp[0].qual); ; break;} case 48: -{ yyval.ctyp = ctype_makeArray (ctype_unknown); ; +{ yyval.ctyp = ctype_expectFunction (yyvsp[-1].ctyp); ; break;} case 49: -{ yyval.ctyp = ctype_makeArray (yyvsp[-2].ctyp); ; +{ yyval.ctyp = ctype_makeArray (ctype_unknown); ; break;} case 50: -{ yyval.ctyp = ctype_char; ; +{ yyval.ctyp = ctype_makeArray (yyvsp[-2].ctyp); ; break;} case 51: -{ yyval.ctyp = ctype_int; ; +{ yyval.ctyp = ctype_char; ; break;} case 52: -{ yyval.ctyp = ctype_float; ; +{ yyval.ctyp = ctype_int; ; break;} case 53: -{ yyval.ctyp = ctype_double; ; +{ yyval.ctyp = ctype_float; ; break;} case 54: -{ yyval.ctyp = ctype_void; ; +{ yyval.ctyp = ctype_double; ; break;} case 55: -{ yyval.ctyp = ctype_unknown; ; +{ yyval.ctyp = ctype_void; ; break;} case 56: -{ yyval.ctyp = ctype_anyintegral; ; +{ yyval.ctyp = ctype_unknown; ; break;} case 57: -{ yyval.ctyp = ctype_unsignedintegral; ; +{ yyval.ctyp = ctype_anyintegral; ; break;} case 58: -{ yyval.ctyp = ctype_signedintegral; ; +{ yyval.ctyp = ctype_unsignedintegral; ; break;} -case 60: -{ yyval.ctyp = mtscanner_lookupType (yyvsp[0].tok); ; +case 59: +{ yyval.ctyp = ctype_signedintegral; ; break;} case 61: -{ yyval.mtvalues = mtValuesNode_create (yyvsp[0].cstringlist); ; +{ yyval.ctyp = mtscanner_lookupType (yyvsp[0].tok); ; break;} case 62: -{ yyval.cstringlist = cstringList_single (mttok_getText (yyvsp[0].tok)); ; +{ yyval.mtvalues = mtValuesNode_create (yyvsp[0].cstringlist); ; break;} case 63: -{ yyval.cstringlist = cstringList_prepend (yyvsp[0].cstringlist, mttok_getText (yyvsp[-2].tok)); ; +{ yyval.cstringlist = cstringList_single (mttok_getText (yyvsp[0].tok)); ; break;} case 64: -{ yyval.tok = yyvsp[0].tok; ; +{ yyval.cstringlist = cstringList_prepend (yyvsp[0].cstringlist, mttok_getText (yyvsp[-2].tok)); ; break;} case 65: -{ yyval.mtdefaults = mtDefaultsNode_create (yyvsp[-1].tok, yyvsp[0].mtdeflist); ; +{ yyval.tok = yyvsp[0].tok; ; break;} case 66: -{ yyval.mtdeflist = mtDefaultsDeclList_single (mtDefaultsDecl_create (yyvsp[-2].mtcontext, yyvsp[0].tok)); ; +{ yyval.mtdefaults = mtDefaultsNode_create (yyvsp[-1].tok, yyvsp[0].mtdeflist); ; break;} case 67: -{ yyval.mtdeflist = mtDefaultsDeclList_prepend (yyvsp[0].mtdeflist, mtDefaultsDecl_create (yyvsp[-3].mtcontext, yyvsp[-1].tok)); ; +{ yyval.mtdeflist = mtDefaultsDeclList_single (mtDefaultsDecl_create (yyvsp[-2].mtcontext, yyvsp[0].tok)); ; break;} case 68: -{ yyval.mtannotations = mtAnnotationsNode_create (yyvsp[0].mtannotlist); ; +{ yyval.mtdeflist = mtDefaultsDeclList_prepend (yyvsp[0].mtdeflist, mtDefaultsDecl_create (yyvsp[-3].mtcontext, yyvsp[-1].tok)); ; break;} case 69: -{ yyval.mtannotlist = mtAnnotationList_single (yyvsp[0].mtannotdecl); ; +{ yyval.mtannotations = mtAnnotationsNode_create (yyvsp[0].mtannotlist); ; break;} case 70: -{ yyval.mtannotlist = mtAnnotationList_prepend (yyvsp[0].mtannotlist, yyvsp[-1].mtannotdecl); ; +{ yyval.mtannotlist = mtAnnotationList_single (yyvsp[0].mtannotdecl); ; break;} case 71: -{ yyval.mtannotdecl = mtAnnotationDecl_create (yyvsp[-3].tok, yyvsp[-2].mtcontext, yyvsp[0].tok); ; +{ yyval.mtannotlist = mtAnnotationList_prepend (yyvsp[0].mtannotlist, yyvsp[-1].mtannotdecl); ; break;} case 72: -{ yyval.mtmerge = mtMergeNode_create (yyvsp[0].mtmergeclauselist); ; +{ yyval.mtannotdecl = mtAnnotationDecl_create (yyvsp[-3].tok, yyvsp[-2].mtcontext, yyvsp[0].tok); ; break;} case 73: -{ yyval.mtmergeclauselist = mtMergeClauseList_single (yyvsp[0].mtmergeclause); ; +{ yyval.mtmerge = mtMergeNode_create (yyvsp[0].mtmergeclauselist); ; break;} case 74: -{ yyval.mtmergeclauselist = mtMergeClauseList_prepend (yyvsp[0].mtmergeclauselist, yyvsp[-1].mtmergeclause); ; +{ yyval.mtmergeclauselist = mtMergeClauseList_single (yyvsp[0].mtmergeclause); ; break;} case 75: -{ yyval.mtmergeclause = mtMergeClause_create (yyvsp[-4].mtmergeitem, yyvsp[-2].mtmergeitem, yyvsp[0].mttransferaction); ; +{ yyval.mtmergeclauselist = mtMergeClauseList_prepend (yyvsp[0].mtmergeclauselist, yyvsp[-1].mtmergeclause); ; break;} case 76: -{ yyval.mtmergeitem = mtMergeItem_createValue (yyvsp[0].tok); ; +{ yyval.mtmergeclause = mtMergeClause_create (yyvsp[-4].mtmergeitem, yyvsp[-2].mtmergeitem, yyvsp[0].mttransferaction); ; break;} case 77: -{ yyval.mtmergeitem = mtMergeItem_createStar (yyvsp[0].tok); ; +{ yyval.mtmergeitem = mtMergeItem_createValue (yyvsp[0].tok); ; break;} case 78: -{ yyval.mttransferclauselist = yyvsp[0].mttransferclauselist; ; +{ yyval.mtmergeitem = mtMergeItem_createStar (yyvsp[0].tok); ; break;} case 79: { yyval.mttransferclauselist = yyvsp[0].mttransferclauselist; ; @@ -1185,36 +1187,39 @@ case 80: { yyval.mttransferclauselist = yyvsp[0].mttransferclauselist; ; break;} case 81: -{ yyval.mtlosereferencelist = yyvsp[0].mtlosereferencelist; ; +{ yyval.mttransferclauselist = yyvsp[0].mttransferclauselist; ; break;} case 82: -{ yyval.mtlosereferencelist = mtLoseReferenceList_single (yyvsp[0].mtlosereference); ; +{ yyval.mtlosereferencelist = yyvsp[0].mtlosereferencelist; ; break;} case 83: -{ yyval.mtlosereferencelist = mtLoseReferenceList_prepend (yyvsp[0].mtlosereferencelist, yyvsp[-1].mtlosereference); ; +{ yyval.mtlosereferencelist = mtLoseReferenceList_single (yyvsp[0].mtlosereference); ; break;} case 84: -{ yyval.mtlosereference = mtLoseReference_create (yyvsp[-2].tok, yyvsp[0].mttransferaction); ; +{ yyval.mtlosereferencelist = mtLoseReferenceList_prepend (yyvsp[0].mtlosereferencelist, yyvsp[-1].mtlosereference); ; break;} case 85: -{ yyval.mttransferclauselist = mtTransferClauseList_single (yyvsp[0].mttransferclause); ; +{ yyval.mtlosereference = mtLoseReference_create (yyvsp[-2].tok, yyvsp[0].mttransferaction); ; break;} case 86: -{ yyval.mttransferclauselist = mtTransferClauseList_prepend (yyvsp[0].mttransferclauselist, yyvsp[-1].mttransferclause); ; +{ yyval.mttransferclauselist = mtTransferClauseList_single (yyvsp[0].mttransferclause); ; break;} case 87: -{ yyval.mttransferclause = mtTransferClause_create (yyvsp[-4].tok, yyvsp[-2].tok, yyvsp[0].mttransferaction); ; +{ yyval.mttransferclauselist = mtTransferClauseList_prepend (yyvsp[0].mttransferclauselist, yyvsp[-1].mttransferclause); ; break;} case 88: -{ yyval.mttransferaction = mtTransferAction_createValue (yyvsp[0].tok); ; +{ yyval.mttransferclause = mtTransferClause_create (yyvsp[-4].tok, yyvsp[-2].tok, yyvsp[0].mttransferaction); ; break;} case 89: -{ yyval.mttransferaction = yyvsp[0].mttransferaction; ; +{ yyval.mttransferaction = mtTransferAction_createValue (yyvsp[0].tok); ; break;} case 90: -{ yyval.mttransferaction = mtTransferAction_createError (yyvsp[0].tok); ; +{ yyval.mttransferaction = yyvsp[0].mttransferaction; ; break;} case 91: +{ yyval.mttransferaction = mtTransferAction_createError (yyvsp[0].tok); ; + break;} +case 92: { yyval.mttransferaction = mtTransferAction_createErrorMessage (yyvsp[0].tok); ; break;} } diff --git a/src/mtgrammar.c.der b/src/mtgrammar.c.der index ad56cf6..8c80b9a 100644 --- a/src/mtgrammar.c.der +++ b/src/mtgrammar.c.der @@ -107,8 +107,9 @@ #define MT_SIGNEDINTEGRALTYPE 298 #define MT_CONST 299 #define MT_VOLATILE 300 -#define MT_STRINGLIT 301 -#define MT_IDENT 302 +#define MT_RESTRICT 301 +#define MT_STRINGLIT 302 +#define MT_IDENT 303 @@ -160,11 +161,12 @@ typedef union { mtTransferAction mttransferaction; mtLoseReferenceList mtlosereferencelist; mtLoseReference mtlosereference; - + pointers pointers; /*@only@*/ cstringList cstringlist; ctype ctyp; /*@only@*/ qtype qtyp; - int count; + qual qual; + qualList quals; } YYSTYPE; #ifndef YYDEBUG #define YYDEBUG 1 @@ -180,11 +182,11 @@ typedef union { -#define YYFINAL 135 +#define YYFINAL 136 #define YYFLAG -32768 -#define YYNTBASE 49 +#define YYNTBASE 50 -#define YYTRANSLATE(x) ((unsigned)(x) <= 302 ? yytranslate[x] : 92) +#define YYTRANSLATE(x) ((unsigned)(x) <= 303 ? yytranslate[x] : 93) static const char yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -217,7 +219,7 @@ static const char yytranslate[] = { 0, 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 + 47, 48, 49 }; #if YYDEBUG != 0 @@ -226,56 +228,56 @@ static const short yyprhs[] = { 0, 25, 27, 29, 31, 33, 35, 37, 39, 42, 43, 45, 48, 51, 54, 57, 60, 63, 64, 66, 68, 71, 73, 77, 80, 81, 83, 85, 87, 90, 92, - 95, 98, 102, 104, 106, 108, 111, 115, 118, 122, + 95, 98, 102, 104, 106, 108, 110, 113, 117, 120, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, - 144, 147, 149, 153, 156, 159, 163, 168, 171, 173, - 176, 181, 184, 186, 189, 195, 197, 199, 202, 205, - 208, 211, 213, 216, 220, 222, 225, 231, 233, 235, - 237, 240 + 144, 146, 149, 151, 155, 158, 161, 165, 170, 173, + 175, 178, 183, 186, 188, 191, 197, 199, 201, 204, + 207, 210, 213, 215, 218, 222, 224, 227, 233, 235, + 237, 239, 242 }; static const short yyrhs[] = { -1, - 50, 0, 5, 51, 4, 0, 6, 5, 51, 4, - 0, 48, 52, 0, 0, 53, 52, 0, 54, 0, - 69, 0, 72, 0, 71, 0, 74, 0, 77, 0, - 83, 0, 81, 0, 82, 0, 84, 0, 7, 56, - 0, 0, 56, 0, 12, 57, 0, 11, 57, 0, - 13, 57, 0, 14, 57, 0, 15, 57, 0, 16, - 57, 0, 0, 58, 0, 59, 0, 59, 62, 0, - 60, 0, 59, 28, 58, 0, 67, 61, 0, 0, - 59, 0, 63, 0, 66, 0, 63, 66, 0, 27, - 0, 27, 65, 0, 27, 63, 0, 27, 65, 63, - 0, 45, 0, 46, 0, 64, 0, 65, 64, 0, - 29, 62, 30, 0, 31, 32, 0, 66, 31, 32, - 0, 36, 0, 37, 0, 38, 0, 39, 0, 40, - 0, 41, 0, 42, 0, 43, 0, 44, 0, 68, - 0, 48, 0, 8, 70, 0, 48, 0, 48, 35, - 70, 0, 10, 91, 0, 9, 73, 0, 56, 18, - 91, 0, 56, 18, 91, 73, 0, 17, 75, 0, - 76, 0, 76, 75, 0, 48, 55, 18, 91, 0, - 19, 78, 0, 79, 0, 79, 78, 0, 80, 26, - 80, 18, 89, 0, 91, 0, 27, 0, 21, 87, - 0, 22, 87, 0, 20, 87, 0, 23, 85, 0, - 86, 0, 86, 85, 0, 91, 18, 90, 0, 88, - 0, 88, 87, 0, 91, 24, 91, 18, 89, 0, - 91, 0, 90, 0, 25, 0, 25, 47, 0, 48, - 0 + 51, 0, 5, 52, 4, 0, 6, 5, 52, 4, + 0, 49, 53, 0, 0, 54, 53, 0, 55, 0, + 70, 0, 73, 0, 72, 0, 75, 0, 78, 0, + 84, 0, 82, 0, 83, 0, 85, 0, 7, 57, + 0, 0, 57, 0, 12, 58, 0, 11, 58, 0, + 13, 58, 0, 14, 58, 0, 15, 58, 0, 16, + 58, 0, 0, 59, 0, 60, 0, 60, 63, 0, + 61, 0, 60, 28, 59, 0, 68, 62, 0, 0, + 60, 0, 64, 0, 67, 0, 64, 67, 0, 27, + 0, 27, 66, 0, 27, 64, 0, 27, 66, 64, + 0, 45, 0, 46, 0, 47, 0, 65, 0, 66, + 65, 0, 29, 63, 30, 0, 31, 32, 0, 67, + 31, 32, 0, 36, 0, 37, 0, 38, 0, 39, + 0, 40, 0, 41, 0, 42, 0, 43, 0, 44, + 0, 69, 0, 49, 0, 8, 71, 0, 49, 0, + 49, 35, 71, 0, 10, 92, 0, 9, 74, 0, + 57, 18, 92, 0, 57, 18, 92, 74, 0, 17, + 76, 0, 77, 0, 77, 76, 0, 49, 56, 18, + 92, 0, 19, 79, 0, 80, 0, 80, 79, 0, + 81, 26, 81, 18, 90, 0, 92, 0, 27, 0, + 21, 88, 0, 22, 88, 0, 20, 88, 0, 23, + 86, 0, 87, 0, 87, 86, 0, 92, 18, 91, + 0, 89, 0, 89, 88, 0, 92, 24, 92, 18, + 90, 0, 92, 0, 91, 0, 25, 0, 25, 48, + 0, 49, 0 }; #endif #if YYDEBUG != 0 static const short yyrline[] = { 0, - 158, 159, 162, 164, 168, 172, 173, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 189, 193, 194, - 197, 198, 199, 200, 201, 202, 209, 210, 213, 214, - 217, 218, 222, 225, 226, 230, 231, 232, 235, 236, - 237, 238, 241, 242, 245, 246, 249, 250, 251, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 273, - 276, 279, 280, 284, 287, 290, 292, 296, 299, 300, - 304, 308, 311, 312, 315, 319, 320, 323, 326, 329, - 332, 335, 336, 339, 342, 343, 346, 350, 351, 354, - 355, 358 + 160, 161, 164, 166, 170, 174, 175, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 191, 195, 196, + 199, 200, 201, 202, 203, 204, 211, 212, 215, 216, + 219, 220, 224, 227, 228, 232, 233, 234, 237, 238, + 239, 240, 243, 244, 245, 248, 249, 252, 253, 254, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 276, 279, 282, 283, 287, 290, 293, 295, 299, 302, + 303, 307, 311, 314, 315, 318, 322, 323, 326, 329, + 332, 335, 338, 339, 342, 345, 346, 349, 353, 354, + 357, 358, 361 }; #endif @@ -289,12 +291,12 @@ static const char * const yytname[] = { "$","error","$undefined.","MT_BADTOK", "MT_LOSEREFERENCE","MT_AS","MT_ERROR","MT_PLUS","MT_STAR","MT_BAR","MT_LPAREN", "MT_RPAREN","MT_LBRACKET","MT_RBRACKET","MT_LBRACE","MT_RBRACE","MT_COMMA","MT_CHAR", "MT_INT","MT_FLOAT","MT_DOUBLE","MT_VOID","MT_ANYTYPE","MT_INTEGRALTYPE","MT_UNSIGNEDINTEGRALTYPE", -"MT_SIGNEDINTEGRALTYPE","MT_CONST","MT_VOLATILE","MT_STRINGLIT","MT_IDENT","file", -"mtsDeclaration","declarationNode","declarationPieces","declarationPiece","contextDeclaration", -"optContextSelection","contextSelection","optType","typeExpression","completeType", -"completeTypeAux","optCompleteType","abstractDecl","pointers","innerMods","innerModsList", -"abstractDeclBase","typeSpecifier","typeName","valuesDeclaration","valuesList", -"defaultNode","defaultsDeclaration","defaultDeclarationList","annotationsDeclaration", +"MT_SIGNEDINTEGRALTYPE","MT_CONST","MT_VOLATILE","MT_RESTRICT","MT_STRINGLIT", +"MT_IDENT","file","mtsDeclaration","declarationNode","declarationPieces","declarationPiece", +"contextDeclaration","optContextSelection","contextSelection","optType","typeExpression", +"completeType","completeTypeAux","optCompleteType","abstractDecl","pointers", +"innerMods","innerModsList","abstractDeclBase","typeSpecifier","typeName","valuesDeclaration", +"valuesList","defaultNode","defaultsDeclaration","defaultDeclarationList","annotationsDeclaration", "annotationsDeclarationList","annotationDeclaration","mergeDeclaration","mergeClauses", "mergeClause","mergeItem","preconditionsDeclaration","postconditionsDeclaration", "transfersDeclaration","loseReferenceDeclaration","lostClauses","lostClause", @@ -303,16 +305,16 @@ static const char * const yytname[] = { "$","error","$undefined.","MT_BADTOK", #endif static const short yyr1[] = { 0, - 49, 49, 50, 50, 51, 52, 52, 53, 53, 53, - 53, 53, 53, 53, 53, 53, 53, 54, 55, 55, - 56, 56, 56, 56, 56, 56, 57, 57, 58, 58, - 59, 59, 60, 61, 61, 62, 62, 62, 63, 63, - 63, 63, 64, 64, 65, 65, 66, 66, 66, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 68, - 69, 70, 70, 71, 72, 73, 73, 74, 75, 75, - 76, 77, 78, 78, 79, 80, 80, 81, 82, 83, - 84, 85, 85, 86, 87, 87, 88, 89, 89, 90, - 90, 91 + 50, 50, 51, 51, 52, 53, 53, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 55, 56, 56, + 57, 57, 57, 57, 57, 57, 58, 58, 59, 59, + 60, 60, 61, 62, 62, 63, 63, 63, 64, 64, + 64, 64, 65, 65, 65, 66, 66, 67, 67, 67, + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + 69, 70, 71, 71, 72, 73, 74, 74, 75, 76, + 76, 77, 78, 79, 79, 80, 81, 81, 82, 83, + 84, 85, 86, 86, 87, 88, 88, 89, 90, 90, + 91, 91, 92 }; static const short yyr2[] = { 0, @@ -320,96 +322,96 @@ static const short yyr2[] = { 0, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 2, 2, 2, 2, 2, 2, 0, 1, 1, 2, 1, 3, 2, 0, 1, 1, 1, 2, 1, 2, - 2, 3, 1, 1, 1, 2, 3, 2, 3, 1, + 2, 3, 1, 1, 1, 1, 2, 3, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 1, 3, 2, 2, 3, 4, 2, 1, 2, - 4, 2, 1, 2, 5, 1, 1, 2, 2, 2, - 2, 1, 2, 3, 1, 2, 5, 1, 1, 1, - 2, 1 + 1, 2, 1, 3, 2, 2, 3, 4, 2, 1, + 2, 4, 2, 1, 2, 5, 1, 1, 2, 2, + 2, 2, 1, 2, 3, 1, 2, 5, 1, 1, + 1, 2, 1 }; static const short yydefact[] = { 1, 0, 0, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 8, 9, 11, 10, 12, 13, 15, 16, 14, 17, 3, 0, - 27, 27, 27, 27, 27, 27, 18, 62, 61, 0, - 65, 92, 64, 19, 68, 69, 77, 72, 73, 0, - 76, 80, 85, 0, 78, 79, 81, 82, 0, 7, - 4, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 60, 22, 28, 29, 31, 34, 59, 21, 23, 24, - 25, 26, 0, 0, 0, 20, 70, 74, 0, 86, - 0, 83, 0, 39, 0, 0, 0, 30, 36, 37, - 35, 33, 63, 66, 0, 0, 0, 90, 84, 43, - 44, 41, 45, 40, 32, 0, 48, 38, 0, 67, - 71, 0, 0, 91, 42, 46, 47, 49, 75, 89, - 88, 87, 0, 0, 0 + 27, 27, 27, 27, 27, 27, 18, 63, 62, 0, + 66, 93, 65, 19, 69, 70, 78, 73, 74, 0, + 77, 81, 86, 0, 79, 80, 82, 83, 0, 7, + 4, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 61, 22, 28, 29, 31, 34, 60, 21, 23, 24, + 25, 26, 0, 0, 0, 20, 71, 75, 0, 87, + 0, 84, 0, 39, 0, 0, 0, 30, 36, 37, + 35, 33, 64, 67, 0, 0, 0, 91, 85, 43, + 44, 45, 41, 46, 40, 32, 0, 49, 38, 0, + 68, 72, 0, 0, 92, 42, 47, 48, 50, 76, + 90, 89, 88, 0, 0, 0 }; -static const short yydefgoto[] = { 133, +static const short yydefgoto[] = { 134, 3, 5, 17, 18, 19, 85, 40, 72, 73, 74, - 75, 102, 98, 99, 113, 114, 100, 76, 77, 20, + 75, 102, 98, 99, 114, 115, 100, 76, 77, 20, 39, 21, 22, 41, 23, 45, 46, 24, 48, 49, - 50, 25, 26, 27, 28, 57, 58, 52, 53, 129, - 130, 54 + 50, 25, 26, 27, 28, 57, 58, 52, 53, 130, + 131, 54 }; -static const short yypact[] = { 4, - -37, 35,-32768, 36, 37, -37, 21, 2, 21, 17, - 18, -19, 17, 17, 17, 17,-32768, 36,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 63, - -23, -23, -23, -23, -23, -23,-32768, 33,-32768, 51, --32768,-32768,-32768, 21,-32768, 18,-32768,-32768, -19, 44, --32768,-32768, 17, 47,-32768,-32768,-32768, 17, 54,-32768, +static const short yypact[] = { 21, + -29, 30,-32768, 2, 33, -29, 52, -9, 52, -8, + -3, -19, -8, -8, -8, -8,-32768, 2,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 54, + 13, 13, 13, 13, 13, 13,-32768, 24,-32768, 43, +-32768,-32768,-32768, 52,-32768, -3,-32768,-32768, -19, 34, +-32768,-32768, -8, 46,-32768,-32768,-32768, -8, 57,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768, -5,-32768, -23,-32768,-32768,-32768,-32768, --32768,-32768, 2, 17, 55,-32768,-32768,-32768, -19,-32768, - 17,-32768, 50, -15, -23, 20, 45,-32768, 23, 49, - 48,-32768,-32768, 21, 17, 60, 64, 38,-32768,-32768, --32768,-32768,-32768, -15,-32768, 53,-32768, 49, 52,-32768, --32768, -20, -20,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 86, 87,-32768 +-32768,-32768,-32768, 16,-32768, 13,-32768,-32768,-32768,-32768, +-32768,-32768, -9, -8, 58,-32768,-32768,-32768, -19,-32768, + -8,-32768, 47, -14, 13, 42, 45,-32768, 5, 49, + 50,-32768,-32768, 52, -8, 64, 65, 36,-32768,-32768, +-32768,-32768,-32768,-32768, -14,-32768, 55,-32768, 49, 56, +-32768,-32768, -20, -20,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 86, 87,-32768 }; static const short yypgoto[] = {-32768, --32768, 82, 71,-32768,-32768,-32768, -6, 28, -4, 14, --32768,-32768, -3, -87, -22,-32768, -2,-32768,-32768,-32768, - 11,-32768,-32768, -8,-32768, 56,-32768,-32768, 57,-32768, - 9,-32768,-32768,-32768,-32768, 41,-32768, -11,-32768, -18, - 7, -10 +-32768, 83, 72,-32768,-32768,-32768, -6, -18, -4, 17, +-32768,-32768, -2, -87, -23,-32768, -1,-32768,-32768,-32768, + 14,-32768,-32768, -5,-32768, 59,-32768,-32768, 51,-32768, + 7,-32768,-32768,-32768,-32768, 44,-32768, -11,-32768, -21, + 8, -10 }; -#define YYLAST 113 +#define YYLAST 114 static const short yytable[] = { 43, - 37, 51, 55, 56, 108, 59, 112, 47, 1, 2, - 4, 94, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 94, 95, 96, 71, 97, 125, 42, 42, 110, - 111, 31, 32, 33, 34, 35, 36, 86, 51, 6, - 29, 90, 7, 8, 9, 10, 94, 59, 96, 38, - 97, 96, 11, 97, 12, 13, 14, 15, 16, 78, - 79, 80, 81, 82, 42, 44, 61, 83, 84, 89, - 91, 93, 105, 104, 108, 95, 117, 122, 51, 119, - 107, 123, 127, 128, 124, 134, 135, 30, 60, 101, - 115, 126, 116, 103, 121, 120, 118, 106, 92, 109, - 0, 87, 0, 0, 132, 88, 0, 0, 0, 0, - 0, 131, 131 + 37, 51, 55, 56, 108, 59, 113, 47, 7, 8, + 9, 10, 94, 78, 79, 80, 81, 82, 11, 4, + 12, 13, 14, 15, 16, 1, 2, 126, 42, 42, + 110, 111, 112, 96, 6, 97, 29, 86, 51, 38, + 42, 90, 94, 95, 96, 44, 97, 59, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 61, 83, 89, + 84, 71, 31, 32, 33, 34, 35, 36, 94, 91, + 96, 108, 97, 104, 93, 105, 118, 95, 51, 120, + 107, 123, 124, 125, 128, 135, 136, 129, 30, 60, + 116, 127, 101, 117, 122, 106, 103, 119, 121, 88, + 109, 92, 133, 0, 87, 0, 0, 0, 0, 0, + 0, 0, 132, 132 }; static const short yycheck[] = { 10, - 7, 12, 14, 15, 25, 16, 94, 27, 5, 6, - 48, 27, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 27, 28, 29, 48, 31, 114, 48, 48, 45, - 46, 11, 12, 13, 14, 15, 16, 44, 49, 5, - 4, 53, 7, 8, 9, 10, 27, 58, 29, 48, - 31, 29, 17, 31, 19, 20, 21, 22, 23, 32, - 33, 34, 35, 36, 48, 48, 4, 35, 18, 26, - 24, 18, 18, 84, 25, 28, 32, 18, 89, 31, - 91, 18, 30, 32, 47, 0, 0, 6, 18, 76, - 95, 114, 96, 83, 105, 104, 99, 89, 58, 93, - -1, 46, -1, -1, 123, 49, -1, -1, -1, -1, - -1, 122, 123 + 7, 12, 14, 15, 25, 16, 94, 27, 7, 8, + 9, 10, 27, 32, 33, 34, 35, 36, 17, 49, + 19, 20, 21, 22, 23, 5, 6, 115, 49, 49, + 45, 46, 47, 29, 5, 31, 4, 44, 49, 49, + 49, 53, 27, 28, 29, 49, 31, 58, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 4, 35, 26, + 18, 49, 11, 12, 13, 14, 15, 16, 27, 24, + 29, 25, 31, 84, 18, 18, 32, 28, 89, 31, + 91, 18, 18, 48, 30, 0, 0, 32, 6, 18, + 95, 115, 76, 96, 105, 89, 83, 99, 104, 49, + 93, 58, 124, -1, 46, -1, -1, -1, -1, -1, + -1, -1, 123, 124 }; #define YYPURE 1 @@ -1056,127 +1058,127 @@ case 35: { yyval.qtyp = yyvsp[0].qtyp; ; break;} case 36: -{ yyval.ctyp = ctype_adjustPointers (yyvsp[0].count, ctype_unknown); ; +{ yyval.ctyp = ctype_adjustPointers (yyvsp[0].pointers, ctype_unknown); ; break;} case 38: -{ yyval.ctyp = ctype_adjustPointers (yyvsp[-1].count, yyvsp[0].ctyp); ; +{ yyval.ctyp = ctype_adjustPointers (yyvsp[-1].pointers, yyvsp[0].ctyp); ; break;} case 39: -{ yyval.count = 1; ; +{ yyval.pointers = pointers_createMt (yyvsp[0].tok); ; break;} case 40: -{ yyval.count = 1; ; +{ yyval.pointers = pointers_createModsMt (yyvsp[-1].tok, yyvsp[0].quals); ; break;} case 41: -{ yyval.count = 1 + yyvsp[0].count; ; +{ yyval.pointers = pointers_extend (pointers_createMt (yyvsp[-1].tok), yyvsp[0].pointers); ; break;} case 42: -{ yyval.count = 1 + yyvsp[0].count; ; +{ yyval.pointers = pointers_extend (pointers_createModsMt (yyvsp[-2].tok, yyvsp[-1].quals), yyvsp[0].pointers); ; break;} case 43: -{ /* ignored for now */; ; +{ yyval.qual = qual_createConst (); ; break;} case 44: -{ ; ; +{ yyval.qual = qual_createVolatile (); ; break;} case 45: -{ ; ; +{ yyval.qual = qual_createRestrict (); ; break;} case 46: -{ ; ; +{ yyval.quals = qualList_single (yyvsp[0].qual); ; break;} case 47: -{ yyval.ctyp = ctype_expectFunction (yyvsp[-1].ctyp); ; +{ yyval.quals = qualList_add (yyvsp[-1].quals, yyvsp[0].qual); ; break;} case 48: -{ yyval.ctyp = ctype_makeArray (ctype_unknown); ; +{ yyval.ctyp = ctype_expectFunction (yyvsp[-1].ctyp); ; break;} case 49: -{ yyval.ctyp = ctype_makeArray (yyvsp[-2].ctyp); ; +{ yyval.ctyp = ctype_makeArray (ctype_unknown); ; break;} case 50: -{ yyval.ctyp = ctype_char; ; +{ yyval.ctyp = ctype_makeArray (yyvsp[-2].ctyp); ; break;} case 51: -{ yyval.ctyp = ctype_int; ; +{ yyval.ctyp = ctype_char; ; break;} case 52: -{ yyval.ctyp = ctype_float; ; +{ yyval.ctyp = ctype_int; ; break;} case 53: -{ yyval.ctyp = ctype_double; ; +{ yyval.ctyp = ctype_float; ; break;} case 54: -{ yyval.ctyp = ctype_void; ; +{ yyval.ctyp = ctype_double; ; break;} case 55: -{ yyval.ctyp = ctype_unknown; ; +{ yyval.ctyp = ctype_void; ; break;} case 56: -{ yyval.ctyp = ctype_anyintegral; ; +{ yyval.ctyp = ctype_unknown; ; break;} case 57: -{ yyval.ctyp = ctype_unsignedintegral; ; +{ yyval.ctyp = ctype_anyintegral; ; break;} case 58: -{ yyval.ctyp = ctype_signedintegral; ; +{ yyval.ctyp = ctype_unsignedintegral; ; break;} -case 60: -{ yyval.ctyp = mtscanner_lookupType (yyvsp[0].tok); ; +case 59: +{ yyval.ctyp = ctype_signedintegral; ; break;} case 61: -{ yyval.mtvalues = mtValuesNode_create (yyvsp[0].cstringlist); ; +{ yyval.ctyp = mtscanner_lookupType (yyvsp[0].tok); ; break;} case 62: -{ yyval.cstringlist = cstringList_single (mttok_getText (yyvsp[0].tok)); ; +{ yyval.mtvalues = mtValuesNode_create (yyvsp[0].cstringlist); ; break;} case 63: -{ yyval.cstringlist = cstringList_prepend (yyvsp[0].cstringlist, mttok_getText (yyvsp[-2].tok)); ; +{ yyval.cstringlist = cstringList_single (mttok_getText (yyvsp[0].tok)); ; break;} case 64: -{ yyval.tok = yyvsp[0].tok; ; +{ yyval.cstringlist = cstringList_prepend (yyvsp[0].cstringlist, mttok_getText (yyvsp[-2].tok)); ; break;} case 65: -{ yyval.mtdefaults = mtDefaultsNode_create (yyvsp[-1].tok, yyvsp[0].mtdeflist); ; +{ yyval.tok = yyvsp[0].tok; ; break;} case 66: -{ yyval.mtdeflist = mtDefaultsDeclList_single (mtDefaultsDecl_create (yyvsp[-2].mtcontext, yyvsp[0].tok)); ; +{ yyval.mtdefaults = mtDefaultsNode_create (yyvsp[-1].tok, yyvsp[0].mtdeflist); ; break;} case 67: -{ yyval.mtdeflist = mtDefaultsDeclList_prepend (yyvsp[0].mtdeflist, mtDefaultsDecl_create (yyvsp[-3].mtcontext, yyvsp[-1].tok)); ; +{ yyval.mtdeflist = mtDefaultsDeclList_single (mtDefaultsDecl_create (yyvsp[-2].mtcontext, yyvsp[0].tok)); ; break;} case 68: -{ yyval.mtannotations = mtAnnotationsNode_create (yyvsp[0].mtannotlist); ; +{ yyval.mtdeflist = mtDefaultsDeclList_prepend (yyvsp[0].mtdeflist, mtDefaultsDecl_create (yyvsp[-3].mtcontext, yyvsp[-1].tok)); ; break;} case 69: -{ yyval.mtannotlist = mtAnnotationList_single (yyvsp[0].mtannotdecl); ; +{ yyval.mtannotations = mtAnnotationsNode_create (yyvsp[0].mtannotlist); ; break;} case 70: -{ yyval.mtannotlist = mtAnnotationList_prepend (yyvsp[0].mtannotlist, yyvsp[-1].mtannotdecl); ; +{ yyval.mtannotlist = mtAnnotationList_single (yyvsp[0].mtannotdecl); ; break;} case 71: -{ yyval.mtannotdecl = mtAnnotationDecl_create (yyvsp[-3].tok, yyvsp[-2].mtcontext, yyvsp[0].tok); ; +{ yyval.mtannotlist = mtAnnotationList_prepend (yyvsp[0].mtannotlist, yyvsp[-1].mtannotdecl); ; break;} case 72: -{ yyval.mtmerge = mtMergeNode_create (yyvsp[0].mtmergeclauselist); ; +{ yyval.mtannotdecl = mtAnnotationDecl_create (yyvsp[-3].tok, yyvsp[-2].mtcontext, yyvsp[0].tok); ; break;} case 73: -{ yyval.mtmergeclauselist = mtMergeClauseList_single (yyvsp[0].mtmergeclause); ; +{ yyval.mtmerge = mtMergeNode_create (yyvsp[0].mtmergeclauselist); ; break;} case 74: -{ yyval.mtmergeclauselist = mtMergeClauseList_prepend (yyvsp[0].mtmergeclauselist, yyvsp[-1].mtmergeclause); ; +{ yyval.mtmergeclauselist = mtMergeClauseList_single (yyvsp[0].mtmergeclause); ; break;} case 75: -{ yyval.mtmergeclause = mtMergeClause_create (yyvsp[-4].mtmergeitem, yyvsp[-2].mtmergeitem, yyvsp[0].mttransferaction); ; +{ yyval.mtmergeclauselist = mtMergeClauseList_prepend (yyvsp[0].mtmergeclauselist, yyvsp[-1].mtmergeclause); ; break;} case 76: -{ yyval.mtmergeitem = mtMergeItem_createValue (yyvsp[0].tok); ; +{ yyval.mtmergeclause = mtMergeClause_create (yyvsp[-4].mtmergeitem, yyvsp[-2].mtmergeitem, yyvsp[0].mttransferaction); ; break;} case 77: -{ yyval.mtmergeitem = mtMergeItem_createStar (yyvsp[0].tok); ; +{ yyval.mtmergeitem = mtMergeItem_createValue (yyvsp[0].tok); ; break;} case 78: -{ yyval.mttransferclauselist = yyvsp[0].mttransferclauselist; ; +{ yyval.mtmergeitem = mtMergeItem_createStar (yyvsp[0].tok); ; break;} case 79: { yyval.mttransferclauselist = yyvsp[0].mttransferclauselist; ; @@ -1185,36 +1187,39 @@ case 80: { yyval.mttransferclauselist = yyvsp[0].mttransferclauselist; ; break;} case 81: -{ yyval.mtlosereferencelist = yyvsp[0].mtlosereferencelist; ; +{ yyval.mttransferclauselist = yyvsp[0].mttransferclauselist; ; break;} case 82: -{ yyval.mtlosereferencelist = mtLoseReferenceList_single (yyvsp[0].mtlosereference); ; +{ yyval.mtlosereferencelist = yyvsp[0].mtlosereferencelist; ; break;} case 83: -{ yyval.mtlosereferencelist = mtLoseReferenceList_prepend (yyvsp[0].mtlosereferencelist, yyvsp[-1].mtlosereference); ; +{ yyval.mtlosereferencelist = mtLoseReferenceList_single (yyvsp[0].mtlosereference); ; break;} case 84: -{ yyval.mtlosereference = mtLoseReference_create (yyvsp[-2].tok, yyvsp[0].mttransferaction); ; +{ yyval.mtlosereferencelist = mtLoseReferenceList_prepend (yyvsp[0].mtlosereferencelist, yyvsp[-1].mtlosereference); ; break;} case 85: -{ yyval.mttransferclauselist = mtTransferClauseList_single (yyvsp[0].mttransferclause); ; +{ yyval.mtlosereference = mtLoseReference_create (yyvsp[-2].tok, yyvsp[0].mttransferaction); ; break;} case 86: -{ yyval.mttransferclauselist = mtTransferClauseList_prepend (yyvsp[0].mttransferclauselist, yyvsp[-1].mttransferclause); ; +{ yyval.mttransferclauselist = mtTransferClauseList_single (yyvsp[0].mttransferclause); ; break;} case 87: -{ yyval.mttransferclause = mtTransferClause_create (yyvsp[-4].tok, yyvsp[-2].tok, yyvsp[0].mttransferaction); ; +{ yyval.mttransferclauselist = mtTransferClauseList_prepend (yyvsp[0].mttransferclauselist, yyvsp[-1].mttransferclause); ; break;} case 88: -{ yyval.mttransferaction = mtTransferAction_createValue (yyvsp[0].tok); ; +{ yyval.mttransferclause = mtTransferClause_create (yyvsp[-4].tok, yyvsp[-2].tok, yyvsp[0].mttransferaction); ; break;} case 89: -{ yyval.mttransferaction = yyvsp[0].mttransferaction; ; +{ yyval.mttransferaction = mtTransferAction_createValue (yyvsp[0].tok); ; break;} case 90: -{ yyval.mttransferaction = mtTransferAction_createError (yyvsp[0].tok); ; +{ yyval.mttransferaction = yyvsp[0].mttransferaction; ; break;} case 91: +{ yyval.mttransferaction = mtTransferAction_createError (yyvsp[0].tok); ; + break;} +case 92: { yyval.mttransferaction = mtTransferAction_createErrorMessage (yyvsp[0].tok); ; break;} } diff --git a/src/mtgrammar.y b/src/mtgrammar.y index 4ccf1f9..11f91fb 100644 --- a/src/mtgrammar.y +++ b/src/mtgrammar.y @@ -80,11 +80,12 @@ static void yyprint (/*FILE *p_file, int p_type, YYSTYPE p_value */); mtTransferAction mttransferaction; mtLoseReferenceList mtlosereferencelist; mtLoseReference mtlosereference; - + pointers pointers; /*@only@*/ cstringList cstringlist; ctype ctyp; /*@only@*/ qtype qtyp; - int count; + qual qual; + qualList quals; } /* Don't forget to enter all tokens in mtscanner.c */ @@ -117,11 +118,11 @@ static void yyprint (/*FILE *p_file, int p_type, YYSTYPE p_value */); %token MT_CHAR MT_INT MT_FLOAT MT_DOUBLE MT_VOID MT_ANYTYPE MT_INTEGRALTYPE MT_UNSIGNEDINTEGRALTYPE %token MT_SIGNEDINTEGRALTYPE -%token MT_CONST MT_VOLATILE +%token MT_CONST MT_VOLATILE MT_RESTRICT %token MT_STRINGLIT %token MT_IDENT -%type pointers +%type pointers %type optType typeSpecifier typeName abstractDecl abstractDeclBase %type typeExpression %type completeType completeTypeAux optCompleteType @@ -148,7 +149,8 @@ static void yyprint (/*FILE *p_file, int p_type, YYSTYPE p_value */); %type declarationNode %type declarationPieces %type valueChoice - +%type innerModsList +%type innerMods %start file @@ -232,18 +234,19 @@ abstractDecl | pointers abstractDeclBase { $$ = ctype_adjustPointers ($1, $2); } pointers - : MT_STAR { $$ = 1; } - | MT_STAR innerModsList { $$ = 1; } - | MT_STAR pointers { $$ = 1 + $2; } - | MT_STAR innerModsList pointers { $$ = 1 + $3; } + : MT_STAR { $$ = pointers_createMt ($1); } + | MT_STAR innerModsList { $$ = pointers_createModsMt ($1, $2); } + | MT_STAR pointers { $$ = pointers_extend (pointers_createMt ($1), $2); } + | MT_STAR innerModsList pointers { $$ = pointers_extend (pointers_createModsMt ($1, $2), $3); } innerMods - : MT_CONST { /* ignored for now */; } - | MT_VOLATILE { ; } + : MT_CONST { $$ = qual_createConst (); } + | MT_VOLATILE { $$ = qual_createVolatile (); } + | MT_RESTRICT { $$ = qual_createRestrict (); } innerModsList - : innerMods { ; } - | innerModsList innerMods { ; } + : innerMods { $$ = qualList_single ($1); } + | innerModsList innerMods { $$ = qualList_add ($1, $2); } abstractDeclBase : MT_LPAREN abstractDecl MT_RPAREN { $$ = ctype_expectFunction ($2); } diff --git a/src/mtscanner.c b/src/mtscanner.c index 5ab2c3e..51af450 100644 --- a/src/mtscanner.c +++ b/src/mtscanner.c @@ -84,6 +84,7 @@ static void mtscanner_initMod (void) cstringTable_insert (tokenTable, cstring_makeLiteral ("signedintegraltype"), MT_SIGNEDINTEGRALTYPE); cstringTable_insert (tokenTable, cstring_makeLiteral ("const"), MT_CONST); cstringTable_insert (tokenTable, cstring_makeLiteral ("volatile"), MT_VOLATILE); + cstringTable_insert (tokenTable, cstring_makeLiteral ("restrict"), MT_RESTRICT); /* ** Punctuation diff --git a/src/qtype.c b/src/qtype.c index 389f0dc..19df773 100644 --- a/src/qtype.c +++ b/src/qtype.c @@ -210,12 +210,15 @@ qtype qtype_newQbase (qtype q1, qtype q2) return q1; } -void qtype_adjustPointers (int n, qtype q) +void qtype_adjustPointers (pointers 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); } # ifndef NOLCL diff --git a/src/qual.c b/src/qual.c index 91359cb..08af30e 100644 --- a/src/qual.c +++ b/src/qual.c @@ -86,80 +86,84 @@ 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_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_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 (""); + } + } + BADEXIT; } diff --git a/src/qualList.c b/src/qualList.c index 5a8c625..39182b6 100644 --- a/src/qualList.c +++ b/src/qualList.c @@ -74,6 +74,13 @@ 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)) diff --git a/src/sort.c b/src/sort.c index bee27a7..cb8193c 100644 --- a/src/sort.c +++ b/src/sort.c @@ -677,18 +677,16 @@ sort_makePtr (ltoken t, sort baseSort) } sort -sort_makePtrN (sort s, int pointers) +sort_makePtrN (sort s, pointers p) { - llassert (pointers >= 0); - - if (pointers == 0) + if (pointers_isUndefined (p)) { return s; } else { return sort_makePtrN (sort_makePtr (ltoken_undefined, s), - pointers - 1); + pointers_getRest (p)); } } diff --git a/src/usymtab_interface.c b/src/usymtab_interface.c index d300f85..62bc37d 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 (n->pointers > 0) + if (pointers_isDefined (n->pointers)) { qtype_adjustPointers (n->pointers, result); } diff --git a/test/Makefile.am b/test/Makefile.am index 41892ec..a96678f 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -493,13 +493,14 @@ 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 42 + -$(SPLINTR) libs.c +strictlib +globunspec +modunspec -expect 44 .PHONY: lintcomments lintcomments: diff --git a/test/Makefile.in b/test/Makefile.in index 6f793f4..de41dde 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -1317,13 +1317,14 @@ 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 42 + -$(SPLINTR) libs.c +strictlib +globunspec +modunspec -expect 44 .PHONY: lintcomments lintcomments: diff --git a/test/ansireserved.expect b/test/ansireserved.expect index 33a2767..283e89a 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:1154:1: Specification of srand as function: + load file standard.lcd: 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:1176:1: Specification of labs as function: + load file standard.lcd: 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 dafec7b..cf203e4 100644 --- a/test/db1.expect +++ b/test/db1.expect @@ -2,6 +2,9 @@ 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) @@ -34,9 +37,17 @@ 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 --- 16 code warnings, as expected +Finished checking --- 21 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 . @@ -83,6 +94,8 @@ 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) @@ -541,10 +554,16 @@ 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... @@ -553,6 +572,8 @@ 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) @@ -653,7 +674,8 @@ type 1 0 enumindex 24 0 enumint 15 0 matchanyintegral 2 0 +bufferoverflowhigh 5 0 ======== ========= -Total 333 73 +Total 338 73 -Finished checking --- 333 code warnings, as expected +Finished checking --- 338 code warnings, as expected diff --git a/test/db1/Makefile b/test/db1/Makefile index 62d52df..17a6756 100644 --- a/test/db1/Makefile +++ b/test/db1/Makefile @@ -26,8 +26,10 @@ test: ### check: $(LCSFILES) - -$(SPLINT) -showcol -weak $(MODULES) -expect 16 - -$(SPLINT) -showcol +strict -modfilesystem +showsummary $(MODULES) -expect 333 + -$(SPLINT) -showcol -weak $(MODULES) -expect 21 + -$(SPLINT) -showcol +strict -modfilesystem +showsummary $(MODULES) -expect 338 + +# evans 2002-07-09: 5 bufferoverflowhigh warnings for using sprintf ### The following rules generate .lh and .lcs files from .lcl files. They also ### ensure that .h files appear to be updated whenever the corresponding .lh diff --git a/test/db2/Makefile b/test/db2/Makefile index ba21024..a21ec6c 100644 --- a/test/db2/Makefile +++ b/test/db2/Makefile @@ -22,9 +22,11 @@ test: $(MAKE) -e check check: $(LCSFILES) - -$(SPLINT) -exportlocal -showcol -allimponly -macrovarprefixexclude $(MODULES) -expect 15 - -$(SPLINT) -exportlocal -showcol +allimponly $(MODULES) -expect 25 - -$(SPLINT) -exportlocal -showcol -memchecks -macrovarprefixexclude $(MODULES) + -$(SPLINT) -exportlocal -showcol -allimponly -macrovarprefixexclude $(MODULES) -bufferoverflowhigh -expect 15 + -$(SPLINT) -exportlocal -showcol +allimponly $(MODULES) -bufferoverflowhigh -expect 25 + -$(SPLINT) -exportlocal -showcol -memchecks -macrovarprefixexclude -bufferoverflowhigh $(MODULES) + +# evans 2002-07-09: added bufferoverflowhigh flags to suppress sprintf warnings ### The following rules generate .lh and .lcs files from .lcl files. They also ### ensure that .h files appear to be updated whenever the corresponding .lh diff --git a/test/db3.expect b/test/db3.expect index c5f1962..e75ef50 100644 --- a/test/db3.expect +++ b/test/db3.expect @@ -1,4 +1,16 @@ +employee.c: (in function employee_sprint) +employee.c:38: Buffer overflow possible with sprintf. Recommend using snprintf + instead: sprintf +drive.c: (in function main) +drive.c:50: Buffer overflow possible with sprintf. Recommend using snprintf + instead: sprintf +drive.c:66: Buffer overflow possible with sprintf. Recommend using snprintf + instead: sprintf +drive.c:84: Buffer overflow possible with sprintf. Recommend using snprintf + instead: sprintf +drive.c:138: Buffer overflow possible with sprintf. Recommend using snprintf + instead: sprintf Error Type Reported Suppressed =================== ======== ========= @@ -9,11 +21,15 @@ formalarray 0 24 modfilesys 0 25 redecl 0 7 exporttype 0 3 +bufferoverflowhigh 5 0 ======== ========= -Total 0 64 +Total 5 64 -Finished checking --- no warnings +Finished checking --- 5 code warnings, as expected +employee.c: (in function employee_sprint) +employee.c:38: Buffer overflow possible with sprintf. Recommend using snprintf + instead: sprintf eref.c: (in function eref_alloc) eref.c:36: Called procedure printf may access global stdout eref.c:36: Undocumented modification of *stdout possible from call to printf: @@ -65,14 +81,20 @@ drive.c:41: Called procedure printf may access global stdout drive.c:41: Undocumented modification of *stdout possible from call to printf: printf("Size should be 0.\n") drive.c:41: Return value (type int) ignored: printf("Size sho... +drive.c:50: Buffer overflow possible with sprintf. Recommend using snprintf + instead: sprintf drive.c:57: Called procedure printf may access global stdout drive.c:57: Undocumented modification of *stdout possible from call to printf: printf("Size should be 500.\n") drive.c:57: Return value (type int) ignored: printf("Size sho... +drive.c:66: Buffer overflow possible with sprintf. Recommend using snprintf + instead: sprintf drive.c:73: Called procedure printf may access global stdout drive.c:73: Undocumented modification of *stdout possible from call to printf: printf("Size should be 250.\n") drive.c:73: Return value (type int) ignored: printf("Size sho... +drive.c:84: Buffer overflow possible with sprintf. Recommend using snprintf + instead: sprintf drive.c:93: Called procedure printf may access global stdout drive.c:93: Undocumented modification of *stdout possible from call to printf: printf("Size should be 350.\n") @@ -89,6 +111,8 @@ drive.c:109: Called procedure printf may access global stdout drive.c:109: Undocumented modification of *stdout possible from call to printf: printf("%s\n", &(na[0])) drive.c:109: Return value (type int) ignored: printf("%s\n", &... +drive.c:138: Buffer overflow possible with sprintf. Recommend using snprintf + instead: sprintf drive.c:151: Called procedure printf may access global stdout drive.c:151: Undocumented modification of *stdout possible from call to printf: printf("Should print true: %s\n", bool_unparse(status == DBS_DUPLERR)) @@ -139,7 +163,8 @@ globs 26 0 retvalint 25 0 redecl 0 7 exporttype 0 3 +bufferoverflowhigh 5 0 ======== ========= -Total 77 64 +Total 82 64 -Finished checking --- 77 code warnings, as expected +Finished checking --- 82 code warnings, as expected diff --git a/test/db3/Makefile b/test/db3/Makefile index 48118f8..123f9cd 100644 --- a/test/db3/Makefile +++ b/test/db3/Makefile @@ -23,8 +23,10 @@ test: ### Note there is a .splint file used for checking! check: $(LCSFILES) - -$(SPLINTF) -showcol $(MODULES) +strict -modfilesystem +showsummary -exportconstant -exportlocal -protoparamprefix p_ - -$(SPLINTF) -showcol $(MODULES) +strict -modfilesystem +showsummary -exportconstant -exportlocal -protoparamprefix p_ +strictlib -expect 77 + -$(SPLINTF) -showcol $(MODULES) +strict -modfilesystem +showsummary -exportconstant -exportlocal -protoparamprefix p_ -expect 5 + -$(SPLINTF) -showcol $(MODULES) +strict -modfilesystem +showsummary -exportconstant -exportlocal -protoparamprefix p_ +strictlib -expect 82 + +# evans 2002-07-09: 5 new sprintf warnings ### The following rules generate .lh and .lcs files from .lcl files. They also diff --git a/test/external.expect b/test/external.expect index ecdcf74..0e27f8c 100644 --- a/test/external.expect +++ b/test/external.expect @@ -42,11 +42,11 @@ external.c:5:5: External identifier small2 is not distinguishable from small1 external.c:4:5: Declaration of small1 external.c:7:5: External identifier longfunction1 is not distinguishable from LONG_MAX in the first 3 characters because alphabetical case is ignored - load file standard.lcd:951:1: Specification of LONG_MAX + load file standard.lcd: Specification of LONG_MAX One or more additional indistinguishable external names not reported external.c:8:5: External identifier longfunction2 is not distinguishable from LONG_MAX in the first 3 characters because alphabetical case is ignored - load file standard.lcd:951:1: Specification of LONG_MAX + load file standard.lcd: Specification of LONG_MAX One or more additional indistinguishable external names not reported Finished checking --- 4 code warnings, as expected diff --git a/test/libs.expect b/test/libs.expect index 449517e..2d0a75c 100644 --- a/test/libs.expect +++ b/test/libs.expect @@ -154,8 +154,11 @@ libs.c:33:7: Undocumented modification of *f possible from call to fgetc: libs.c:33:7: Undocumented modification of errno possible from call to fgetc: fgetc(f) libs.c:33:3: Assignment of int to char: c = fgetc(f) +libs.c:34:7: Called procedure getc may access global errno libs.c:34:7: Undocumented modification of *f possible from call to getc: getc(f) +libs.c:34:7: Undocumented modification of errno possible from call to getc: + getc(f) libs.c:34:3: Assignment of int to char: c = getc(f) libs.c: (in function main) libs.c:46:44: Function bsearch expects arg 4 to be size_t gets [function (int, @@ -193,4 +196,4 @@ libs.c:55:3: Undocumented modification of errno possible from call to signal: libs.c:55:3: Return value (type [function (int) returns void]) ignored: signal(SIGHUP, l... -Finished checking --- 42 code warnings, as expected +Finished checking --- 44 code warnings, as expected diff --git a/test/tainted.expect b/test/tainted.expect index 14a6358..3b43d1f 100644 --- a/test/tainted.expect +++ b/test/tainted.expect @@ -99,13 +99,19 @@ taintedimplicit.c:17:18: Invalid transfer from tainted [result of taintme] to Finished checking --- 1 code warning, as expected sprintf.c: (in function sp) +sprintf.c:7:3: Buffer overflow possible with sprintf. Recommend using snprintf + instead: sprintf +sprintf.c:10:3: Buffer overflow possible with sprintf. Recommend using + snprintf instead: sprintf sprintf.c:11:18: Invalid transfer from tainted s to untainted (Possibly tainted storage used as untainted.): system(..., s, ...) sprintf.c:10:37: s becomes tainted tainted.xh:26:55: s1 becomes untainted +sprintf.c:13:3: Buffer overflow possible with sprintf. Recommend using + snprintf instead: sprintf sprintf.c:14:18: Invalid transfer from tainted s to untainted (Possibly tainted storage used as untainted.): system(..., s, ...) sprintf.c:13:61: s becomes tainted tainted.xh:26:55: s1 becomes untainted -Finished checking --- 2 code warnings, as expected +Finished checking --- 5 code warnings, as expected diff --git a/test/tainted/Makefile b/test/tainted/Makefile index b0cb379..8ae5ab1 100644 --- a/test/tainted/Makefile +++ b/test/tainted/Makefile @@ -13,4 +13,6 @@ tainted: -${SPLINT} -mts tainted tainted5.c -mustfree -exportlocal -${SPLINT} -mts tainted taintedmerge.c -mustfree -exportlocal -expect 3 -${SPLINT} -mts tainted taintedimplicit.c -mustfree -exportlocal -expect 1 - -${SPLINT} -mts tainted sprintf.c -expect 2 + -${SPLINT} -mts tainted sprintf.c -expect 5 + +# evans 2002-07-09: 3 more warnings for sprintf because of sprintf diff --git a/test/tests2.2.expect b/test/tests2.2.expect index e56aa88..70d2a03 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:1218:1: Specification of struct tm + load file standard.lcd: Specification of struct tm decl.c:3:17: Field tm_sec in specified corresponds to x in declaration - load file standard.lcd:803:1: Specification of tm_sec + load file standard.lcd: Specification of tm_sec Finished checking --- 1 code warning, as expected -- 2.45.2