diff options
author | Haibo Huang <hhb@google.com> | 2020-02-07 20:33:46 -0800 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2020-02-10 12:16:48 -0800 |
commit | 69b38a7b2d0138fe1cd8275389148ab8da472fef (patch) | |
tree | f309d66d506395d55429260920ae60c0e6eba76a | |
parent | 2b2ca9f3fb281122e14253c2d58b88e3e3ee3335 (diff) | |
parent | e9c99065fd31253a4db4a6bce673decd143f7a3e (diff) | |
download | one-true-awk-69b38a7b2d0138fe1cd8275389148ab8da472fef.tar.gz |
Upgrade one-true-awk to e9c99065fd31253a4db4a6bce673decd143f7a3e
Test: None
Change-Id: I1deb6d8c9e61f129ee3cfe324eea796a5dc7b0c8
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | FIXES | 30 | ||||
-rw-r--r-- | METADATA | 6 | ||||
-rw-r--r-- | README.md | 14 | ||||
-rw-r--r-- | TODO | 19 | ||||
-rw-r--r-- | awk.1 | 10 | ||||
-rw-r--r-- | awk.h | 3 | ||||
-rw-r--r-- | awkgram.y | 2 | ||||
-rw-r--r-- | b.c | 16 | ||||
-rw-r--r-- | lex.c | 17 | ||||
-rw-r--r-- | lib.c | 29 | ||||
-rw-r--r-- | main.c | 2 | ||||
-rw-r--r-- | maketab.c | 8 | ||||
-rw-r--r-- | proctab.c | 150 | ||||
-rw-r--r-- | proto.h | 10 | ||||
-rw-r--r-- | run.c | 315 | ||||
-rwxr-xr-x | testdir/T.builtin | 8 | ||||
-rwxr-xr-x | testdir/T.csconcat (renamed from testdir/T.concat) | 4 | ||||
-rwxr-xr-x | testdir/T.int-expr | 42 | ||||
-rwxr-xr-x | testdir/T.misc | 7 | ||||
-rw-r--r-- | tran.c | 13 | ||||
-rw-r--r-- | ytab.c | 2700 | ||||
-rw-r--r-- | ytab.h | 308 |
23 files changed, 1979 insertions, 1739 deletions
@@ -1,3 +1,8 @@ +2020-01-20 Arnold D. Robbins <arnold@skeeve.com> + + * run.c (openfile): Set the close-on-exec flag for file + and pipe redirections that aren't stdin/stdout/stderr. + 2020-01-06 Arnold D. Robbins <arnold@skeeve.com> Minor fixes. @@ -25,6 +25,30 @@ THIS SOFTWARE. This file lists all bug fixes, changes, etc., made since the AWK book was sent to the printers in August, 1987. +February 6, 2020: + Additional small cleanups from Christos Zoulas. awk is now + a little more robust about reporting I/O errors upon exit. + +January 31, 2020: + Merge PR #70, which avoids use of variable length arrays. Thanks + to GitHub user michaelforney. Fix issue #60 ({0} in interval + expressions doesn't work). Also get all tests working again. + Thanks to Arnold Robbins. + +January 24, 2020: + A number of small cleanups from Christos Zoulas. Add the close + on exec flag to files/pipes opened for redirection; courtesy of + Arnold Robbins. + +January 19, 2020: + If POSIXLY_CORRECT is set in the environment, then sub and gsub + use POSIX rules for multiple backslashes. This fixes Issue #66, + while maintaining backwards compatibility. + +January 9, 2020: + Input/output errors on closing files are now fatal instead of + mere warnings. Thanks to Martijn Dekker <martijn@inlv.org>. + January 5, 2020: Fix a bug in the concatentation of two string constants into one done in the grammar. Fixes GitHub issue #61. Thanks @@ -63,13 +87,13 @@ October 25, 2019: October 24, 2019: Import second round of code cleanups from NetBSD. Much thanks - to Christos Zoulas (Github user zoulasc). Merges PR 53. + to Christos Zoulas (GitHub user zoulasc). Merges PR 53. Add an optimization for string concatenation, also from Christos. October 17, 2019: Import code cleanups from NetBSD. Much thanks to Christos - Zoulas (Github user zoulasc). Merges PR 51. + Zoulas (GitHub user zoulasc). Merges PR 51. October 6, 2019: Import code from NetBSD awk that implements RS as a regular @@ -77,7 +101,7 @@ October 6, 2019: September 10, 2019: Fixes for various array / memory overruns found via gcc's - -fsanitize=unknown. Thanks to Alexander Richardson (Github + -fsanitize=unknown. Thanks to Alexander Richardson (GitHub user arichardson). Merges PRs 47 and 48. July 28, 2019: @@ -5,11 +5,11 @@ third_party { type: GIT value: "https://github.com/onetrueawk/awk.git" } - version: "944989bf683d30f306d8f29a3eb8c68c7c603fb4" + version: "e9c99065fd31253a4db4a6bce673decd143f7a3e" license_type: NOTICE last_upgrade_date { year: 2020 - month: 1 - day: 8 + month: 2 + day: 7 } } @@ -42,7 +42,19 @@ Thanks. ## Submitting Pull Requests -Pull requests are welcome. However, please create them with a request +Pull requests are welcome. Some guidelines: + +* Please do not use functions or facilities that are not standard (e.g., +`strlcpy()`, `fpurge()`). + +* Please run the test suite and make sure that your changes pass before +posting the pull request. To do so: + + 1. Save the previous version of `awk` somewhere in your path. Call it `nawk` (for example). + 1. Run `oldawk=nawk make check > check.out 2>&1`. + 1. Search for `BAD` or `error` in the result. In general, look over it manually to make sure there are no errors. + +* Please create the pull request with a request to merge into the `staging` branch instead of into the `master` branch. This allows us to do testing, and to make any additional edits or changes after the merge but before merging to `master`. @@ -0,0 +1,19 @@ +Wed Jan 22 02:10:35 MST 2020 +============================ + +Here are some things that it'd be nice to have volunteer +help on. + +1. Rework the test suite so that it's easier to maintain +and see exactly which tests fail: + A. Extract beebe.tar into separate file and update scripts + B. Split apart multiple tests into separate tests with input + and "ok" files for comparisons. + +2. Pull in more of the tests from gawk that only test standard features. + The beebe.tar file appears to be from sometime in the 1990s. + +3. Make the One True Awk valgrind clean. In particular add a + a test suite target that runs valgrind on all the tests and + reports if there are any definite losses or any invalid reads + or writes (similar to gawk's test of this nature). @@ -502,6 +502,16 @@ functions may be called recursively. Parameters are local to the function; all other variables are global. Thus local variables may be created by providing excess parameters in the function definition. +.SH ENVIRONMENT VARIABLES +If +.B POSIXLY_CORRECT +is set in the environment, then +.I awk +follows the POSIX rules for +.B sub +and +.B gsub +with respect to consecutive backslashes and ampersands. .SH EXAMPLES .TP .EX @@ -60,6 +60,7 @@ extern bool safe; /* false => unsafe, true => safe */ #define RECSIZE (8 * 1024) /* sets limit on records, fields, etc., etc. */ extern int recsize; /* size of current record, orig RECSIZE */ +extern char EMPTY[]; /* this avoid -Wwritable-strings issues */ extern char **FS; extern char **RS; extern char **ORS; @@ -78,8 +79,6 @@ extern int lineno; /* line number in awk program */ extern int errorflag; /* 1 if error has occurred */ extern bool donefld; /* true if record broken into fields */ extern bool donerec; /* true if record is valid (no fld has changed */ -extern char inputFS[]; /* FS at time of input, for field splitting */ - extern int dbg; extern const char *patbeg; /* beginning of pattern matched */ @@ -50,7 +50,7 @@ Node *arglist = 0; /* list of args for current function */ %token <i> NL ',' '{' '(' '|' ';' '/' ')' '}' '[' ']' %token <i> ARRAY %token <i> MATCH NOTMATCH MATCHOP -%token <i> FINAL DOT ALL CCL NCCL CHAR OR STAR QUEST PLUS EMPTYRE +%token <i> FINAL DOT ALL CCL NCCL CHAR OR STAR QUEST PLUS EMPTYRE ZERO %token <i> AND BOR APPEND EQ GE GT LE LT NE IN %token <i> ARG BLTIN BREAK CLOSE CONTINUE DELETE DO EXIT FOR FUNC %token <i> SUB GSUB IF INDEX LSUBSTR MATCHFCN NEXT NEXTFILE @@ -263,6 +263,8 @@ void penter(Node *p) /* set up parent pointers and leaf indices */ parent(left(p)) = p; parent(right(p)) = p; break; + case ZERO: + break; default: /* can't happen */ FATAL("can't happen: unknown type %d in penter", type(p)); break; @@ -277,6 +279,7 @@ void freetr(Node *p) /* free parse tree */ xfree(p); break; UNARY + case ZERO: freetr(left(p)); xfree(p); break; @@ -436,6 +439,8 @@ void cfoll(fa *f, Node *v) /* enter follow set of each leaf of vertex v into lfo cfoll(f,left(v)); cfoll(f,right(v)); break; + case ZERO: + break; default: /* can't happen */ FATAL("can't happen: unknown type %d in cfoll", type(v)); } @@ -479,6 +484,8 @@ int first(Node *p) /* collects initially active leaves of p into setvec */ b = first(right(p)); if (first(left(p)) == 0 || b == 0) return(0); return(1); + case ZERO: + return 0; } FATAL("can't happen: unknown type %d in first", type(p)); /* can't happen */ return(-1); @@ -838,6 +845,9 @@ Node *unary(Node *np) case QUEST: rtok = relex(); return (unary(op2(QUEST, np, NIL))); + case ZERO: + rtok = relex(); + return (unary(op2(ZERO, np, NIL))); default: return (np); } @@ -873,7 +883,7 @@ int (xisblank)(int c) #endif -struct charclass { +static const struct charclass { const char *cc_name; int cc_namelen; int (*cc_func)(int); @@ -1017,7 +1027,7 @@ int relex(void) /* lexical analyzer for reparse */ static uschar *buf = NULL; static int bufsz = 100; uschar *bp; - struct charclass *cc; + const struct charclass *cc; int i; int num, m; bool commafound, digitfound; @@ -1191,7 +1201,7 @@ rescan: if (repeat(starttok, prestr-starttok, lastatom, startreptok - lastatom, n, m) > 0) { if (n == 0 && m == 0) { - return EMPTYRE; + return ZERO; } /* must rescan input for next token */ goto rescan; @@ -43,7 +43,7 @@ typedef struct Keyword { int type; } Keyword; -Keyword keywords[] ={ /* keep sorted: binary searched */ +const Keyword keywords[] = { /* keep sorted: binary searched */ { "BEGIN", XBEGIN, XBEGIN }, { "END", XEND, XEND }, { "NF", VARNF, VARNF }, @@ -91,14 +91,14 @@ Keyword keywords[] ={ /* keep sorted: binary searched */ #define RET(x) { if(dbg)printf("lex %s\n", tokname(x)); return(x); } -int peek(void) +static int peek(void) { int c = input(); unput(c); return c; } -int gettok(char **pbuf, int *psz) /* get next input token */ +static int gettok(char **pbuf, int *psz) /* get next input token */ { int c, retc; char *buf = *pbuf; @@ -210,6 +210,11 @@ int yylex(void) while ((c = input()) != '\n' && c != 0) ; unput(c); + /* + * Next line is a hack, itcompensates for + * unput's treatment of \n. + */ + lineno++; break; case ';': RET(';'); @@ -440,7 +445,7 @@ int string(void) } -int binsearch(char *w, Keyword *kp, int n) +static int binsearch(char *w, const Keyword *kp, int n) { int cond, low, mid, high; @@ -460,7 +465,7 @@ int binsearch(char *w, Keyword *kp, int n) int word(char *w) { - Keyword *kp; + const Keyword *kp; int c, n; n = binsearch(w, keywords, sizeof(keywords)/sizeof(keywords[0])); @@ -572,6 +577,8 @@ int input(void) /* get next lexical input character */ void unput(int c) /* put lexical character back on input */ { + if (c == '\n') + lineno--; if (yysptr >= yysbuf + sizeof(yysbuf)) FATAL("pushed back too much: %.20s...", yysbuf); *yysptr++ = c; @@ -29,18 +29,21 @@ THIS SOFTWARE. #include <errno.h> #include <stdlib.h> #include <stdarg.h> +#include <limits.h> #include "awk.h" #include "ytab.h" +char EMPTY[] = { '\0' }; FILE *infile = NULL; -char *file = ""; +char *file = EMPTY; char *record; int recsize = RECSIZE; char *fields; int fieldssize = RECSIZE; Cell **fldtab; /* pointers to Cells */ -char inputFS[100] = " "; +static size_t len_inputFS = 0; +static char *inputFS = NULL; /* FS at time of input, for field splitting */ #define MAXFLD 2 int nfields = MAXFLD; /* last allocated slot for $i */ @@ -52,8 +55,8 @@ int lastfld = 0; /* last used field */ int argno = 1; /* current input argument number */ extern Awkfloat *ARGC; -static Cell dollar0 = { OCELL, CFLD, NULL, "", 0.0, REC|STR|DONTFREE }; -static Cell dollar1 = { OCELL, CFLD, NULL, "", 0.0, FLD|STR|DONTFREE }; +static Cell dollar0 = { OCELL, CFLD, NULL, EMPTY, 0.0, REC|STR|DONTFREE }; +static Cell dollar1 = { OCELL, CFLD, NULL, EMPTY, 0.0, FLD|STR|DONTFREE }; void recinit(unsigned int n) { @@ -116,9 +119,17 @@ void initgetrec(void) */ void savefs(void) { - if (strlen(getsval(fsloc)) >= sizeof (inputFS)) + size_t len; + if ((len = strlen(getsval(fsloc))) < len_inputFS) { + strcpy(inputFS, *FS); /* for subsequent field splitting */ + return; + } + + len_inputFS = len + 1; + inputFS = realloc(inputFS, len_inputFS); + if (inputFS == NULL) FATAL("field separator %.10s... is too long", *FS); - strcpy(inputFS, *FS); + memcpy(inputFS, *FS, len_inputFS); } static bool firsttime = true; @@ -333,14 +344,14 @@ void fldbld(void) /* create fields from current record */ *fr = 0; } else if ((sep = *inputFS) == 0) { /* new: FS="" => 1 char/field */ for (i = 0; *r != '\0'; r += n) { - char buf[MB_CUR_MAX + 1]; + char buf[MB_LEN_MAX + 1]; i++; if (i > nfields) growfldtab(i); if (freeable(fldtab[i])) xfree(fldtab[i]->sval); - n = mblen(r, MB_CUR_MAX); + n = mblen(r, MB_LEN_MAX); if (n < 0) n = 1; memcpy(buf, r, n); @@ -404,7 +415,7 @@ void cleanfld(int n1, int n2) /* clean out fields n1 .. n2 inclusive */ p = fldtab[i]; if (freeable(p)) xfree(p->sval); - p->sval = ""; + p->sval = EMPTY, p->tval = FLD | STR | DONTFREE; } } @@ -22,7 +22,7 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************************************************/ -const char *version = "version 20200105"; +const char *version = "version 20200206"; #define DEBUG #include <stdio.h> @@ -122,8 +122,6 @@ int main(int argc, char *argv[]) printf("#include <stdio.h>\n"); printf("#include \"awk.h\"\n"); printf("#include \"ytab.h\"\n\n"); - for (i = SIZE; --i >= 0; ) - names[i] = ""; if (argc != 2) { fprintf(stderr, "usage: maketab YTAB_H\n"); @@ -160,10 +158,8 @@ int main(int argc, char *argv[]) table[p->token-FIRSTTOKEN] = p->name; printf("\nCell *(*proctab[%d])(Node **, int) = {\n", SIZE); for (i=0; i<SIZE; i++) - if (table[i]==NULL) - printf("\tnullproc,\t/* %s */\n", names[i]); - else - printf("\t%s,\t/* %s */\n", table[i], names[i]); + printf("\t%s,\t/* %s */\n", + table[i] ? table[i] : "nullproc", names[i] ? names[i] : ""); printf("};\n\n"); printf("const char *tokname(int n)\n"); /* print a tokname() function */ @@ -2,7 +2,7 @@ #include "awk.h" #include "ytab.h" -static const char * const printname[94] = { +static const char * const printname[95] = { "FIRSTTOKEN", /* 258 */ "PROGRAM", /* 259 */ "PASTAT", /* 260 */ @@ -25,82 +25,83 @@ static const char * const printname[94] = { "QUEST", /* 277 */ "PLUS", /* 278 */ "EMPTYRE", /* 279 */ - "AND", /* 280 */ - "BOR", /* 281 */ - "APPEND", /* 282 */ - "EQ", /* 283 */ - "GE", /* 284 */ - "GT", /* 285 */ - "LE", /* 286 */ - "LT", /* 287 */ - "NE", /* 288 */ - "IN", /* 289 */ - "ARG", /* 290 */ - "BLTIN", /* 291 */ - "BREAK", /* 292 */ - "CLOSE", /* 293 */ - "CONTINUE", /* 294 */ - "DELETE", /* 295 */ - "DO", /* 296 */ - "EXIT", /* 297 */ - "FOR", /* 298 */ - "FUNC", /* 299 */ - "SUB", /* 300 */ - "GSUB", /* 301 */ - "IF", /* 302 */ - "INDEX", /* 303 */ - "LSUBSTR", /* 304 */ - "MATCHFCN", /* 305 */ - "NEXT", /* 306 */ - "NEXTFILE", /* 307 */ - "ADD", /* 308 */ - "MINUS", /* 309 */ - "MULT", /* 310 */ - "DIVIDE", /* 311 */ - "MOD", /* 312 */ - "ASSIGN", /* 313 */ - "ASGNOP", /* 314 */ - "ADDEQ", /* 315 */ - "SUBEQ", /* 316 */ - "MULTEQ", /* 317 */ - "DIVEQ", /* 318 */ - "MODEQ", /* 319 */ - "POWEQ", /* 320 */ - "PRINT", /* 321 */ - "PRINTF", /* 322 */ - "SPRINTF", /* 323 */ - "ELSE", /* 324 */ - "INTEST", /* 325 */ - "CONDEXPR", /* 326 */ - "POSTINCR", /* 327 */ - "PREINCR", /* 328 */ - "POSTDECR", /* 329 */ - "PREDECR", /* 330 */ - "VAR", /* 331 */ - "IVAR", /* 332 */ - "VARNF", /* 333 */ - "CALL", /* 334 */ - "NUMBER", /* 335 */ - "STRING", /* 336 */ - "REGEXPR", /* 337 */ - "GETLINE", /* 338 */ - "RETURN", /* 339 */ - "SPLIT", /* 340 */ - "SUBSTR", /* 341 */ - "WHILE", /* 342 */ - "CAT", /* 343 */ - "NOT", /* 344 */ - "UMINUS", /* 345 */ - "UPLUS", /* 346 */ - "POWER", /* 347 */ - "DECR", /* 348 */ - "INCR", /* 349 */ - "INDIRECT", /* 350 */ - "LASTTOKEN", /* 351 */ + "ZERO", /* 280 */ + "AND", /* 281 */ + "BOR", /* 282 */ + "APPEND", /* 283 */ + "EQ", /* 284 */ + "GE", /* 285 */ + "GT", /* 286 */ + "LE", /* 287 */ + "LT", /* 288 */ + "NE", /* 289 */ + "IN", /* 290 */ + "ARG", /* 291 */ + "BLTIN", /* 292 */ + "BREAK", /* 293 */ + "CLOSE", /* 294 */ + "CONTINUE", /* 295 */ + "DELETE", /* 296 */ + "DO", /* 297 */ + "EXIT", /* 298 */ + "FOR", /* 299 */ + "FUNC", /* 300 */ + "SUB", /* 301 */ + "GSUB", /* 302 */ + "IF", /* 303 */ + "INDEX", /* 304 */ + "LSUBSTR", /* 305 */ + "MATCHFCN", /* 306 */ + "NEXT", /* 307 */ + "NEXTFILE", /* 308 */ + "ADD", /* 309 */ + "MINUS", /* 310 */ + "MULT", /* 311 */ + "DIVIDE", /* 312 */ + "MOD", /* 313 */ + "ASSIGN", /* 314 */ + "ASGNOP", /* 315 */ + "ADDEQ", /* 316 */ + "SUBEQ", /* 317 */ + "MULTEQ", /* 318 */ + "DIVEQ", /* 319 */ + "MODEQ", /* 320 */ + "POWEQ", /* 321 */ + "PRINT", /* 322 */ + "PRINTF", /* 323 */ + "SPRINTF", /* 324 */ + "ELSE", /* 325 */ + "INTEST", /* 326 */ + "CONDEXPR", /* 327 */ + "POSTINCR", /* 328 */ + "PREINCR", /* 329 */ + "POSTDECR", /* 330 */ + "PREDECR", /* 331 */ + "VAR", /* 332 */ + "IVAR", /* 333 */ + "VARNF", /* 334 */ + "CALL", /* 335 */ + "NUMBER", /* 336 */ + "STRING", /* 337 */ + "REGEXPR", /* 338 */ + "GETLINE", /* 339 */ + "RETURN", /* 340 */ + "SPLIT", /* 341 */ + "SUBSTR", /* 342 */ + "WHILE", /* 343 */ + "CAT", /* 344 */ + "NOT", /* 345 */ + "UMINUS", /* 346 */ + "UPLUS", /* 347 */ + "POWER", /* 348 */ + "DECR", /* 349 */ + "INCR", /* 350 */ + "INDIRECT", /* 351 */ + "LASTTOKEN", /* 352 */ }; -Cell *(*proctab[94])(Node **, int) = { +Cell *(*proctab[95])(Node **, int) = { nullproc, /* FIRSTTOKEN */ program, /* PROGRAM */ pastat, /* PASTAT */ @@ -123,6 +124,7 @@ Cell *(*proctab[94])(Node **, int) = { nullproc, /* QUEST */ nullproc, /* PLUS */ nullproc, /* EMPTYRE */ + nullproc, /* ZERO */ boolop, /* AND */ boolop, /* BOR */ nullproc, /* APPEND */ @@ -111,6 +111,7 @@ extern double getfval(Cell *); extern char *getsval(Cell *); extern char *getpssval(Cell *); /* for print */ extern char *tostring(const char *); +extern char *tostringN(const char *, size_t); extern char *qstring(const char *, int); extern Cell *catstr(Cell *, Cell *); @@ -135,9 +136,12 @@ extern void yyerror(const char *); extern void fpecatch(int); extern void bracecheck(void); extern void bcheck2(int, int, int); -extern void SYNTAX(const char *, ...); -extern void FATAL(const char *, ...) __attribute__((__noreturn__)); -extern void WARNING(const char *, ...); +extern void SYNTAX(const char *, ...) + __attribute__((__format__(__printf__, 1, 2))); +extern void FATAL(const char *, ...) + __attribute__((__format__(__printf__, 1, 2), __noreturn__)); +extern void WARNING(const char *, ...) + __attribute__((__format__(__printf__, 1, 2))); extern void error(void); extern void eprint(void); extern void bclass(int); @@ -25,6 +25,9 @@ THIS SOFTWARE. #define DEBUG #include <stdio.h> #include <ctype.h> +#include <wchar.h> +#include <wctype.h> +#include <fcntl.h> #include <setjmp.h> #include <limits.h> #include <math.h> @@ -36,11 +39,12 @@ THIS SOFTWARE. #include "awk.h" #include "ytab.h" -#define tempfree(x) if (istemp(x)) tfree(x); else - -/* -#undef tempfree +static void stdinit(void); +static void flush_all(void); +#if 1 +#define tempfree(x) do { if (istemp(x)) tfree(x); } while (/*CONSTCOND*/0) +#else void tempfree(Cell *p) { if (p->ctype == OCELL && (p->csub < CUNK || p->csub > CFREE)) { WARNING("bad csub %d in Cell %d %s", @@ -49,7 +53,7 @@ void tempfree(Cell *p) { if (istemp(p)) tfree(p); } -*/ +#endif /* do we really need these? */ /* #ifdef _NFILE */ @@ -89,7 +93,7 @@ static Cell exitcell ={ OJUMP, JEXIT, 0, 0, 0.0, NUM, NULL }; Cell *jexit = &exitcell; static Cell retcell ={ OJUMP, JRET, 0, 0, 0.0, NUM, NULL }; Cell *jret = &retcell; -static Cell tempcell ={ OCELL, CTEMP, 0, "", 0.0, NUM|STR|DONTFREE, NULL }; +static Cell tempcell ={ OCELL, CTEMP, 0, EMPTY, 0.0, NUM|STR|DONTFREE, NULL }; Node *curnode = NULL; /* the node being executed, for debugging */ @@ -130,7 +134,6 @@ int adjbuf(char **pbuf, int *psiz, int minlen, int quantum, char **pbptr, void run(Node *a) /* execution of parse tree starts here */ { - extern void stdinit(void); stdinit(); execute(a); @@ -219,11 +222,11 @@ struct Frame { /* stack frame for awk function calls */ struct Frame *frame = NULL; /* base of stack frames; dynamically allocated */ int nframe = 0; /* number of frames allocated */ -struct Frame *fp = NULL; /* frame pointer. bottom level unused */ +struct Frame *frp = NULL; /* frame pointer. bottom level unused */ Cell *call(Node **a, int n) /* function call. very kludgy and fragile */ { - static Cell newcopycell = { OCELL, CCOPY, 0, "", 0.0, NUM|STR|DONTFREE, NULL }; + static const Cell newcopycell = { OCELL, CCOPY, 0, EMPTY, 0.0, NUM|STR|DONTFREE, NULL }; int i, ncall, ndef; int freed = 0; /* handles potential double freeing when fcn & param share a tempcell */ Node *x; @@ -236,21 +239,21 @@ Cell *call(Node **a, int n) /* function call. very kludgy and fragile */ if (!isfcn(fcn)) FATAL("calling undefined function %s", s); if (frame == NULL) { - fp = frame = calloc(nframe += 100, sizeof(*frame)); + frp = frame = calloc(nframe += 100, sizeof(*frame)); if (frame == NULL) FATAL("out of space for stack frames calling %s", s); } for (ncall = 0, x = a[1]; x != NULL; x = x->nnext) /* args in call */ ncall++; ndef = (int) fcn->fval; /* args in defn */ - dprintf( ("calling %s, %d args (%d in defn), fp=%d\n", s, ncall, ndef, (int) (fp-frame)) ); + dprintf( ("calling %s, %d args (%d in defn), frp=%d\n", s, ncall, ndef, (int) (frp-frame)) ); if (ncall > ndef) WARNING("function %s called with %d args, uses only %d", s, ncall, ndef); if (ncall + ndef > NARGS) FATAL("function %s has %d arguments, limit %d", s, ncall+ndef, NARGS); for (i = 0, x = a[1]; x != NULL; i++, x = x->nnext) { /* get call args */ - dprintf( ("evaluate args[%d], fp=%d:\n", i, (int) (fp-frame)) ); + dprintf( ("evaluate args[%d], frp=%d:\n", i, (int) (frp-frame)) ); y = execute(x); oargs[i] = y; dprintf( ("args[%d]: %s %f <%s>, t=%o\n", @@ -267,25 +270,25 @@ Cell *call(Node **a, int n) /* function call. very kludgy and fragile */ args[i] = gettemp(); *args[i] = newcopycell; } - fp++; /* now ok to up frame */ - if (fp >= frame + nframe) { - int dfp = fp - frame; /* old index */ + frp++; /* now ok to up frame */ + if (frp >= frame + nframe) { + int dfp = frp - frame; /* old index */ frame = realloc(frame, (nframe += 100) * sizeof(*frame)); if (frame == NULL) FATAL("out of space for stack frames in %s", s); - fp = frame + dfp; + frp = frame + dfp; } - fp->fcncell = fcn; - fp->args = args; - fp->nargs = ndef; /* number defined with (excess are locals) */ - fp->retval = gettemp(); + frp->fcncell = fcn; + frp->args = args; + frp->nargs = ndef; /* number defined with (excess are locals) */ + frp->retval = gettemp(); - dprintf( ("start exec of %s, fp=%d\n", s, (int) (fp-frame)) ); + dprintf( ("start exec of %s, frp=%d\n", s, (int) (frp-frame)) ); y = execute((Node *)(fcn->sval)); /* execute body */ - dprintf( ("finished exec of %s, fp=%d\n", s, (int) (fp-frame)) ); + dprintf( ("finished exec of %s, frp=%d\n", s, (int) (frp-frame)) ); for (i = 0; i < ndef; i++) { - Cell *t = fp->args[i]; + Cell *t = frp->args[i]; if (isarr(t)) { if (t->csub == CCOPY) { if (i >= ncall) { @@ -314,9 +317,9 @@ Cell *call(Node **a, int n) /* function call. very kludgy and fragile */ if (freed == 0) { tempfree(y); /* don't free twice! */ } - z = fp->retval; /* return value */ + z = frp->retval; /* return value */ dprintf( ("%s returns %g |%s| %o\n", s, getfval(z), getsval(z), z->tval) ); - fp--; + frp--; return(z); } @@ -343,11 +346,11 @@ Cell *arg(Node **a, int n) /* nth argument of a function */ { n = ptoi(a[0]); /* argument number, counting from 0 */ - dprintf( ("arg(%d), fp->nargs=%d\n", n, fp->nargs) ); - if (n+1 > fp->nargs) + dprintf( ("arg(%d), frp->nargs=%d\n", n, frp->nargs) ); + if (n+1 > frp->nargs) FATAL("argument #%d of function %s was not supplied", - n+1, fp->fcncell->nval); - return fp->args[n]; + n+1, frp->fcncell->nval); + return frp->args[n]; } Cell *jump(Node **a, int n) /* break, continue, next, nextfile, return */ @@ -366,14 +369,14 @@ Cell *jump(Node **a, int n) /* break, continue, next, nextfile, return */ if (a[0] != NULL) { y = execute(a[0]); if ((y->tval & (STR|NUM)) == (STR|NUM)) { - setsval(fp->retval, getsval(y)); - fp->retval->fval = getfval(y); - fp->retval->tval |= NUM; + setsval(frp->retval, getsval(y)); + frp->retval->fval = getfval(y); + frp->retval->tval |= NUM; } else if (y->tval & STR) - setsval(fp->retval, getsval(y)); + setsval(frp->retval, getsval(y)); else if (y->tval & NUM) - setfval(fp->retval, getfval(y)); + setfval(frp->retval, getfval(y)); else /* can't happen */ FATAL("bad type variable %d", y->tval); tempfree(y); @@ -792,8 +795,8 @@ Cell *sindex(Node **a, int nnn) /* index(a[0], a[1]) */ z = gettemp(); for (p1 = s1; *p1 != '\0'; p1++) { - for (q=p1, p2=s2; *p2 != '\0' && *q == *p2; q++, p2++) - ; + for (q = p1, p2 = s2; *p2 != '\0' && *q == *p2; q++, p2++) + continue; if (*p2 == '\0') { v = (Awkfloat) (p1 - s1 + 1); /* origin 1 */ break; @@ -1063,7 +1066,7 @@ Cell *arith(Node **a, int n) /* a[0] + a[1], etc. also -a[0] */ case UMINUS: i = -i; break; - case UPLUS: /* handled by getfval(), above */ + case UPLUS: /* handled by getfval(), above */ break; case POWER: if (j >= 0 && modf(j, &v) == 0.0) /* pos integer exponent */ @@ -1245,7 +1248,8 @@ Cell *split(Node **a, int nnn) /* split(a[0], a[1], a[2]); a[3] is type */ { Cell *x = NULL, *y, *ap; const char *s, *origs, *t; - char *fs = NULL, *origfs = NULL; + const char *fs = NULL; + char *origfs = NULL; int sep; char temp, num[50]; int n, tempstat, arg3type; @@ -1257,7 +1261,7 @@ Cell *split(Node **a, int nnn) /* split(a[0], a[1], a[2]); a[3] is type */ fs = getsval(fsloc); else if (arg3type == STRING) { /* split(str,arr,"string") */ x = execute(a[2]); - origfs = fs = strdup(getsval(x)); + fs = origfs = strdup(getsval(x)); tempfree(x); } else if (arg3type == REGEXPR) fs = "(regexpr)"; /* split(str,arr,/regexpr/) */ @@ -1299,7 +1303,7 @@ Cell *split(Node **a, int nnn) /* split(a[0], a[1], a[2]); a[3] is type */ setsymtab(num, s, 0.0, STR, (Array *) ap->sval); setptr(patbeg, temp); s = patbeg + patlen; - if (*(patbeg+patlen-1) == 0 || *s == 0) { + if (*(patbeg+patlen-1) == '\0' || *s == '\0') { n++; snprintf(num, sizeof(num), "%d", n); setsymtab(num, "", 0.0, STR, (Array *) ap->sval); @@ -1320,15 +1324,16 @@ Cell *split(Node **a, int nnn) /* split(a[0], a[1], a[2]); a[3] is type */ pfa = NULL; } else if (sep == ' ') { for (n = 0; ; ) { - while (*s == ' ' || *s == '\t' || *s == '\n') +#define ISWS(c) ((c) == ' ' || (c) == '\t' || (c) == '\n') + while (ISWS(*s)) s++; - if (*s == 0) + if (*s == '\0') break; n++; t = s; do s++; - while (*s!=' ' && *s!='\t' && *s!='\n' && *s!='\0'); + while (*s != '\0' && !ISWS(*s)); temp = *s; setptr(s, '\0'); snprintf(num, sizeof(num), "%d", n); @@ -1337,22 +1342,22 @@ Cell *split(Node **a, int nnn) /* split(a[0], a[1], a[2]); a[3] is type */ else setsymtab(num, t, 0.0, STR, (Array *) ap->sval); setptr(s, temp); - if (*s != 0) + if (*s != '\0') s++; } } else if (sep == 0) { /* new: split(s, a, "") => 1 char/elem */ - for (n = 0; *s != 0; s++) { + for (n = 0; *s != '\0'; s++) { char buf[2]; n++; snprintf(num, sizeof(num), "%d", n); buf[0] = *s; - buf[1] = 0; + buf[1] = '\0'; if (isdigit((uschar)buf[0])) setsymtab(num, buf, atof(buf), STR|NUM, (Array *) ap->sval); else setsymtab(num, buf, 0.0, STR, (Array *) ap->sval); } - } else if (*s != 0) { + } else if (*s != '\0') { for (;;) { n++; t = s; @@ -1366,7 +1371,7 @@ Cell *split(Node **a, int nnn) /* split(a[0], a[1], a[2]); a[3] is type */ else setsymtab(num, t, 0.0, STR, (Array *) ap->sval); setptr(s, temp); - if (*s++ == 0) + if (*s++ == '\0') break; } } @@ -1503,16 +1508,73 @@ Cell *instat(Node **a, int n) /* for (a[0] in a[1]) a[2] */ return True; } +static char *nawk_convert(const char *s, int (*fun_c)(int), + wint_t (*fun_wc)(wint_t)) +{ + char *buf = NULL; + char *pbuf = NULL; + const char *ps = NULL; + size_t n = 0; + mbstate_t mbs, mbs2; + wchar_t wc; + size_t sz = MB_CUR_MAX; + + if (sz == 1) { + buf = tostring(s); + + for (pbuf = buf; *pbuf; pbuf++) + *pbuf = fun_c((uschar)*pbuf); + + return buf; + } else { + /* upper/lower character may be shorter/longer */ + buf = tostringN(s, strlen(s) * sz + 1); + + memset(&mbs, 0, sizeof(mbs)); + memset(&mbs2, 0, sizeof(mbs2)); + + ps = s; + pbuf = buf; + while (n = mbrtowc(&wc, ps, sz, &mbs), + n > 0 && n != (size_t)-1 && n != (size_t)-2) + { + ps += n; + + n = wcrtomb(pbuf, fun_wc(wc), &mbs2); + if (n == (size_t)-1) + FATAL("illegal wide character %s", s); + + pbuf += n; + } + + *pbuf = '\0'; + + if (n) + FATAL("illegal byte sequence %s", s); + + return buf; + } +} + +static char *nawk_toupper(const char *s) +{ + return nawk_convert(s, toupper, towupper); +} + +static char *nawk_tolower(const char *s) +{ + return nawk_convert(s, tolower, towlower); +} + Cell *bltin(Node **a, int n) /* builtin functions. a[0] is type, a[1] is arg list */ { Cell *x, *y; Awkfloat u; int t; Awkfloat tmp; - char *p, *buf; + char *buf; Node *nextarg; FILE *fp; - void flush_all(void); int status = 0; t = ptoi(a[0]); @@ -1583,16 +1645,10 @@ Cell *bltin(Node **a, int n) /* builtin functions. a[0] is type, a[1] is arg lis break; case FTOUPPER: case FTOLOWER: - buf = tostring(getsval(x)); - if (t == FTOUPPER) { - for (p = buf; *p; p++) - if (islower((uschar) *p)) - *p = toupper((uschar)*p); - } else { - for (p = buf; *p; p++) - if (isupper((uschar) *p)) - *p = tolower((uschar)*p); - } + if (t == FTOUPPER) + buf = nawk_toupper(getsval(x)); + else + buf = nawk_tolower(getsval(x)); tempfree(x); x = gettemp(); setsval(x, buf); @@ -1675,14 +1731,14 @@ struct files { int mode; /* '|', 'a', 'w' => LE/LT, GT */ } *files; -int nfiles; +size_t nfiles; -void stdinit(void) /* in case stdin, etc., are not constants */ +static void stdinit(void) /* in case stdin, etc., are not constants */ { nfiles = FOPEN_MAX; files = calloc(nfiles, sizeof(*files)); if (files == NULL) - FATAL("can't allocate file memory for %u files", nfiles); + FATAL("can't allocate file memory for %zu files", nfiles); files[0].fp = stdin; files[0].fname = "/dev/stdin"; files[0].mode = LT; @@ -1697,12 +1753,13 @@ void stdinit(void) /* in case stdin, etc., are not constants */ FILE *openfile(int a, const char *us) { const char *s = us; - int i, m; + size_t i; + int m; FILE *fp = NULL; if (*s == '\0') FATAL("null file name in print or getline"); - for (i=0; i < nfiles; i++) + for (i = 0; i < nfiles; i++) if (files[i].fname && strcmp(s, files[i].fname) == 0) { if (a == files[i].mode || (a==APPEND && files[i].mode==GT)) return files[i].fp; @@ -1712,15 +1769,15 @@ FILE *openfile(int a, const char *us) if (a == FFLUSH) /* didn't find it, so don't create it! */ return NULL; - for (i=0; i < nfiles; i++) + for (i = 0; i < nfiles; i++) if (files[i].fp == NULL) break; if (i >= nfiles) { struct files *nf; - int nnf = nfiles + FOPEN_MAX; + size_t nnf = nfiles + FOPEN_MAX; nf = realloc(files, nnf * sizeof(*nf)); if (nf == NULL) - FATAL("cannot grow files for %s and %d files", s, nnf); + FATAL("cannot grow files for %s and %zu files", s, nnf); memset(&nf[nfiles], 0, FOPEN_MAX * sizeof(*nf)); nfiles = nnf; files = nf; @@ -1744,13 +1801,15 @@ FILE *openfile(int a, const char *us) files[i].fname = tostring(s); files[i].fp = fp; files[i].mode = m; + if (fp != stdin && fp != stdout && fp != stderr) + (void) fcntl(fileno(fp), F_SETFD, FD_CLOEXEC); } return fp; } const char *filename(FILE *fp) { - int i; + size_t i; for (i = 0; i < nfiles; i++) if (fp == files[i].fp) @@ -1758,55 +1817,57 @@ const char *filename(FILE *fp) return "???"; } -Cell *closefile(Node **a, int n) -{ - Cell *x; - int i, stat; - - x = execute(a[0]); - getsval(x); - stat = -1; - for (i = 0; i < nfiles; i++) { - if (files[i].fname && strcmp(x->sval, files[i].fname) == 0) { - if (ferror(files[i].fp)) - WARNING( "i/o error occurred on %s", files[i].fname ); - if (files[i].mode == '|' || files[i].mode == LE) - stat = pclose(files[i].fp); - else - stat = fclose(files[i].fp); - if (stat == EOF) - WARNING( "i/o error occurred closing %s", files[i].fname ); - if (i > 2) /* don't do /dev/std... */ - xfree(files[i].fname); - files[i].fname = NULL; /* watch out for ref thru this */ - files[i].fp = NULL; - } - } - tempfree(x); - x = gettemp(); - setfval(x, (Awkfloat) stat); - return(x); -} + Cell *closefile(Node **a, int n) + { + Cell *x; + size_t i; + bool stat; + + x = execute(a[0]); + getsval(x); + stat = true; + for (i = 0; i < nfiles; i++) { + if (!files[i].fname || strcmp(x->sval, files[i].fname) != 0) + continue; + if (ferror(files[i].fp)) + FATAL("i/o error occurred on %s", files[i].fname); + if (files[i].mode == '|' || files[i].mode == LE) + stat = pclose(files[i].fp) == -1; + else + stat = fclose(files[i].fp) == EOF; + if (stat) + FATAL("i/o error occurred closing %s", files[i].fname); + if (i > 2) /* don't do /dev/std... */ + xfree(files[i].fname); + files[i].fname = NULL; /* watch out for ref thru this */ + files[i].fp = NULL; + } + tempfree(x); + x = gettemp(); + setfval(x, (Awkfloat) (stat ? -1 : 0)); + return(x); + } void closeall(void) { - int i, stat; - - for (i = 0; i < FOPEN_MAX; i++) { - if (files[i].fp) { - if (ferror(files[i].fp)) - WARNING( "i/o error occurred on %s", files[i].fname ); - if (files[i].mode == '|' || files[i].mode == LE) - stat = pclose(files[i].fp); - else - stat = fclose(files[i].fp); - if (stat == EOF) - WARNING( "i/o error occurred while closing %s", files[i].fname ); - } + size_t i; + bool stat = false; + + for (i = 0; i < nfiles; i++) { + if (! files[i].fp) + continue; + if (ferror(files[i].fp)) + FATAL( "i/o error occurred on %s", files[i].fname ); + if (files[i].mode == '|' || files[i].mode == LE) + stat = pclose(files[i].fp) == -1; + else + stat = fclose(files[i].fp) == EOF; + if (stat) + FATAL( "i/o error occurred while closing %s", files[i].fname ); } } -void flush_all(void) +static void flush_all(void) { int i; @@ -1845,7 +1906,7 @@ Cell *sub(Node **a, int nnn) /* substitute command */ while (sptr < patbeg) *pb++ = *sptr++; sptr = getsval(y); - while (*sptr != 0) { + while (*sptr != '\0') { adjbuf(&buf, &bufsz, 5+pb-buf, recsize, &pb, "sub"); if (*sptr == '\\') { backsub(&pb, &sptr); @@ -1863,8 +1924,8 @@ Cell *sub(Node **a, int nnn) /* substitute command */ sptr = patbeg + patlen; if ((patlen == 0 && *patbeg) || (patlen && *(sptr-1))) { adjbuf(&buf, &bufsz, 1+strlen(sptr)+pb-buf, 0, &pb, "sub"); - while ((*pb++ = *sptr++) != 0) - ; + while ((*pb++ = *sptr++) != '\0') + continue; } if (pb > buf + bufsz) FATAL("sub result2 %.30s too big; can't happen", buf); @@ -1907,11 +1968,11 @@ Cell *gsub(Node **a, int nnn) /* global substitute */ pb = buf; rptr = getsval(y); do { - if (patlen == 0 && *patbeg != 0) { /* matched empty string */ + if (patlen == 0 && *patbeg != '\0') { /* matched empty string */ if (mflag == 0) { /* can replace empty */ num++; sptr = rptr; - while (*sptr != 0) { + while (*sptr != '\0') { adjbuf(&buf, &bufsz, 5+pb-buf, recsize, &pb, "gsub"); if (*sptr == '\\') { backsub(&pb, &sptr); @@ -1924,7 +1985,7 @@ Cell *gsub(Node **a, int nnn) /* global substitute */ *pb++ = *sptr++; } } - if (*t == 0) /* at end */ + if (*t == '\0') /* at end */ goto done; adjbuf(&buf, &bufsz, 2+pb-buf, recsize, &pb, "gsub"); *pb++ = *t++; @@ -1939,7 +2000,7 @@ Cell *gsub(Node **a, int nnn) /* global substitute */ while (sptr < patbeg) *pb++ = *sptr++; sptr = rptr; - while (*sptr != 0) { + while (*sptr != '\0') { adjbuf(&buf, &bufsz, 5+pb-buf, recsize, &pb, "gsub"); if (*sptr == '\\') { backsub(&pb, &sptr); @@ -1952,7 +2013,7 @@ Cell *gsub(Node **a, int nnn) /* global substitute */ *pb++ = *sptr++; } t = patbeg + patlen; - if (patlen == 0 || *t == 0 || *(t-1) == 0) + if (patlen == 0 || *t == '\0' || *(t-1) == '\0') goto done; if (pb > buf + bufsz) FATAL("gsub result1 %.30s too big; can't happen", buf); @@ -1961,8 +2022,8 @@ Cell *gsub(Node **a, int nnn) /* global substitute */ } while (pmatch(pfa,t)); sptr = t; adjbuf(&buf, &bufsz, 1+strlen(sptr)+pb-buf, 0, &pb, "gsub"); - while ((*pb++ = *sptr++) != 0) - ; + while ((*pb++ = *sptr++) != '\0') + continue; done: if (pb < buf + bufsz) *pb = '\0'; else if (*(pb-1) != '\0') @@ -1983,6 +2044,13 @@ void backsub(char **pb_ptr, const char **sptr_ptr) /* handle \\& variations */ { /* sptr[0] == '\\' */ char *pb = *pb_ptr; const char *sptr = *sptr_ptr; + static bool first = true; + static bool do_posix = false; + + if (first) { + first = false; + do_posix = (getenv("POSIXLY_CORRECT") != NULL); + } if (sptr[1] == '\\') { if (sptr[2] == '\\' && sptr[3] == '&') { /* \\\& -> \& */ @@ -1992,6 +2060,9 @@ void backsub(char **pb_ptr, const char **sptr_ptr) /* handle \\& variations */ } else if (sptr[2] == '&') { /* \\& -> \ + matched */ *pb++ = '\\'; sptr += 2; + } else if (do_posix) { /* \\x -> \x */ + sptr++; + *pb++ = *sptr++; } else { /* \\x -> \\x */ *pb++ = *sptr++; *pb++ = *sptr++; diff --git a/testdir/T.builtin b/testdir/T.builtin index 411a5e5..b36f6cb 100755 --- a/testdir/T.builtin +++ b/testdir/T.builtin @@ -29,6 +29,14 @@ $awk '{ printf("%s|%s|%s\n", tolower($0), toupper($0), $0)}' >foo1 echo 'hello, world!|HELLO, WORLD!|hello, WORLD!' >foo2 diff foo1 foo2 || echo 'BAD: T.builtin (toupper/tolower)' + +if locale -a | grep -qsi de_DE.UTF-8; then + (export LANG=de_DE.UTF-8 && echo 'Dürst' | + $awk '{ printf("%s|%s|%s\n", tolower($0), toupper($0), $0)}') >foo1 + echo 'dürst|DÜRST|Dürst' >foo2 + diff foo1 foo2 || echo 'BAD: T.builtin (toupper/tolower) for utf-8' +fi + $awk 'BEGIN { j = 1; sprintf("%d", 99, ++j) # does j get incremented? if (j != 2) diff --git a/testdir/T.concat b/testdir/T.csconcat index c6bd016..5199600 100755 --- a/testdir/T.concat +++ b/testdir/T.csconcat @@ -1,4 +1,4 @@ -echo T.concat: test constant string concatentation +echo T.csconcat: test constant string concatentation awk=${awk-../a.out} @@ -26,4 +26,4 @@ hello world hello world EOF -diff foo1 foo2 || echo 'BAD: T.concat (1)' +diff foo1 foo2 || echo 'BAD: T.csconcat (1)' diff --git a/testdir/T.int-expr b/testdir/T.int-expr index e71a075..de77532 100755 --- a/testdir/T.int-expr +++ b/testdir/T.int-expr @@ -18,6 +18,34 @@ pat ab{0}c ac 1 abc 0 +pat a(b{0})c +ac 1 +abc 0 + +pat ab{0}*c +ac 1 +abc 0 + +pat a(b{0})*c +ac 1 +abc 0 + +pat ab{0,}c +ac 1 +abc 1 + +pat a(b{0,})c +ac 1 +abc 1 + +pat ab{0,}*c +ac 1 +abc 1 + +pat a(b{0,})*c +ac 1 +abc 1 + pat ab{1}c ac 0 abc 1 @@ -53,6 +81,20 @@ EOF cat << \EOF > foo1 ac ~ /ab{0}c/ -> should be 1, is 1 abc ~ /ab{0}c/ -> should be 0, is 0 +ac ~ /a(b{0})c/ -> should be 1, is 1 +abc ~ /a(b{0})c/ -> should be 0, is 0 +ac ~ /ab{0}*c/ -> should be 1, is 1 +abc ~ /ab{0}*c/ -> should be 0, is 0 +ac ~ /a(b{0})*c/ -> should be 1, is 1 +abc ~ /a(b{0})*c/ -> should be 0, is 0 +ac ~ /ab{0,}c/ -> should be 1, is 1 +abc ~ /ab{0,}c/ -> should be 1, is 1 +ac ~ /a(b{0,})c/ -> should be 1, is 1 +abc ~ /a(b{0,})c/ -> should be 1, is 1 +ac ~ /ab{0,}*c/ -> should be 1, is 1 +abc ~ /ab{0,}*c/ -> should be 1, is 1 +ac ~ /a(b{0,})*c/ -> should be 1, is 1 +abc ~ /a(b{0,})*c/ -> should be 1, is 1 ac ~ /ab{1}c/ -> should be 0, is 0 abc ~ /ab{1}c/ -> should be 1, is 1 abbc ~ /ab{1}c/ -> should be 0, is 0 diff --git a/testdir/T.misc b/testdir/T.misc index 7fc196a..3903606 100755 --- a/testdir/T.misc +++ b/testdir/T.misc @@ -382,7 +382,7 @@ $awk 'BEGIN \ print "hello, world" } }}}' >foo1 2>foo2 -grep 'source line 5' foo2 >/dev/null 2>&1 || echo 'BAD: T.misc continuation line number' +grep 'source line 4' foo2 >/dev/null 2>&1 || echo 'BAD: T.misc continuation line number' echo 111 222 333 >foo @@ -466,3 +466,8 @@ echo '' >foo0 $awk 'END { print NF, $0 }' foo0 >foo1 awk '{ print NF, $0 }' foo0| tail -1 >foo2 cmp -s foo1 foo2 || echo 'BAD: T.misc END must preserve $0' + +# Check for nonzero exit status on I/O error. +echo 'E 2' >foo1 +(trap '' PIPE; "$awk" 'BEGIN { print "hi"; }' 2>/dev/null; echo "E $?" >foo2) | : +cmp -s foo1 foo2 || echo 'BAD: T.misc exit status on I/O error' @@ -344,7 +344,7 @@ void funnyvar(Cell *vp, const char *rw) if (vp->tval & FCN) FATAL("can't %s %s; it's a function.", rw, vp->nval); WARNING("funny variable %p: n=%s s=\"%s\" f=%g t=%o", - vp, vp->nval, vp->sval, vp->fval, vp->tval); + (void *)vp, vp->nval, vp->sval, vp->fval, vp->tval); } char *setsval(Cell *vp, const char *s) /* set string val of a Cell */ @@ -516,6 +516,17 @@ char *tostring(const char *s) /* make a copy of string s */ return(p); } +char *tostringN(const char *s, size_t n) /* make a copy of string s */ +{ + char *p; + + p = malloc(n); + if (p == NULL) + FATAL("out of space in tostring on %s", s); + strcpy(p, s); + return(p); +} + Cell *catstr(Cell *a, Cell *b) /* concatenate a and b */ { Cell *c; @@ -1,8 +1,9 @@ -/* A Bison parser, made by GNU Bison 3.2.2. */ +/* A Bison parser, made by GNU Bison 3.4.1. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, + Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -47,7 +48,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.2.2" +#define YYBISON_VERSION "3.4.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -65,7 +66,7 @@ /* First part of user prologue. */ -#line 25 "awkgram.y" /* yacc.c:338 */ +#line 25 "awkgram.y" #include <stdio.h> #include <string.h> @@ -76,12 +77,13 @@ int yywrap(void) { return(1); } Node *beginloc = 0; Node *endloc = 0; -int infunc = 0; /* = 1 if in arglist or body of func */ -int inloop = 0; /* = 1 if in while, for, do */ +bool infunc = false; /* = true if in arglist or body of func */ +int inloop = 0; /* >= 1 if in while, for, do; can't be bool, since loops can next */ char *curfname = 0; /* current function name */ Node *arglist = 0; /* list of args for current function */ -#line 85 "ytab.c" /* yacc.c:338 */ +#line 86 "y.tab.c" + # ifndef YY_NULLPTR # if defined __cplusplus # if 201103L <= __cplusplus @@ -102,10 +104,10 @@ Node *arglist = 0; /* list of args for current function */ # define YYERROR_VERBOSE 0 #endif -/* In a future release of Bison, this section will be replaced - by #include "ytab.h". */ -#ifndef YY_YY_YTAB_H_INCLUDED -# define YY_YY_YTAB_H_INCLUDED +/* Use api.header.include to #include this header + instead of duplicating it here. */ +#ifndef YY_YY_Y_TAB_H_INCLUDED +# define YY_YY_Y_TAB_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 @@ -141,78 +143,79 @@ extern int yydebug; QUEST = 277, PLUS = 278, EMPTYRE = 279, - AND = 280, - BOR = 281, - APPEND = 282, - EQ = 283, - GE = 284, - GT = 285, - LE = 286, - LT = 287, - NE = 288, - IN = 289, - ARG = 290, - BLTIN = 291, - BREAK = 292, - CLOSE = 293, - CONTINUE = 294, - DELETE = 295, - DO = 296, - EXIT = 297, - FOR = 298, - FUNC = 299, - SUB = 300, - GSUB = 301, - IF = 302, - INDEX = 303, - LSUBSTR = 304, - MATCHFCN = 305, - NEXT = 306, - NEXTFILE = 307, - ADD = 308, - MINUS = 309, - MULT = 310, - DIVIDE = 311, - MOD = 312, - ASSIGN = 313, - ASGNOP = 314, - ADDEQ = 315, - SUBEQ = 316, - MULTEQ = 317, - DIVEQ = 318, - MODEQ = 319, - POWEQ = 320, - PRINT = 321, - PRINTF = 322, - SPRINTF = 323, - ELSE = 324, - INTEST = 325, - CONDEXPR = 326, - POSTINCR = 327, - PREINCR = 328, - POSTDECR = 329, - PREDECR = 330, - VAR = 331, - IVAR = 332, - VARNF = 333, - CALL = 334, - NUMBER = 335, - STRING = 336, - REGEXPR = 337, - GETLINE = 338, - RETURN = 339, - SPLIT = 340, - SUBSTR = 341, - WHILE = 342, - CAT = 343, - NOT = 344, - UMINUS = 345, - UPLUS = 346, - POWER = 347, - DECR = 348, - INCR = 349, - INDIRECT = 350, - LASTTOKEN = 351 + ZERO = 280, + AND = 281, + BOR = 282, + APPEND = 283, + EQ = 284, + GE = 285, + GT = 286, + LE = 287, + LT = 288, + NE = 289, + IN = 290, + ARG = 291, + BLTIN = 292, + BREAK = 293, + CLOSE = 294, + CONTINUE = 295, + DELETE = 296, + DO = 297, + EXIT = 298, + FOR = 299, + FUNC = 300, + SUB = 301, + GSUB = 302, + IF = 303, + INDEX = 304, + LSUBSTR = 305, + MATCHFCN = 306, + NEXT = 307, + NEXTFILE = 308, + ADD = 309, + MINUS = 310, + MULT = 311, + DIVIDE = 312, + MOD = 313, + ASSIGN = 314, + ASGNOP = 315, + ADDEQ = 316, + SUBEQ = 317, + MULTEQ = 318, + DIVEQ = 319, + MODEQ = 320, + POWEQ = 321, + PRINT = 322, + PRINTF = 323, + SPRINTF = 324, + ELSE = 325, + INTEST = 326, + CONDEXPR = 327, + POSTINCR = 328, + PREINCR = 329, + POSTDECR = 330, + PREDECR = 331, + VAR = 332, + IVAR = 333, + VARNF = 334, + CALL = 335, + NUMBER = 336, + STRING = 337, + REGEXPR = 338, + GETLINE = 339, + RETURN = 340, + SPLIT = 341, + SUBSTR = 342, + WHILE = 343, + CAT = 344, + NOT = 345, + UMINUS = 346, + UPLUS = 347, + POWER = 348, + DECR = 349, + INCR = 350, + INDIRECT = 351, + LASTTOKEN = 352 }; #endif /* Tokens. */ @@ -238,94 +241,94 @@ extern int yydebug; #define QUEST 277 #define PLUS 278 #define EMPTYRE 279 -#define AND 280 -#define BOR 281 -#define APPEND 282 -#define EQ 283 -#define GE 284 -#define GT 285 -#define LE 286 -#define LT 287 -#define NE 288 -#define IN 289 -#define ARG 290 -#define BLTIN 291 -#define BREAK 292 -#define CLOSE 293 -#define CONTINUE 294 -#define DELETE 295 -#define DO 296 -#define EXIT 297 -#define FOR 298 -#define FUNC 299 -#define SUB 300 -#define GSUB 301 -#define IF 302 -#define INDEX 303 -#define LSUBSTR 304 -#define MATCHFCN 305 -#define NEXT 306 -#define NEXTFILE 307 -#define ADD 308 -#define MINUS 309 -#define MULT 310 -#define DIVIDE 311 -#define MOD 312 -#define ASSIGN 313 -#define ASGNOP 314 -#define ADDEQ 315 -#define SUBEQ 316 -#define MULTEQ 317 -#define DIVEQ 318 -#define MODEQ 319 -#define POWEQ 320 -#define PRINT 321 -#define PRINTF 322 -#define SPRINTF 323 -#define ELSE 324 -#define INTEST 325 -#define CONDEXPR 326 -#define POSTINCR 327 -#define PREINCR 328 -#define POSTDECR 329 -#define PREDECR 330 -#define VAR 331 -#define IVAR 332 -#define VARNF 333 -#define CALL 334 -#define NUMBER 335 -#define STRING 336 -#define REGEXPR 337 -#define GETLINE 338 -#define RETURN 339 -#define SPLIT 340 -#define SUBSTR 341 -#define WHILE 342 -#define CAT 343 -#define NOT 344 -#define UMINUS 345 -#define UPLUS 346 -#define POWER 347 -#define DECR 348 -#define INCR 349 -#define INDIRECT 350 -#define LASTTOKEN 351 +#define ZERO 280 +#define AND 281 +#define BOR 282 +#define APPEND 283 +#define EQ 284 +#define GE 285 +#define GT 286 +#define LE 287 +#define LT 288 +#define NE 289 +#define IN 290 +#define ARG 291 +#define BLTIN 292 +#define BREAK 293 +#define CLOSE 294 +#define CONTINUE 295 +#define DELETE 296 +#define DO 297 +#define EXIT 298 +#define FOR 299 +#define FUNC 300 +#define SUB 301 +#define GSUB 302 +#define IF 303 +#define INDEX 304 +#define LSUBSTR 305 +#define MATCHFCN 306 +#define NEXT 307 +#define NEXTFILE 308 +#define ADD 309 +#define MINUS 310 +#define MULT 311 +#define DIVIDE 312 +#define MOD 313 +#define ASSIGN 314 +#define ASGNOP 315 +#define ADDEQ 316 +#define SUBEQ 317 +#define MULTEQ 318 +#define DIVEQ 319 +#define MODEQ 320 +#define POWEQ 321 +#define PRINT 322 +#define PRINTF 323 +#define SPRINTF 324 +#define ELSE 325 +#define INTEST 326 +#define CONDEXPR 327 +#define POSTINCR 328 +#define PREINCR 329 +#define POSTDECR 330 +#define PREDECR 331 +#define VAR 332 +#define IVAR 333 +#define VARNF 334 +#define CALL 335 +#define NUMBER 336 +#define STRING 337 +#define REGEXPR 338 +#define GETLINE 339 +#define RETURN 340 +#define SPLIT 341 +#define SUBSTR 342 +#define WHILE 343 +#define CAT 344 +#define NOT 345 +#define UMINUS 346 +#define UPLUS 347 +#define POWER 348 +#define DECR 349 +#define INCR 350 +#define INDIRECT 351 +#define LASTTOKEN 352 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - union YYSTYPE { -#line 41 "awkgram.y" /* yacc.c:353 */ +#line 41 "awkgram.y" Node *p; Cell *cp; int i; char *s; -#line 327 "ytab.c" /* yacc.c:353 */ -}; +#line 330 "y.tab.c" +}; typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 @@ -336,7 +339,7 @@ extern YYSTYPE yylval; int yyparse (void); -#endif /* !YY_YY_YTAB_H_INCLUDED */ +#endif /* !YY_YY_Y_TAB_H_INCLUDED */ @@ -440,6 +443,8 @@ typedef short yytype_int16; #endif +#define YY_ASSERT(E) ((void) (0 && (E))) + #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -571,10 +576,10 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 8 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 4682 +#define YYLAST 4608 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 113 +#define YYNTOKENS 114 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 50 /* YYNRULES -- Number of rules. */ @@ -582,25 +587,25 @@ union yyalloc /* YYNSTATES -- Number of states. */ #define YYNSTATES 370 -/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned - by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 351 +#define YYMAXUTOK 352 +/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, without out-of-bounds checking. */ + as returned by yylex. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 104, 2, 2, - 12, 16, 103, 101, 10, 102, 2, 15, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 94, 14, - 2, 2, 2, 93, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 105, 2, 2, + 12, 16, 104, 102, 10, 103, 2, 15, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 95, 14, + 2, 2, 2, 94, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 18, 2, 19, 2, 2, 2, 2, 2, 2, @@ -627,9 +632,9 @@ static const yytype_uint8 yytranslate[] = 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 95, 96, - 97, 98, 99, 100, 105, 106, 107, 108, 109, 110, - 111, 112 + 85, 86, 87, 88, 89, 90, 91, 92, 93, 96, + 97, 98, 99, 100, 101, 106, 107, 108, 109, 110, + 111, 112, 113 }; #if YYDEBUG @@ -667,21 +672,21 @@ static const char *const yytname[] = "PASTAT2", "XBEGIN", "XEND", "NL", "','", "'{'", "'('", "'|'", "';'", "'/'", "')'", "'}'", "'['", "']'", "ARRAY", "MATCH", "NOTMATCH", "MATCHOP", "FINAL", "DOT", "ALL", "CCL", "NCCL", "CHAR", "OR", "STAR", - "QUEST", "PLUS", "EMPTYRE", "AND", "BOR", "APPEND", "EQ", "GE", "GT", - "LE", "LT", "NE", "IN", "ARG", "BLTIN", "BREAK", "CLOSE", "CONTINUE", - "DELETE", "DO", "EXIT", "FOR", "FUNC", "SUB", "GSUB", "IF", "INDEX", - "LSUBSTR", "MATCHFCN", "NEXT", "NEXTFILE", "ADD", "MINUS", "MULT", - "DIVIDE", "MOD", "ASSIGN", "ASGNOP", "ADDEQ", "SUBEQ", "MULTEQ", "DIVEQ", - "MODEQ", "POWEQ", "PRINT", "PRINTF", "SPRINTF", "ELSE", "INTEST", - "CONDEXPR", "POSTINCR", "PREINCR", "POSTDECR", "PREDECR", "VAR", "IVAR", - "VARNF", "CALL", "NUMBER", "STRING", "REGEXPR", "'?'", "':'", "GETLINE", - "RETURN", "SPLIT", "SUBSTR", "WHILE", "CAT", "'+'", "'-'", "'*'", "'%'", - "NOT", "UMINUS", "UPLUS", "POWER", "DECR", "INCR", "INDIRECT", - "LASTTOKEN", "$accept", "program", "and", "bor", "comma", "do", "else", - "for", "$@1", "$@2", "$@3", "funcname", "if", "lbrace", "nl", "opt_nl", - "opt_pst", "opt_simple_stmt", "pas", "pa_pat", "pa_stat", "$@4", - "pa_stats", "patlist", "ppattern", "pattern", "plist", "pplist", "prarg", - "print", "pst", "rbrace", "re", "reg_expr", "$@5", "rparen", + "QUEST", "PLUS", "EMPTYRE", "ZERO", "AND", "BOR", "APPEND", "EQ", "GE", + "GT", "LE", "LT", "NE", "IN", "ARG", "BLTIN", "BREAK", "CLOSE", + "CONTINUE", "DELETE", "DO", "EXIT", "FOR", "FUNC", "SUB", "GSUB", "IF", + "INDEX", "LSUBSTR", "MATCHFCN", "NEXT", "NEXTFILE", "ADD", "MINUS", + "MULT", "DIVIDE", "MOD", "ASSIGN", "ASGNOP", "ADDEQ", "SUBEQ", "MULTEQ", + "DIVEQ", "MODEQ", "POWEQ", "PRINT", "PRINTF", "SPRINTF", "ELSE", + "INTEST", "CONDEXPR", "POSTINCR", "PREINCR", "POSTDECR", "PREDECR", + "VAR", "IVAR", "VARNF", "CALL", "NUMBER", "STRING", "REGEXPR", "'?'", + "':'", "GETLINE", "RETURN", "SPLIT", "SUBSTR", "WHILE", "CAT", "'+'", + "'-'", "'*'", "'%'", "NOT", "UMINUS", "UPLUS", "POWER", "DECR", "INCR", + "INDIRECT", "LASTTOKEN", "$accept", "program", "and", "bor", "comma", + "do", "else", "for", "$@1", "$@2", "$@3", "funcname", "if", "lbrace", + "nl", "opt_nl", "opt_pst", "opt_simple_stmt", "pas", "pa_pat", "pa_stat", + "$@4", "pa_stats", "patlist", "ppattern", "pattern", "plist", "pplist", + "prarg", "print", "pst", "rbrace", "re", "reg_expr", "$@5", "rparen", "simple_stmt", "st", "stmt", "$@6", "$@7", "$@8", "stmtlist", "subop", "string", "term", "var", "varlist", "varname", "while", YY_NULLPTR }; @@ -701,16 +706,16 @@ static const yytype_uint16 yytoknum[] = 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 63, 58, 338, 339, 340, 341, 342, - 343, 43, 45, 42, 37, 344, 345, 346, 347, 348, - 349, 350, 351 + 335, 336, 337, 338, 63, 58, 339, 340, 341, 342, + 343, 344, 43, 45, 42, 37, 345, 346, 347, 348, + 349, 350, 351, 352 }; # endif -#define YYPACT_NINF -324 +#define YYPACT_NINF -316 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-324))) + (!!((Yystate) == (-316))) #define YYTABLE_NINF -32 @@ -721,43 +726,43 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 682, -324, -324, -324, 7, 1583, -324, 156, -324, 12, - 12, -324, 4212, -324, -324, 56, 4571, 49, -324, -324, - 58, 71, 79, -324, -324, -324, 81, -324, -324, -31, - 83, 94, 4571, 4571, 4270, 57, 57, 4571, 795, 187, - -324, 158, 3498, -324, -324, 146, -57, -5, -23, 30, - -324, -324, 795, 795, 2185, 26, -34, 4027, 4212, 4571, - -5, 90, -324, -324, 163, 4212, 4212, 4212, 4085, 4571, - 148, 4212, 4212, 85, 85, -324, 85, -324, -324, -324, - -324, -324, 193, 160, 160, -13, -324, 1735, 191, 192, - 160, 160, -324, -324, 1735, 195, 196, -324, 1409, 795, - 3498, 4328, 160, -324, 863, -324, 193, 795, 1583, 114, - 4212, -324, -324, 4212, 4212, 4212, 4212, 4212, 4212, -13, - 4212, 1793, 1851, -5, 4212, -324, 4386, 4571, 4571, 4571, - 4571, 4571, 4212, -324, -324, 4212, 931, 999, -324, -324, - 1909, 166, 1909, 200, -324, 62, 3498, 2676, 125, 2585, - 2585, 111, -324, 132, -5, 4571, 2585, 2585, -324, 208, - -324, 193, 208, -324, -324, 201, 1677, -324, 1467, 4212, - -324, -324, 1677, -324, 4212, -324, 1409, 141, 1067, 4212, - 3900, 219, 39, -324, -5, -20, -324, -324, -324, 1409, - 4212, 1135, -324, 57, 3749, -324, 3749, 3749, 3749, 3749, - 3749, 3749, -324, 2767, -324, 3669, -324, 3589, 2585, 219, - 4571, 85, -3, -3, 85, 85, 85, 3498, 98, -324, - -324, -324, 3498, -13, 3498, -324, -324, 1909, -324, 136, - 1909, 1909, -324, -324, -5, 32, 1909, -324, -324, 4212, - -324, 218, -324, 22, 2858, -324, 2858, -324, -324, 1205, - -324, 224, 143, 4444, -13, 4444, 1967, 2025, -5, 2083, - 4571, 4571, 4571, 4444, -324, 12, -324, -324, 4212, 1909, - 1909, -5, -324, -324, 3498, -324, 21, 226, 2949, 220, - 3040, 222, 147, 2287, 106, 162, -13, 226, 226, 149, - -324, -324, -324, 198, 4212, 4513, -324, -324, 3820, 4154, - 3969, 3900, -5, -5, -5, 3900, 795, 3498, 2389, 2491, - -324, -324, 12, -324, -324, -324, -324, -324, 1909, -324, - 1909, -324, 193, 4212, 234, 239, -13, 150, 4444, 1273, - -324, 36, -324, 36, 795, 3131, 237, 3222, 1525, 3316, - 226, 4212, -324, 198, 3900, -324, 238, 240, 1341, -324, - -324, -324, 234, 193, 1409, 3407, -324, -324, -324, 226, - 1525, -324, 160, 1409, 234, -324, -324, 226, 1409, -324 + 635, -316, -316, -316, 10, 1580, -316, 151, -316, 3, + 3, -316, 4178, -316, -316, 29, 4496, 18, -316, -316, + 40, 44, 56, -316, -316, -316, 71, -316, -316, 81, + 95, 104, 4496, 4496, 4226, 261, 261, 4496, 763, 76, + -316, 157, 3511, -316, -316, 106, -62, -3, -34, 117, + -316, -316, 763, 763, 2184, 39, 53, 4014, 4178, 4496, + -3, 32, -316, -316, 113, 4178, 4178, 4178, 4072, 4496, + 115, 4178, 4178, 65, 65, -316, 65, -316, -316, -316, + -316, -316, 166, 158, 158, -14, -316, 1733, 164, 178, + 158, 158, -316, -316, 1733, 186, 190, -316, 1386, 763, + 3511, 4284, 158, -316, 832, -316, 166, 763, 1580, 108, + 4178, -316, -316, 4178, 4178, 4178, 4178, 4178, 4178, -14, + 4178, 1791, 1849, -3, 4178, -316, 4332, 4496, 4496, 4496, + 4496, 4496, 4178, -316, -316, 4178, 901, 970, -316, -316, + 1907, 155, 1907, 192, -316, 62, 3511, 2680, 116, 2588, + 2588, 80, -316, 87, -3, 4496, 2588, 2588, -316, 196, + -316, 166, 196, -316, -316, 191, 1675, -316, 1454, 4178, + -316, -316, 1675, -316, 4178, -316, 1386, 130, 1039, 4178, + 3894, 201, 57, -316, -3, -30, -316, -316, -316, 1386, + 4178, 1108, -316, 261, 3765, -316, 3765, 3765, 3765, 3765, + 3765, 3765, -316, 2772, -316, 3684, -316, 3603, 2588, 201, + 4496, 65, 43, 43, 65, 65, 65, 3511, 27, -316, + -316, -316, 3511, -14, 3511, -316, -316, 1907, -316, 107, + 1907, 1907, -316, -316, -3, 2, 1907, -316, -316, 4178, + -316, 203, -316, -11, 2864, -316, 2864, -316, -316, 1179, + -316, 206, 128, 4400, -14, 4400, 1965, 2023, -3, 2081, + 4496, 4496, 4496, 4400, -316, 3, -316, -316, 4178, 1907, + 1907, -3, -316, -316, 3511, -316, 6, 210, 2956, 204, + 3048, 213, 143, 2287, 47, 188, -14, 210, 210, 132, + -316, -316, -316, 193, 4178, 4448, -316, -316, 3813, 4120, + 3966, 3894, -3, -3, -3, 3894, 763, 3511, 2390, 2493, + -316, -316, 3, -316, -316, -316, -316, -316, 1907, -316, + 1907, -316, 166, 4178, 217, 223, -14, 147, 4400, 1248, + -316, 33, -316, 33, 763, 3140, 220, 3232, 1522, 3327, + 210, 4178, -316, 193, 3894, -316, 226, 232, 1317, -316, + -316, -316, 217, 166, 1386, 3419, -316, -316, -316, 210, + 1522, -316, 158, 1386, 217, -316, -316, 210, 1386, -316 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -807,11 +812,11 @@ static const yytype_uint8 yydefact[] = /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -324, -324, -1, 46, 5, -324, -324, -324, -324, -324, - -324, -324, -324, -4, -73, -67, 225, -323, -324, 69, - 152, -324, -324, -43, -192, 482, -175, -324, -324, -324, - -324, -324, -32, -102, -324, -215, -165, -40, 381, -324, - -324, -324, -25, -324, -324, 236, -16, -324, 103, -324 + -316, -316, -1, 46, 5, -316, -316, -316, -316, -316, + -316, -316, -316, -4, -73, -67, 209, -315, -316, 61, + 145, -316, -316, -43, -192, 482, -175, -316, -316, -316, + -316, -316, -32, -102, -316, -215, -165, -40, 381, -316, + -316, -316, -25, -316, -316, 236, -16, -316, 103, -316 }; /* YYDEFGOTO[NTERM-NUM]. */ @@ -829,44 +834,44 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 61, 38, 75, 242, 252, 52, 53, 8, 195, 159, - 126, 69, 126, 70, 14, 352, 61, 61, 61, 77, - 78, 61, 209, 11, 151, 153, 61, 136, 137, 287, - 221, 288, 14, 159, 125, 107, 138, 364, 61, 190, - 135, 221, 141, 61, 164, 221, 132, 167, 135, 263, - 170, 171, 260, 61, 173, 23, 24, 25, 143, 140, - 142, 295, 186, 298, 299, 300, 286, 301, 57, 183, - 65, 305, 138, 23, 178, 25, 261, 14, 226, 262, - 37, 14, 191, 66, 61, 185, 133, 134, 159, 133, - 134, 67, 218, 68, 238, 71, 127, 128, 129, 130, - 129, 130, 14, 131, 38, 131, 72, 310, 138, 340, - 61, 61, 61, 61, 61, 61, 138, 272, 23, 327, - 25, 138, 23, 24, 25, 321, 240, 232, 279, 281, - 61, 61, 245, 61, 61, 62, 344, 359, 63, 61, - 61, 61, 138, 23, 24, 25, 138, 37, 233, 367, - 61, 296, 275, 138, 230, 231, 61, 138, 124, 293, - 138, 235, 236, 317, 61, 50, 343, 2, 37, 158, - 51, 158, 3, 242, 161, 148, 322, 267, 61, 256, + 61, 38, 75, 242, 252, 52, 53, 135, 195, 159, + 8, 221, 126, 70, 11, 221, 61, 61, 61, 77, + 78, 61, 209, 352, 151, 153, 61, 136, 137, 287, + 125, 288, 14, 159, 286, 107, 132, 138, 61, 190, + 263, 57, 221, 61, 164, 364, 272, 167, 14, 138, + 170, 171, 65, 61, 173, 141, 66, 138, 126, 140, + 142, 295, 186, 298, 299, 300, 321, 301, 67, 183, + 260, 305, 138, 23, 178, 25, 133, 134, 226, 14, + 133, 134, 191, 68, 61, 185, 106, 11, 159, 23, + 138, 25, 218, 310, 238, 261, 232, 138, 262, 127, + 128, 129, 130, 233, 38, 62, 131, 71, 63, 340, + 61, 61, 61, 61, 61, 61, 72, 138, 124, 327, + 23, 24, 25, 275, 69, 148, 240, 14, 279, 281, + 61, 61, 245, 61, 61, 135, 344, 359, 138, 61, + 61, 61, 133, 134, 293, 37, 143, 129, 130, 367, + 61, 296, 131, 138, 230, 231, 61, 138, 155, 317, + 50, 235, 236, 343, 61, 51, 2, 158, 23, 24, + 25, 3, 161, 242, 131, 158, 168, 267, 61, 256, 61, 61, 61, 61, 61, 61, 259, 61, 165, 61, - 155, 61, 61, 131, 61, 242, 284, 106, 11, 133, - 134, 61, 158, 168, 169, 175, 61, 174, 61, 193, - 223, 228, 159, 269, 270, 225, 336, 237, 323, 239, - 248, 183, 202, 183, 183, 183, 257, 183, 61, 138, - 61, 183, 285, 292, 276, 311, 314, 185, 316, 185, - 185, 185, 326, 185, 61, 61, 61, 185, 325, 159, - 275, 341, 60, 350, 356, 338, 357, 142, 61, 265, - 192, 306, 61, 0, 61, 0, 108, 61, 73, 74, + 169, 61, 61, 37, 61, 242, 284, 158, 174, 175, + 223, 61, 322, 228, 193, 237, 61, 225, 61, 239, + 248, 138, 159, 269, 270, 292, 336, 285, 323, 311, + 314, 183, 202, 183, 183, 183, 257, 183, 61, 316, + 61, 183, 325, 275, 276, 341, 350, 185, 326, 185, + 185, 185, 356, 185, 61, 61, 61, 185, 357, 159, + 108, 265, 60, 192, 0, 338, 0, 142, 61, 0, + 0, 306, 61, 0, 61, 0, 0, 61, 73, 74, 76, 243, 0, 79, 0, 0, 0, 0, 123, 61, 159, 329, 61, 61, 61, 61, 360, 318, 320, 61, 123, 61, 61, 61, 256, 76, 183, 256, 256, 256, - 256, 0, 0, 0, 256, 154, 0, 0, 334, 348, + 256, 0, 0, 0, 256, 154, 0, 14, 334, 348, 0, 0, 185, 331, 333, 346, 0, 347, 0, 61, 0, 61, 365, 61, 0, 0, 273, 0, 61, 0, 0, 0, 142, 0, 0, 0, 123, 184, 282, 61, - 0, 257, 0, 256, 257, 257, 257, 257, 0, 0, - 0, 257, 0, 0, 0, 0, 0, 297, 0, 0, + 0, 257, 0, 256, 257, 257, 257, 257, 23, 24, + 25, 257, 0, 0, 0, 0, 0, 297, 0, 0, 0, 0, 211, 212, 213, 214, 215, 216, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 123, 123, 0, 123, 123, 0, 0, 324, 257, 234, 123, 123, 0, 0, 0, 0, 0, 0, 0, 0, 123, 0, 0, 0, 0, 0, 123, 0, @@ -892,164 +897,164 @@ static const yytype_int16 yytable[] = 201, 0, 203, 205, 207, 0, 208, 0, 0, 0, 0, 0, 0, 0, 217, 0, 0, 146, 0, 0, 0, 0, 222, 0, 224, 0, 0, 0, 0, 0, - 291, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 244, 0, 0, 0, 0, 246, 0, 0, 0, + 291, 0, 0, 0, 0, -29, 1, 0, 0, 0, + 0, 0, -29, -29, 2, 0, -29, -29, 0, 3, + -29, 244, 0, 0, 0, 0, 246, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -29, 1, 0, 0, 0, 0, 0, -29, - -29, 2, 0, -29, -29, 0, 3, -29, 0, 0, + 0, -29, -29, 0, -29, 0, 0, 0, 0, 0, + -29, -29, -29, 0, -29, 0, -29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 274, - 188, 0, 278, 280, 0, 0, 0, 0, 283, 0, - 0, 146, 0, 0, 0, 0, 0, -29, -29, 188, - -29, 0, 0, 0, 0, 361, -29, -29, -29, 0, - -29, 0, -29, 0, 366, 0, 0, 0, 0, 369, + 188, 0, 278, 280, -29, 0, 0, 0, 283, 0, + 0, 146, -29, -29, -29, -29, -29, -29, 0, 188, + 0, -29, 0, -29, -29, 361, 0, -29, -29, 0, + 0, -29, 0, 0, 366, -29, -29, -29, 0, 369, 307, 308, 309, 0, 0, 0, 0, 0, 0, 0, - -29, 0, 0, 0, 0, 0, 0, 0, -29, -29, - -29, -29, -29, -29, 0, 0, 54, -29, 0, -29, - -29, 0, 0, -29, -29, 0, 0, -29, 0, 0, - 0, -29, -29, -29, 0, 0, 80, 0, 0, 0, - 335, 0, 337, 0, 81, 339, 11, 12, 0, 82, - 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 355, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 14, 15, 83, 16, 84, 85, 86, 87, 88, 0, - 18, 19, 89, 20, 0, 21, 90, 91, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, - 0, 92, 93, 22, 11, 12, 0, 82, 13, 0, - 187, 23, 24, 25, 26, 27, 28, 0, 0, 0, - 29, 94, 30, 31, 95, 0, 32, 33, 0, 0, - 34, 0, 0, 0, 35, 36, 37, 0, 14, 15, + 0, 0, 81, 0, 11, 12, 54, 82, 13, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 335, 0, 337, 0, 0, 339, 0, 0, 0, 14, + 15, 83, 16, 84, 85, 86, 87, 88, 0, 18, + 19, 89, 20, 355, 21, 90, 91, 0, 0, 0, + 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, + 92, 93, 22, 11, 12, 0, 82, 13, 0, 187, + 23, 24, 25, 26, 27, 28, 0, 0, 0, 29, + 94, 30, 31, 95, 0, 32, 33, 0, 0, 34, + 0, 0, 0, 35, 36, 37, 0, 0, 14, 15, 83, 16, 84, 85, 86, 87, 88, 0, 18, 19, 89, 20, 0, 21, 90, 91, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 92, 93, 22, 11, 12, 0, 82, 13, 0, 219, 23, 24, 25, 26, 27, 28, 0, 0, 0, 29, 94, 30, 31, 95, 0, 32, 33, 0, 0, 34, 0, - 0, 0, 35, 36, 37, 0, 14, 15, 83, 16, + 0, 0, 35, 36, 37, 0, 0, 14, 15, 83, + 16, 84, 85, 86, 87, 88, 0, 18, 19, 89, + 20, 0, 21, 90, 91, 0, 0, 0, 0, 0, + 0, 80, 0, 0, 0, 0, 0, 0, 92, 93, + 22, 11, 12, 0, 82, 13, 0, 220, 23, 24, + 25, 26, 27, 28, 0, 0, 0, 29, 94, 30, + 31, 95, 0, 32, 33, 0, 0, 34, 0, 0, + 0, 35, 36, 37, 0, 0, 14, 15, 83, 16, 84, 85, 86, 87, 88, 0, 18, 19, 89, 20, 0, 21, 90, 91, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 92, 93, 22, - 11, 12, 0, 82, 13, 0, 220, 23, 24, 25, + 11, 12, 0, 82, 13, 0, 250, 23, 24, 25, 26, 27, 28, 0, 0, 0, 29, 94, 30, 31, 95, 0, 32, 33, 0, 0, 34, 0, 0, 0, - 35, 36, 37, 0, 14, 15, 83, 16, 84, 85, + 35, 36, 37, 0, 0, 14, 15, 83, 16, 84, + 85, 86, 87, 88, 0, 18, 19, 89, 20, 0, + 21, 90, 91, 0, 0, 0, 0, 0, 0, 80, + 0, 0, 0, 0, 0, 0, 92, 93, 22, 11, + 12, 0, 82, 13, 0, 266, 23, 24, 25, 26, + 27, 28, 0, 0, 0, 29, 94, 30, 31, 95, + 0, 32, 33, 0, 0, 34, 0, 0, 0, 35, + 36, 37, 0, 0, 14, 15, 83, 16, 84, 85, + 86, 87, 88, 0, 18, 19, 89, 20, 0, 21, + 90, 91, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 0, 0, 0, 0, 92, 93, 22, 290, 0, + 11, 12, 0, 82, 13, 23, 24, 25, 26, 27, + 28, 0, 0, 0, 29, 94, 30, 31, 95, 0, + 32, 33, 0, 0, 34, 0, 0, 0, 35, 36, + 37, 0, 0, 0, 0, 14, 15, 83, 16, 84, + 85, 86, 87, 88, 0, 18, 19, 89, 20, 0, + 21, 90, 91, 0, 0, 0, 0, 0, 0, 80, + 0, 0, 0, 0, 0, 0, 92, 93, 22, 11, + 12, 0, 82, 13, 0, 345, 23, 24, 25, 26, + 27, 28, 0, 0, 0, 29, 94, 30, 31, 95, + 0, 32, 33, 0, 0, 34, 0, 0, 0, 35, + 36, 37, 0, 0, 14, 15, 83, 16, 84, 85, 86, 87, 88, 0, 18, 19, 89, 20, 0, 21, 90, 91, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 92, 93, 22, 11, 12, - 0, 82, 13, 0, 250, 23, 24, 25, 26, 27, + 0, 82, 13, 0, 358, 23, 24, 25, 26, 27, 28, 0, 0, 0, 29, 94, 30, 31, 95, 0, 32, 33, 0, 0, 34, 0, 0, 0, 35, 36, - 37, 0, 14, 15, 83, 16, 84, 85, 86, 87, + 37, 0, 0, 14, 15, 83, 16, 84, 85, 86, + 87, 88, 0, 18, 19, 89, 20, 0, 21, 90, + 91, 0, 0, 0, 0, 0, 0, 80, 0, 0, + 0, 0, 0, 0, 92, 93, 22, 11, 12, 0, + 82, 13, 0, 0, 23, 24, 25, 26, 27, 28, + 0, 0, 0, 29, 94, 30, 31, 95, 0, 32, + 33, 0, 0, 34, 0, 0, 0, 35, 36, 37, + 0, 0, 14, 15, 83, 16, 84, 85, 86, 87, 88, 0, 18, 19, 89, 20, 0, 21, 90, 91, - 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, - 0, 0, 0, 92, 93, 22, 11, 12, 0, 82, - 13, 0, 266, 23, 24, 25, 26, 27, 28, 0, + 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, + 0, 0, 0, 92, 93, 22, 12, 0, -31, 13, + 0, 0, 0, 23, 24, 25, 26, 27, 28, 0, 0, 0, 29, 94, 30, 31, 95, 0, 32, 33, 0, 0, 34, 0, 0, 0, 35, 36, 37, 0, - 14, 15, 83, 16, 84, 85, 86, 87, 88, 0, - 18, 19, 89, 20, 0, 21, 90, 91, 0, 0, - 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, - 0, 92, 93, 22, 290, 0, 11, 12, 0, 82, - 13, 23, 24, 25, 26, 27, 28, 0, 0, 0, - 29, 94, 30, 31, 95, 0, 32, 33, 0, 0, - 34, 0, 0, 0, 35, 36, 37, 0, 0, 0, - 14, 15, 83, 16, 84, 85, 86, 87, 88, 0, - 18, 19, 89, 20, 0, 21, 90, 91, 0, 0, - 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, - 0, 92, 93, 22, 11, 12, 0, 82, 13, 0, - 345, 23, 24, 25, 26, 27, 28, 0, 0, 0, - 29, 94, 30, 31, 95, 0, 32, 33, 0, 0, - 34, 0, 0, 0, 35, 36, 37, 0, 14, 15, - 83, 16, 84, 85, 86, 87, 88, 0, 18, 19, - 89, 20, 0, 21, 90, 91, 0, 0, 0, 0, - 0, 0, 80, 0, 0, 0, 0, 0, 0, 92, - 93, 22, 11, 12, 0, 82, 13, 0, 358, 23, - 24, 25, 26, 27, 28, 0, 0, 0, 29, 94, - 30, 31, 95, 0, 32, 33, 0, 0, 34, 0, - 0, 0, 35, 36, 37, 0, 14, 15, 83, 16, - 84, 85, 86, 87, 88, 0, 18, 19, 89, 20, - 0, 21, 90, 91, 0, 0, 0, 0, 0, 0, - 80, 0, 0, 0, 0, 0, 0, 92, 93, 22, - 11, 12, 0, 82, 13, 0, 0, 23, 24, 25, - 26, 27, 28, 0, 0, 0, 29, 94, 30, 31, - 95, 0, 32, 33, 0, 0, 34, 0, 0, 0, - 35, 36, 37, 0, 14, 15, 83, 16, 84, 85, - 86, 87, 88, 0, 18, 19, 89, 20, 80, 21, - 90, 91, 0, 0, 0, 0, 0, 0, 0, 12, - 0, -31, 13, 0, 0, 92, 93, 22, 0, 0, - 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, - 28, 0, 0, 0, 29, 94, 30, 31, 95, 0, - 32, 33, 14, 15, 34, 16, 0, 85, 35, 36, - 37, 0, 18, 19, 0, 20, 80, 21, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, - 13, -31, 0, 92, 93, 22, 0, 0, 0, 0, - 0, 0, 0, 23, 24, 25, 26, 27, 28, 0, - 0, 0, 29, 0, 30, 31, 0, 0, 32, 33, - 14, 15, 34, 16, 0, 85, 35, 36, 37, 0, - 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, - 9, 10, 0, 0, 11, 12, 0, 0, 13, 0, - 0, 92, 93, 22, 0, 0, 0, 0, 0, 0, - 0, 23, 24, 25, 26, 27, 28, 0, 0, 0, - 29, 0, 30, 31, 0, 0, 32, 33, 14, 15, - 34, 16, 0, 0, 35, 36, 37, 17, 18, 19, - 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, - 24, 25, 26, 27, 28, 0, 0, 0, 29, 0, - 30, 31, 0, 0, 32, 33, 158, 0, 34, 58, - 109, 161, 35, 36, 37, 0, 0, 0, 0, 0, - 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 111, 112, 0, 113, 114, 115, 116, 117, - 118, 119, 14, 15, 0, 16, 0, 0, 0, 0, - 0, 0, 18, 19, 0, 20, 0, 21, 0, 0, - 0, 0, 0, 0, 158, 0, 0, 12, 0, 161, - 13, 0, 0, 0, 0, 22, 0, 0, 0, 0, - 0, 0, 0, 23, 24, 25, 26, 27, 28, 0, - 120, 0, 29, 0, 30, 31, 0, 0, 32, 33, - 14, 15, 59, 16, 0, 0, 35, 36, 37, 0, + 14, 15, 0, 16, 0, 85, 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, - 0, 0, 204, 0, 0, 12, 0, 0, 13, 0, - 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, + 0, 92, 93, 22, 12, 0, 0, 13, -31, 0, 0, 23, 24, 25, 26, 27, 28, 0, 0, 0, - 29, 0, 30, 31, 0, 0, 32, 33, 14, 15, - 34, 16, 0, 0, 35, 36, 37, 0, 18, 19, - 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, - 206, 0, 0, 12, 0, 0, 13, 0, 0, 0, - 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, + 29, 0, 30, 31, 0, 0, 32, 33, 0, 0, + 34, 0, 0, 0, 35, 36, 37, 0, 14, 15, + 0, 16, 0, 85, 0, 0, 0, 0, 18, 19, + 0, 20, 0, 21, 0, 0, 0, 9, 10, 0, + 0, 11, 12, 0, 0, 13, 0, 0, 0, 92, + 93, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 0, 0, 0, 29, 0, 30, 31, 0, 0, 32, 33, 14, 15, 34, 16, - 0, 0, 35, 36, 37, 0, 18, 19, 0, 20, - 0, 21, 0, 0, 0, 0, 0, 0, 221, 0, - 0, 12, 0, 0, 13, 0, 0, 0, 0, 22, + 0, 0, 35, 36, 37, 17, 18, 19, 0, 20, + 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 0, 0, 0, 29, 0, 30, 31, - 0, 0, 32, 33, 14, 15, 34, 16, 0, 0, - 35, 36, 37, 0, 18, 19, 0, 20, 0, 21, - 0, 0, 0, 0, 0, 0, 204, 0, 0, 294, - 0, 0, 13, 0, 0, 0, 0, 22, 0, 0, - 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, - 28, 0, 0, 0, 29, 0, 30, 31, 0, 0, - 32, 33, 14, 15, 34, 16, 0, 0, 35, 36, - 37, 0, 18, 19, 0, 20, 0, 21, 0, 0, - 0, 0, 0, 0, 206, 0, 0, 294, 0, 0, - 13, 0, 0, 0, 0, 22, 0, 0, 0, 0, - 0, 0, 0, 23, 24, 25, 26, 27, 28, 0, - 0, 0, 29, 0, 30, 31, 0, 0, 32, 33, - 14, 15, 34, 16, 0, 0, 35, 36, 37, 0, - 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, - 0, 0, 221, 0, 0, 294, 0, 0, 13, 0, - 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, - 0, 23, 24, 25, 26, 27, 28, 0, 0, 0, - 29, 0, 30, 31, 0, 0, 32, 33, 14, 15, - 34, 16, 0, 0, 35, 36, 37, 0, 18, 19, - 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 33, 158, 0, 34, 58, 109, 161, + 35, 36, 37, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, - 24, 25, 26, 27, 28, 0, 0, 0, 29, 0, - 30, 31, 0, 0, 32, 33, 0, 0, 34, 0, - 0, 0, 35, 36, 37, 138, 0, 58, 109, 0, - 0, 139, 0, 0, 0, 0, 0, 0, 110, 0, + 0, 111, 112, 0, 113, 114, 115, 116, 117, 118, + 119, 14, 15, 0, 16, 0, 0, 0, 0, 0, + 0, 18, 19, 0, 20, 0, 21, 0, 0, 0, + 0, 0, 158, 0, 0, 12, 0, 161, 13, 0, + 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, + 0, 0, 23, 24, 25, 26, 27, 28, 0, 120, + 0, 29, 0, 30, 31, 0, 0, 32, 33, 14, + 15, 59, 16, 0, 0, 35, 36, 37, 0, 18, + 19, 0, 20, 0, 21, 0, 0, 0, 0, 0, + 204, 0, 0, 12, 0, 0, 13, 0, 0, 0, + 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, + 23, 24, 25, 26, 27, 28, 0, 0, 0, 29, + 0, 30, 31, 0, 0, 32, 33, 14, 15, 34, + 16, 0, 0, 35, 36, 37, 0, 18, 19, 0, + 20, 0, 21, 0, 0, 0, 0, 0, 206, 0, + 0, 12, 0, 0, 13, 0, 0, 0, 0, 0, + 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, + 25, 26, 27, 28, 0, 0, 0, 29, 0, 30, + 31, 0, 0, 32, 33, 14, 15, 34, 16, 0, + 0, 35, 36, 37, 0, 18, 19, 0, 20, 0, + 21, 0, 0, 0, 0, 0, 221, 0, 0, 12, + 0, 0, 13, 0, 0, 0, 0, 0, 22, 0, + 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, + 27, 28, 0, 0, 0, 29, 0, 30, 31, 0, + 0, 32, 33, 14, 15, 34, 16, 0, 0, 35, + 36, 37, 0, 18, 19, 0, 20, 0, 21, 0, + 0, 0, 0, 0, 204, 0, 0, 294, 0, 0, + 13, 0, 0, 0, 0, 0, 22, 0, 0, 0, + 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, + 0, 0, 0, 29, 0, 30, 31, 0, 0, 32, + 33, 14, 15, 34, 16, 0, 0, 35, 36, 37, + 0, 18, 19, 0, 20, 0, 21, 0, 0, 0, + 0, 0, 206, 0, 0, 294, 0, 0, 13, 0, + 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, + 0, 0, 23, 24, 25, 26, 27, 28, 0, 0, + 0, 29, 0, 30, 31, 0, 0, 32, 33, 14, + 15, 34, 16, 0, 0, 35, 36, 37, 0, 18, + 19, 0, 20, 0, 21, 0, 0, 0, 0, 0, + 221, 0, 0, 294, 0, 0, 13, 0, 0, 0, + 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, + 23, 24, 25, 26, 27, 28, 0, 0, 0, 29, + 0, 30, 31, 0, 0, 32, 33, 14, 15, 34, + 16, 0, 0, 35, 36, 37, 0, 18, 19, 0, + 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, + 25, 26, 27, 28, 0, 0, 0, 29, 0, 30, + 31, 0, 0, 32, 33, 0, 0, 34, 0, 0, + 0, 35, 36, 37, 138, 0, 58, 109, 0, 0, + 139, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 112, 0, 113, 114, 115, 116, 117, 118, 119, 14, 15, 0, 16, 0, 0, 0, 0, 0, 0, @@ -1061,16 +1066,36 @@ static const yytype_int16 yytable[] = 59, 0, 0, 0, 35, 36, 37, 138, 0, 58, 109, 0, 0, 319, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 111, 112, 0, 113, 114, 115, 116, 117, - 118, 119, 14, 15, 0, 16, 0, 0, 0, 0, - 0, 0, 18, 19, 0, 20, 0, 21, 0, 0, + 0, 0, 0, 111, 112, 0, 113, 114, 115, 116, + 117, 118, 119, 14, 15, 0, 16, 0, 0, 0, + 0, 0, 0, 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, - 0, 0, 0, 23, 24, 25, 26, 27, 28, 0, - 120, 0, 29, 0, 30, 31, 0, 0, 32, 33, - 0, 0, 59, 0, 0, 0, 35, 36, 37, 138, - 0, 58, 109, 0, 0, 330, 0, 0, 0, 0, - 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, + 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, + 0, 120, 0, 29, 0, 30, 31, 0, 0, 32, + 33, 0, 0, 59, 0, 0, 0, 35, 36, 37, + 138, 0, 58, 109, 0, 0, 330, 0, 0, 0, + 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 111, 112, 0, 113, + 114, 115, 116, 117, 118, 119, 14, 15, 0, 16, + 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, + 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, + 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, + 26, 27, 28, 0, 120, 0, 29, 0, 30, 31, + 0, 0, 32, 33, 0, 0, 59, 0, 0, 0, + 35, 36, 37, 138, 0, 58, 109, 0, 0, 332, + 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, + 112, 0, 113, 114, 115, 116, 117, 118, 119, 14, + 15, 0, 16, 0, 0, 0, 0, 0, 0, 18, + 19, 0, 20, 0, 21, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, + 23, 24, 25, 26, 27, 28, 0, 120, 0, 29, + 0, 30, 31, 0, 0, 32, 33, 0, 138, 59, + 58, 109, 0, 35, 36, 37, 0, 0, 0, 0, + 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 112, 0, 113, 114, 115, 116, 117, 118, 119, 14, 15, 0, 16, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, @@ -1078,9 +1103,8 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 0, 120, 0, 29, 0, 30, 31, 0, 0, - 32, 33, 0, 0, 59, 0, 0, 0, 35, 36, - 37, 138, 0, 58, 109, 0, 0, 332, 0, 0, - 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, + 32, 33, 58, 109, 59, 0, 139, 0, 35, 36, + 37, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 112, 0, 113, 114, 115, 116, 117, 118, 119, 14, 15, 0, 16, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, @@ -1088,8 +1112,17 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 0, 120, 0, 29, 0, 30, 31, - 0, 0, 32, 33, 0, 138, 59, 58, 109, 0, - 35, 36, 37, 0, 0, 0, 0, 0, 110, 0, + 0, 0, 32, 33, 58, 109, 59, 0, 0, 0, + 35, 36, 37, 0, 0, 110, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 111, 112, + 0, 113, 114, 115, 116, 117, 118, 119, 14, 15, + 0, 16, 0, 0, 0, 0, 0, 0, 18, 19, + 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, + 24, 25, 26, 27, 28, 0, 120, 268, 29, 0, + 30, 31, 0, 0, 32, 33, 58, 109, 59, 0, + 275, 0, 35, 36, 37, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 112, 0, 113, 114, 115, 116, 117, 118, 119, 14, 15, 0, 16, 0, 0, 0, 0, 0, 0, @@ -1098,35 +1131,17 @@ static const yytype_int16 yytable[] = 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 0, 120, 0, 29, 0, 30, 31, 0, 0, 32, 33, 58, 109, - 59, 0, 139, 0, 35, 36, 37, 0, 0, 110, + 59, 0, 313, 0, 35, 36, 37, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 111, 112, 0, 113, 114, 115, 116, 117, 118, - 119, 14, 15, 0, 16, 0, 0, 0, 0, 0, - 0, 18, 19, 0, 20, 0, 21, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, - 0, 0, 23, 24, 25, 26, 27, 28, 0, 120, - 0, 29, 0, 30, 31, 0, 0, 32, 33, 58, - 109, 59, 0, 0, 0, 35, 36, 37, 0, 0, - 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 112, 0, 113, 114, 115, 116, 117, 118, 119, 14, 15, 0, 16, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 0, - 120, 268, 29, 0, 30, 31, 0, 0, 32, 33, - 58, 109, 59, 0, 275, 0, 35, 36, 37, 0, + 120, 0, 29, 0, 30, 31, 0, 0, 32, 33, + 58, 109, 59, 0, 315, 0, 35, 36, 37, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 111, 112, 0, 113, 114, 115, 116, - 117, 118, 119, 14, 15, 0, 16, 0, 0, 0, - 0, 0, 0, 18, 19, 0, 20, 0, 21, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, - 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, - 0, 120, 0, 29, 0, 30, 31, 0, 0, 32, - 33, 58, 109, 59, 0, 313, 0, 35, 36, 37, - 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 112, 0, 113, 114, 115, 116, 117, 118, 119, 14, 15, 0, 16, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, @@ -1134,17 +1149,8 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 0, 120, 0, 29, 0, 30, 31, 0, 0, - 32, 33, 58, 109, 59, 0, 315, 0, 35, 36, + 32, 33, 58, 109, 59, 0, 349, 0, 35, 36, 37, 0, 0, 110, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 111, 112, 0, 113, 114, - 115, 116, 117, 118, 119, 14, 15, 0, 16, 0, - 0, 0, 0, 0, 0, 18, 19, 0, 20, 0, - 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, - 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, - 27, 28, 0, 120, 0, 29, 0, 30, 31, 0, - 0, 32, 33, 58, 109, 59, 0, 349, 0, 35, - 36, 37, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 112, 0, 113, 114, 115, 116, 117, 118, 119, 14, 15, 0, 16, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, @@ -1154,34 +1160,16 @@ static const yytype_int16 yytable[] = 26, 27, 28, 0, 120, 0, 29, 0, 30, 31, 0, 0, 32, 33, 58, 109, 59, 0, 351, 0, 35, 36, 37, 0, 0, 110, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 111, 112, 0, - 113, 114, 115, 116, 117, 118, 119, 14, 15, 0, - 16, 0, 0, 0, 0, 0, 0, 18, 19, 0, - 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, - 25, 26, 27, 28, 0, 120, 0, 29, 0, 30, - 31, 0, 0, 32, 33, 0, 0, 59, 58, 109, - 353, 35, 36, 37, 0, 0, 0, 0, 0, 110, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 111, 112, 0, 113, 114, 115, 116, 117, 118, - 119, 14, 15, 0, 16, 0, 0, 0, 0, 0, - 0, 18, 19, 0, 20, 0, 21, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 111, 112, + 0, 113, 114, 115, 116, 117, 118, 119, 14, 15, + 0, 16, 0, 0, 0, 0, 0, 0, 18, 19, + 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, - 0, 0, 23, 24, 25, 26, 27, 28, 0, 120, - 0, 29, 0, 30, 31, 0, 0, 32, 33, 58, - 109, 59, 0, 362, 0, 35, 36, 37, 0, 0, + 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, + 24, 25, 26, 27, 28, 0, 120, 0, 29, 0, + 30, 31, 0, 0, 32, 33, 0, 0, 59, 58, + 109, 353, 35, 36, 37, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 111, 112, 0, 113, 114, 115, 116, 117, - 118, 119, 14, 15, 0, 16, 0, 0, 0, 0, - 0, 0, 18, 19, 0, 20, 0, 21, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, - 0, 0, 0, 23, 24, 25, 26, 27, 28, 0, - 120, 0, 29, 0, 30, 31, 0, 0, 32, 33, - 58, 109, 59, 0, 0, 0, 35, 36, 37, 0, - 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 112, 0, 113, 114, 115, 116, 117, 118, 119, 14, 15, 0, 16, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, 0, @@ -1189,157 +1177,166 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 0, 120, 0, 29, 0, 30, 31, 0, 0, 32, - 33, 58, 109, 59, 0, 0, 0, 35, 36, 37, + 33, 58, 109, 59, 0, 362, 0, 35, 36, 37, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 111, 0, 0, 113, 114, 115, - 116, 117, 118, 119, 14, 15, 0, 16, 0, 0, - 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, - 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, - 28, 58, 109, 0, 29, 0, 30, 31, 0, 0, - 32, 33, 110, 0, 59, 0, 0, 0, 35, 36, - 37, 0, 0, 0, 0, 0, 0, 113, 114, 115, - 116, 117, 118, 119, 14, 15, 0, 16, 0, 0, - 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, - 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, - 28, 58, -32, 0, 29, 0, 30, 31, 0, 0, - 32, 33, -32, 0, 59, 0, 0, 0, 35, 36, - 37, 0, 0, 0, 0, 0, 0, -32, -32, -32, - -32, -32, -32, -32, 14, 15, 0, 16, 0, 0, - 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, - 0, 0, 58, 0, 0, 23, 24, 25, 26, 27, - 28, 0, 0, 253, 0, 0, 30, 31, 0, 0, - 32, 33, 0, 0, 59, 111, 112, 0, 35, 36, - 37, 0, 0, 0, 254, 14, 15, 0, 16, 0, + 0, 0, 0, 0, 0, 111, 112, 0, 113, 114, + 115, 116, 117, 118, 119, 14, 15, 0, 16, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, - 27, 28, 58, 255, 328, 29, 0, 30, 31, 0, - 0, 32, 33, 253, 0, 59, 0, 0, 0, 35, - 36, 37, 0, 0, 0, 111, 112, 0, 0, 0, - 0, 0, 0, 0, 254, 14, 15, 0, 16, 0, - 0, 0, 0, 0, 0, 18, 19, 0, 20, 0, - 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, - 0, 58, 0, 0, 0, 0, 23, 24, 25, 26, - 27, 28, 253, 255, 0, 29, 0, 30, 31, 0, - 0, 32, 33, 0, 111, 59, 0, 0, 0, 35, - 36, 37, 0, 254, 14, 15, 0, 16, 0, 0, - 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, - 0, 0, 13, 144, 0, 0, 0, 22, 0, 0, - 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, - 28, 0, 0, 0, 29, 0, 30, 31, 0, 0, - 32, 33, 14, 15, 59, 16, 0, 0, 35, 36, - 37, 0, 18, 19, 0, 20, 0, 21, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, - 13, 152, 0, 0, 0, 22, 0, 0, 0, 0, - 0, 0, 0, 23, 24, 25, 26, 27, 28, 0, - 0, 0, 29, 0, 30, 31, 0, 0, 32, 33, - 14, 15, 34, 16, 0, 0, 35, 36, 37, 0, - 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, + 27, 28, 0, 120, 0, 29, 0, 30, 31, 0, + 0, 32, 33, 58, 109, 59, 0, 0, 0, 35, + 36, 37, 0, 0, 110, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 111, 112, 0, + 113, 114, 115, 116, 117, 118, 119, 14, 15, 0, + 16, 0, 0, 0, 0, 0, 0, 18, 19, 0, + 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 22, 0, 0, 58, 0, 0, 0, - 0, 23, 24, 25, 26, 27, 28, 253, 0, 0, - 29, 0, 30, 31, 0, 0, 32, 33, 0, 0, - 34, 0, 0, 0, 35, 36, 37, 0, 254, 14, + 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, + 25, 26, 27, 28, 0, 120, 0, 29, 0, 30, + 31, 0, 0, 32, 33, 58, 109, 59, 0, 0, + 0, 35, 36, 37, 0, 0, 110, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, + 0, 0, 113, 114, 115, 116, 117, 118, 119, 14, 15, 0, 16, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 12, 0, 0, 13, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, - 23, 24, 25, 26, 27, 28, 0, 0, 0, 29, - 0, 30, 31, 0, 0, 32, 33, 14, 15, 59, - 16, 0, 0, 35, 36, 37, 0, 18, 19, 0, - 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 58, 0, 0, 13, 0, 0, 0, 0, - 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, - 25, 26, 27, 28, 0, 0, 0, 29, 0, 30, - 31, 0, 0, 32, 33, 14, 15, 34, 16, 0, - 0, 35, 36, 37, 0, 18, 19, 0, 20, 0, - 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 179, 0, 0, 13, 0, 0, 0, 0, 22, 0, - 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, - 27, 28, 0, 0, 0, 29, 0, 30, 31, 0, - 0, 32, 33, 14, 15, 34, 16, 0, 0, 35, - 36, 37, 0, 18, 19, 0, 20, 0, 21, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, - 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, - 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, - 0, 0, 0, 29, 0, 30, 31, 0, 0, 32, - 33, 14, 15, 34, 16, 0, 0, 35, 36, 37, - 0, 18, 19, 0, 20, 0, 21, 0, 0, 0, - 0, 0, 0, 0, 0, 210, 294, 0, 0, 13, - 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, - 0, 0, 23, 24, 25, 26, 27, 28, 0, 0, - 0, 29, 0, 30, 31, 0, 0, 32, 33, 14, - 15, 59, 16, 0, 0, 35, 36, 37, 0, 18, - 19, 0, 20, 0, 21, 0, 0, 0, 0, 0, + 23, 24, 25, 26, 27, 28, 58, 109, 0, 29, + 0, 30, 31, 0, 0, 32, 33, 110, 0, 59, + 0, 0, 0, 35, 36, 37, 0, 0, 0, 0, + 0, 0, 0, 113, 114, 115, 116, 117, 118, 119, + 14, 15, 0, 16, 0, 0, 0, 0, 0, 0, + 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 22, 0, 0, 58, 0, 0, 0, 0, - 23, 24, 25, 26, 27, 28, -32, 0, 0, 29, - 0, 30, 31, 0, 0, 32, 33, 0, 0, 34, - 0, 0, 0, 35, 36, 37, 0, -32, 14, 15, - 0, 16, 0, 0, 0, 0, 0, 0, 18, 19, - 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, + 0, 23, 24, 25, 26, 27, 28, 58, -32, 0, + 29, 0, 30, 31, 0, 0, 32, 33, -32, 0, + 59, 0, 0, 0, 35, 36, 37, 0, 0, 0, + 0, 0, 0, 0, -32, -32, -32, -32, -32, -32, + -32, 14, 15, 0, 16, 0, 0, 0, 0, 0, + 0, 18, 19, 0, 20, 58, 21, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 253, 0, 0, 0, + 0, 0, 0, 0, 22, 0, 0, 0, 0, 111, + 112, 0, 23, 24, 25, 26, 27, 28, 254, 14, + 15, 0, 16, 30, 31, 0, 0, 32, 33, 18, + 19, 59, 20, 0, 21, 35, 36, 37, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, + 23, 24, 25, 26, 27, 28, 58, 255, 328, 29, + 0, 30, 31, 0, 0, 32, 33, 253, 0, 59, + 0, 0, 0, 35, 36, 37, 0, 0, 0, 0, + 111, 112, 0, 0, 0, 0, 0, 0, 0, 254, + 14, 15, 0, 16, 0, 0, 0, 0, 0, 0, + 18, 19, 0, 20, 0, 21, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 22, 0, 0, 0, 0, 58, 0, + 0, 23, 24, 25, 26, 27, 28, 0, 255, 253, + 29, 0, 30, 31, 0, 0, 32, 33, 0, 0, + 59, 0, 111, 0, 35, 36, 37, 0, 0, 0, + 0, 254, 14, 15, 0, 16, 0, 0, 0, 0, + 0, 0, 18, 19, 0, 20, 12, 21, 0, 13, + 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, + 0, 0, 0, 23, 24, 25, 26, 27, 28, 0, + 14, 15, 29, 16, 30, 31, 0, 0, 32, 33, + 18, 19, 59, 20, 0, 21, 35, 36, 37, 0, + 0, 0, 0, 0, 12, 0, 0, 13, 152, 0, + 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, + 0, 23, 24, 25, 26, 27, 28, 0, 0, 0, + 29, 0, 30, 31, 0, 0, 32, 33, 14, 15, + 34, 16, 0, 0, 35, 36, 37, 0, 18, 19, + 0, 20, 58, 21, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 253, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, - 24, 25, 26, 27, 28, 0, 0, 0, 0, 0, - 30, 31, 0, 0, 32, 33, 14, 15, 59, 16, - 0, 0, 35, 36, 37, 0, 18, 19, 0, 20, - 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, + 24, 25, 26, 27, 28, 254, 14, 15, 29, 16, + 30, 31, 0, 0, 32, 33, 18, 19, 34, 20, + 0, 21, 35, 36, 37, 0, 0, 0, 0, 0, + 12, 0, 0, 13, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 0, 0, 0, 29, 0, 30, 31, - 0, 0, 32, 33, 0, 0, 59, 0, 0, 0, - 35, 36, 37 + 0, 0, 32, 33, 14, 15, 59, 16, 0, 0, + 35, 36, 37, 0, 18, 19, 0, 20, 58, 21, + 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, + 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, + 28, 0, 14, 15, 29, 16, 30, 31, 0, 0, + 32, 33, 18, 19, 34, 20, 0, 21, 35, 36, + 37, 0, 0, 0, 0, 0, 179, 0, 0, 13, + 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, + 0, 0, 0, 23, 24, 25, 26, 27, 28, 0, + 0, 0, 29, 0, 30, 31, 0, 0, 32, 33, + 14, 15, 34, 16, 0, 0, 35, 36, 37, 0, + 18, 19, 0, 20, 58, 21, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, + 0, 23, 24, 25, 26, 27, 28, 0, 14, 15, + 29, 16, 30, 31, 0, 0, 32, 33, 18, 19, + 34, 20, 0, 21, 35, 36, 37, 0, 0, 0, + 0, 0, 210, 0, 0, 0, 0, 0, 0, 0, + 0, 22, 294, 0, 0, 13, 0, 0, 0, 23, + 24, 25, 26, 27, 28, 0, 0, 0, 29, 0, + 30, 31, 0, 0, 32, 33, 0, 0, 59, 0, + 0, 0, 35, 36, 37, 0, 14, 15, 0, 16, + 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, + 58, 21, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -32, 0, 0, 0, 0, 0, 0, 0, 22, + 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, + 26, 27, 28, -32, 14, 15, 29, 16, 30, 31, + 0, 0, 32, 33, 18, 19, 34, 20, 58, 21, + 35, 36, 37, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, + 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, + 28, 0, 14, 15, 0, 16, 30, 31, 0, 0, + 32, 33, 18, 19, 59, 20, 0, 21, 35, 36, + 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, + 0, 0, 0, 23, 24, 25, 26, 27, 28, 0, + 0, 0, 29, 0, 30, 31, 0, 0, 32, 33, + 0, 0, 59, 0, 0, 0, 35, 36, 37 }; static const yytype_int16 yycheck[] = { - 16, 5, 34, 168, 179, 9, 10, 0, 110, 82, - 15, 42, 15, 29, 45, 338, 32, 33, 34, 35, - 36, 37, 124, 11, 67, 68, 42, 52, 53, 244, - 9, 246, 45, 106, 91, 39, 10, 360, 54, 106, - 18, 9, 16, 59, 84, 9, 69, 87, 18, 69, - 90, 91, 13, 69, 94, 86, 87, 88, 92, 54, - 55, 253, 102, 255, 256, 257, 44, 259, 12, 101, - 12, 263, 10, 86, 99, 88, 37, 45, 16, 40, - 111, 45, 107, 12, 100, 101, 109, 110, 161, 109, - 110, 12, 135, 12, 161, 12, 101, 102, 103, 104, - 103, 104, 45, 108, 108, 108, 12, 86, 10, 324, - 126, 127, 128, 129, 130, 131, 10, 19, 86, 294, - 88, 10, 86, 87, 88, 19, 166, 16, 230, 231, - 146, 147, 172, 149, 150, 86, 328, 352, 89, 155, - 156, 157, 10, 86, 87, 88, 10, 111, 16, 364, - 166, 253, 16, 10, 149, 150, 172, 10, 12, 16, - 10, 156, 157, 16, 180, 9, 16, 9, 111, 9, - 14, 9, 14, 338, 14, 12, 14, 193, 194, 180, + 16, 5, 34, 168, 179, 9, 10, 18, 110, 82, + 0, 9, 15, 29, 11, 9, 32, 33, 34, 35, + 36, 37, 124, 338, 67, 68, 42, 52, 53, 244, + 92, 246, 46, 106, 45, 39, 70, 10, 54, 106, + 70, 12, 9, 59, 84, 360, 19, 87, 46, 10, + 90, 91, 12, 69, 94, 16, 12, 10, 15, 54, + 55, 253, 102, 255, 256, 257, 19, 259, 12, 101, + 13, 263, 10, 87, 99, 89, 110, 111, 16, 46, + 110, 111, 107, 12, 100, 101, 10, 11, 161, 87, + 10, 89, 135, 87, 161, 38, 16, 10, 41, 102, + 103, 104, 105, 16, 108, 87, 109, 12, 90, 324, + 126, 127, 128, 129, 130, 131, 12, 10, 12, 294, + 87, 88, 89, 16, 43, 12, 166, 46, 230, 231, + 146, 147, 172, 149, 150, 18, 328, 352, 10, 155, + 156, 157, 110, 111, 16, 112, 93, 104, 105, 364, + 166, 253, 109, 10, 149, 150, 172, 10, 43, 16, + 9, 156, 157, 16, 180, 14, 9, 9, 87, 88, + 89, 14, 14, 338, 109, 9, 12, 193, 194, 180, 196, 197, 198, 199, 200, 201, 181, 203, 85, 205, - 42, 207, 208, 108, 210, 360, 239, 10, 11, 109, - 110, 217, 9, 12, 12, 9, 222, 12, 224, 95, - 44, 86, 285, 208, 209, 15, 318, 9, 285, 18, - 79, 253, 119, 255, 256, 257, 180, 259, 244, 10, - 246, 263, 14, 9, 229, 9, 16, 253, 16, 255, - 256, 257, 44, 259, 260, 261, 262, 263, 99, 322, - 16, 12, 16, 16, 16, 322, 16, 252, 274, 190, - 108, 265, 278, -1, 280, -1, 41, 283, 32, 33, + 12, 207, 208, 112, 210, 360, 239, 9, 12, 9, + 45, 217, 14, 87, 96, 9, 222, 15, 224, 18, + 80, 10, 285, 208, 209, 9, 318, 14, 285, 9, + 16, 253, 119, 255, 256, 257, 180, 259, 244, 16, + 246, 263, 100, 16, 229, 12, 16, 253, 45, 255, + 256, 257, 16, 259, 260, 261, 262, 263, 16, 322, + 41, 190, 16, 108, -1, 322, -1, 252, 274, -1, + -1, 265, 278, -1, 280, -1, -1, 283, 32, 33, 34, 168, -1, 37, -1, -1, -1, -1, 42, 295, 353, 306, 298, 299, 300, 301, 353, 282, 283, 305, 54, 307, 308, 309, 295, 59, 328, 298, 299, 300, - 301, -1, -1, -1, 305, 69, -1, -1, 312, 334, + 301, -1, -1, -1, 305, 69, -1, 46, 312, 334, -1, -1, 328, 308, 309, 331, -1, 333, -1, 335, -1, 337, 362, 339, -1, -1, 223, -1, 344, -1, -1, -1, 327, -1, -1, -1, 100, 101, 235, 355, - -1, 295, -1, 344, 298, 299, 300, 301, -1, -1, - -1, 305, -1, -1, -1, -1, -1, 254, -1, -1, + -1, 295, -1, 344, 298, 299, 300, 301, 87, 88, + 89, 305, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, 126, 127, 128, 129, 130, 131, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 112, -1, -1, -1, -1, -1, -1, -1, -1, 146, 147, -1, 149, 150, -1, -1, 286, 344, 155, 156, 157, -1, -1, -1, -1, -1, -1, -1, -1, 166, -1, -1, -1, -1, -1, 172, -1, @@ -1365,479 +1362,471 @@ static const yytype_int16 yycheck[] = 118, -1, 120, 121, 122, -1, 124, -1, -1, -1, -1, -1, -1, -1, 132, -1, -1, 135, -1, -1, -1, -1, 140, -1, 142, -1, -1, -1, -1, -1, - 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 169, -1, -1, -1, -1, 174, -1, -1, -1, + 249, -1, -1, -1, -1, 0, 1, -1, -1, -1, + -1, -1, 7, 8, 9, -1, 11, 12, -1, 14, + 15, 169, -1, -1, -1, -1, 174, -1, -1, -1, -1, 179, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 190, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 0, 1, -1, -1, -1, -1, -1, 7, - 8, 9, -1, 11, 12, -1, 14, 15, -1, -1, + -1, 46, 47, -1, 49, -1, -1, -1, -1, -1, + 55, 56, 57, -1, 59, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 227, - 329, -1, 230, 231, -1, -1, -1, -1, 236, -1, - -1, 239, -1, -1, -1, -1, -1, 45, 46, 348, - 48, -1, -1, -1, -1, 354, 54, 55, 56, -1, - 58, -1, 60, -1, 363, -1, -1, -1, -1, 368, + 329, -1, 230, 231, 79, -1, -1, -1, 236, -1, + -1, 239, 87, 88, 89, 90, 91, 92, -1, 348, + -1, 96, -1, 98, 99, 354, -1, 102, 103, -1, + -1, 106, -1, -1, 363, 110, 111, 112, -1, 368, 268, 269, 270, -1, -1, -1, -1, -1, -1, -1, - 78, -1, -1, -1, -1, -1, -1, -1, 86, 87, - 88, 89, 90, 91, -1, -1, 294, 95, -1, 97, - 98, -1, -1, 101, 102, -1, -1, 105, -1, -1, - -1, 109, 110, 111, -1, -1, 1, -1, -1, -1, - 318, -1, 320, -1, 9, 323, 11, 12, -1, 14, - 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 341, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 45, 46, 47, 48, 49, 50, 51, 52, 53, -1, - 55, 56, 57, 58, -1, 60, 61, 62, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - -1, 76, 77, 78, 11, 12, -1, 14, 15, -1, - 17, 86, 87, 88, 89, 90, 91, -1, -1, -1, - 95, 96, 97, 98, 99, -1, 101, 102, -1, -1, - 105, -1, -1, -1, 109, 110, 111, -1, 45, 46, - 47, 48, 49, 50, 51, 52, 53, -1, 55, 56, - 57, 58, -1, 60, 61, 62, -1, -1, -1, -1, - -1, -1, 1, -1, -1, -1, -1, -1, -1, 76, - 77, 78, 11, 12, -1, 14, 15, -1, 17, 86, - 87, 88, 89, 90, 91, -1, -1, -1, 95, 96, - 97, 98, 99, -1, 101, 102, -1, -1, 105, -1, - -1, -1, 109, 110, 111, -1, 45, 46, 47, 48, - 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, - -1, 60, 61, 62, -1, -1, -1, -1, -1, -1, - 1, -1, -1, -1, -1, -1, -1, 76, 77, 78, - 11, 12, -1, 14, 15, -1, 17, 86, 87, 88, - 89, 90, 91, -1, -1, -1, 95, 96, 97, 98, - 99, -1, 101, 102, -1, -1, 105, -1, -1, -1, - 109, 110, 111, -1, 45, 46, 47, 48, 49, 50, - 51, 52, 53, -1, 55, 56, 57, 58, -1, 60, - 61, 62, -1, -1, -1, -1, -1, -1, 1, -1, - -1, -1, -1, -1, -1, 76, 77, 78, 11, 12, - -1, 14, 15, -1, 17, 86, 87, 88, 89, 90, - 91, -1, -1, -1, 95, 96, 97, 98, 99, -1, - 101, 102, -1, -1, 105, -1, -1, -1, 109, 110, - 111, -1, 45, 46, 47, 48, 49, 50, 51, 52, - 53, -1, 55, 56, 57, 58, -1, 60, 61, 62, - -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - -1, -1, -1, 76, 77, 78, 11, 12, -1, 14, - 15, -1, 17, 86, 87, 88, 89, 90, 91, -1, - -1, -1, 95, 96, 97, 98, 99, -1, 101, 102, - -1, -1, 105, -1, -1, -1, 109, 110, 111, -1, - 45, 46, 47, 48, 49, 50, 51, 52, 53, -1, - 55, 56, 57, 58, -1, 60, 61, 62, -1, -1, - -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, - -1, 76, 77, 78, 9, -1, 11, 12, -1, 14, - 15, 86, 87, 88, 89, 90, 91, -1, -1, -1, - 95, 96, 97, 98, 99, -1, 101, 102, -1, -1, - 105, -1, -1, -1, 109, 110, 111, -1, -1, -1, - 45, 46, 47, 48, 49, 50, 51, 52, 53, -1, - 55, 56, 57, 58, -1, 60, 61, 62, -1, -1, - -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, - -1, 76, 77, 78, 11, 12, -1, 14, 15, -1, - 17, 86, 87, 88, 89, 90, 91, -1, -1, -1, - 95, 96, 97, 98, 99, -1, 101, 102, -1, -1, - 105, -1, -1, -1, 109, 110, 111, -1, 45, 46, - 47, 48, 49, 50, 51, 52, 53, -1, 55, 56, - 57, 58, -1, 60, 61, 62, -1, -1, -1, -1, - -1, -1, 1, -1, -1, -1, -1, -1, -1, 76, - 77, 78, 11, 12, -1, 14, 15, -1, 17, 86, - 87, 88, 89, 90, 91, -1, -1, -1, 95, 96, - 97, 98, 99, -1, 101, 102, -1, -1, 105, -1, - -1, -1, 109, 110, 111, -1, 45, 46, 47, 48, - 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, - -1, 60, 61, 62, -1, -1, -1, -1, -1, -1, - 1, -1, -1, -1, -1, -1, -1, 76, 77, 78, - 11, 12, -1, 14, 15, -1, -1, 86, 87, 88, - 89, 90, 91, -1, -1, -1, 95, 96, 97, 98, - 99, -1, 101, 102, -1, -1, 105, -1, -1, -1, - 109, 110, 111, -1, 45, 46, 47, 48, 49, 50, - 51, 52, 53, -1, 55, 56, 57, 58, 1, 60, - 61, 62, -1, -1, -1, -1, -1, -1, -1, 12, - -1, 14, 15, -1, -1, 76, 77, 78, -1, -1, - -1, -1, -1, -1, -1, 86, 87, 88, 89, 90, - 91, -1, -1, -1, 95, 96, 97, 98, 99, -1, - 101, 102, 45, 46, 105, 48, -1, 50, 109, 110, - 111, -1, 55, 56, -1, 58, 1, 60, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 12, -1, -1, - 15, 16, -1, 76, 77, 78, -1, -1, -1, -1, - -1, -1, -1, 86, 87, 88, 89, 90, 91, -1, - -1, -1, 95, -1, 97, 98, -1, -1, 101, 102, - 45, 46, 105, 48, -1, 50, 109, 110, 111, -1, - 55, 56, -1, 58, -1, 60, -1, -1, -1, -1, - 7, 8, -1, -1, 11, 12, -1, -1, 15, -1, - -1, 76, 77, 78, -1, -1, -1, -1, -1, -1, - -1, 86, 87, 88, 89, 90, 91, -1, -1, -1, - 95, -1, 97, 98, -1, -1, 101, 102, 45, 46, - 105, 48, -1, -1, 109, 110, 111, 54, 55, 56, - -1, 58, -1, 60, -1, -1, -1, -1, -1, -1, + -1, -1, 9, -1, 11, 12, 294, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 78, -1, -1, -1, -1, -1, -1, -1, 86, - 87, 88, 89, 90, 91, -1, -1, -1, 95, -1, - 97, 98, -1, -1, 101, 102, 9, -1, 105, 12, - 13, 14, 109, 110, 111, -1, -1, -1, -1, -1, - 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 35, 36, -1, 38, 39, 40, 41, 42, - 43, 44, 45, 46, -1, 48, -1, -1, -1, -1, - -1, -1, 55, 56, -1, 58, -1, 60, -1, -1, - -1, -1, -1, -1, 9, -1, -1, 12, -1, 14, - 15, -1, -1, -1, -1, 78, -1, -1, -1, -1, - -1, -1, -1, 86, 87, 88, 89, 90, 91, -1, - 93, -1, 95, -1, 97, 98, -1, -1, 101, 102, - 45, 46, 105, 48, -1, -1, 109, 110, 111, -1, - 55, 56, -1, 58, -1, 60, -1, -1, -1, -1, - -1, -1, 9, -1, -1, 12, -1, -1, 15, -1, - -1, -1, -1, 78, -1, -1, -1, -1, -1, -1, - -1, 86, 87, 88, 89, 90, 91, -1, -1, -1, - 95, -1, 97, 98, -1, -1, 101, 102, 45, 46, - 105, 48, -1, -1, 109, 110, 111, -1, 55, 56, - -1, 58, -1, 60, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 318, -1, 320, -1, -1, 323, -1, -1, -1, 46, + 47, 48, 49, 50, 51, 52, 53, 54, -1, 56, + 57, 58, 59, 341, 61, 62, 63, -1, -1, -1, + -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, + 77, 78, 79, 11, 12, -1, 14, 15, -1, 17, + 87, 88, 89, 90, 91, 92, -1, -1, -1, 96, + 97, 98, 99, 100, -1, 102, 103, -1, -1, 106, + -1, -1, -1, 110, 111, 112, -1, -1, 46, 47, + 48, 49, 50, 51, 52, 53, 54, -1, 56, 57, + 58, 59, -1, 61, 62, 63, -1, -1, -1, -1, + -1, -1, 1, -1, -1, -1, -1, -1, -1, 77, + 78, 79, 11, 12, -1, 14, 15, -1, 17, 87, + 88, 89, 90, 91, 92, -1, -1, -1, 96, 97, + 98, 99, 100, -1, 102, 103, -1, -1, 106, -1, + -1, -1, 110, 111, 112, -1, -1, 46, 47, 48, + 49, 50, 51, 52, 53, 54, -1, 56, 57, 58, + 59, -1, 61, 62, 63, -1, -1, -1, -1, -1, + -1, 1, -1, -1, -1, -1, -1, -1, 77, 78, + 79, 11, 12, -1, 14, 15, -1, 17, 87, 88, + 89, 90, 91, 92, -1, -1, -1, 96, 97, 98, + 99, 100, -1, 102, 103, -1, -1, 106, -1, -1, + -1, 110, 111, 112, -1, -1, 46, 47, 48, 49, + 50, 51, 52, 53, 54, -1, 56, 57, 58, 59, + -1, 61, 62, 63, -1, -1, -1, -1, -1, -1, + 1, -1, -1, -1, -1, -1, -1, 77, 78, 79, + 11, 12, -1, 14, 15, -1, 17, 87, 88, 89, + 90, 91, 92, -1, -1, -1, 96, 97, 98, 99, + 100, -1, 102, 103, -1, -1, 106, -1, -1, -1, + 110, 111, 112, -1, -1, 46, 47, 48, 49, 50, + 51, 52, 53, 54, -1, 56, 57, 58, 59, -1, + 61, 62, 63, -1, -1, -1, -1, -1, -1, 1, + -1, -1, -1, -1, -1, -1, 77, 78, 79, 11, + 12, -1, 14, 15, -1, 17, 87, 88, 89, 90, + 91, 92, -1, -1, -1, 96, 97, 98, 99, 100, + -1, 102, 103, -1, -1, 106, -1, -1, -1, 110, + 111, 112, -1, -1, 46, 47, 48, 49, 50, 51, + 52, 53, 54, -1, 56, 57, 58, 59, -1, 61, + 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, + 1, -1, -1, -1, -1, 77, 78, 79, 9, -1, + 11, 12, -1, 14, 15, 87, 88, 89, 90, 91, + 92, -1, -1, -1, 96, 97, 98, 99, 100, -1, + 102, 103, -1, -1, 106, -1, -1, -1, 110, 111, + 112, -1, -1, -1, -1, 46, 47, 48, 49, 50, + 51, 52, 53, 54, -1, 56, 57, 58, 59, -1, + 61, 62, 63, -1, -1, -1, -1, -1, -1, 1, + -1, -1, -1, -1, -1, -1, 77, 78, 79, 11, + 12, -1, 14, 15, -1, 17, 87, 88, 89, 90, + 91, 92, -1, -1, -1, 96, 97, 98, 99, 100, + -1, 102, 103, -1, -1, 106, -1, -1, -1, 110, + 111, 112, -1, -1, 46, 47, 48, 49, 50, 51, + 52, 53, 54, -1, 56, 57, 58, 59, -1, 61, + 62, 63, -1, -1, -1, -1, -1, -1, 1, -1, + -1, -1, -1, -1, -1, 77, 78, 79, 11, 12, + -1, 14, 15, -1, 17, 87, 88, 89, 90, 91, + 92, -1, -1, -1, 96, 97, 98, 99, 100, -1, + 102, 103, -1, -1, 106, -1, -1, -1, 110, 111, + 112, -1, -1, 46, 47, 48, 49, 50, 51, 52, + 53, 54, -1, 56, 57, 58, 59, -1, 61, 62, + 63, -1, -1, -1, -1, -1, -1, 1, -1, -1, + -1, -1, -1, -1, 77, 78, 79, 11, 12, -1, + 14, 15, -1, -1, 87, 88, 89, 90, 91, 92, + -1, -1, -1, 96, 97, 98, 99, 100, -1, 102, + 103, -1, -1, 106, -1, -1, -1, 110, 111, 112, + -1, -1, 46, 47, 48, 49, 50, 51, 52, 53, + 54, -1, 56, 57, 58, 59, -1, 61, 62, 63, + -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, + -1, -1, -1, 77, 78, 79, 12, -1, 14, 15, + -1, -1, -1, 87, 88, 89, 90, 91, 92, -1, + -1, -1, 96, 97, 98, 99, 100, -1, 102, 103, + -1, -1, 106, -1, -1, -1, 110, 111, 112, -1, + 46, 47, -1, 49, -1, 51, -1, -1, -1, -1, + 56, 57, -1, 59, -1, 61, -1, -1, -1, -1, + -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, + -1, 77, 78, 79, 12, -1, -1, 15, 16, -1, + -1, 87, 88, 89, 90, 91, 92, -1, -1, -1, + 96, -1, 98, 99, -1, -1, 102, 103, -1, -1, + 106, -1, -1, -1, 110, 111, 112, -1, 46, 47, + -1, 49, -1, 51, -1, -1, -1, -1, 56, 57, + -1, 59, -1, 61, -1, -1, -1, 7, 8, -1, + -1, 11, 12, -1, -1, 15, -1, -1, -1, 77, + 78, 79, -1, -1, -1, -1, -1, -1, -1, 87, + 88, 89, 90, 91, 92, -1, -1, -1, 96, -1, + 98, 99, -1, -1, 102, 103, 46, 47, 106, 49, + -1, -1, 110, 111, 112, 55, 56, 57, -1, 59, + -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 79, + -1, -1, -1, -1, -1, -1, -1, 87, 88, 89, + 90, 91, 92, -1, -1, -1, 96, -1, 98, 99, + -1, -1, 102, 103, 9, -1, 106, 12, 13, 14, + 110, 111, 112, -1, -1, -1, -1, -1, 23, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 36, 37, -1, 39, 40, 41, 42, 43, 44, + 45, 46, 47, -1, 49, -1, -1, -1, -1, -1, + -1, 56, 57, -1, 59, -1, 61, -1, -1, -1, + -1, -1, 9, -1, -1, 12, -1, 14, 15, -1, + -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, + -1, -1, 87, 88, 89, 90, 91, 92, -1, 94, + -1, 96, -1, 98, 99, -1, -1, 102, 103, 46, + 47, 106, 49, -1, -1, 110, 111, 112, -1, 56, + 57, -1, 59, -1, 61, -1, -1, -1, -1, -1, 9, -1, -1, 12, -1, -1, 15, -1, -1, -1, - -1, 78, -1, -1, -1, -1, -1, -1, -1, 86, - 87, 88, 89, 90, 91, -1, -1, -1, 95, -1, - 97, 98, -1, -1, 101, 102, 45, 46, 105, 48, - -1, -1, 109, 110, 111, -1, 55, 56, -1, 58, - -1, 60, -1, -1, -1, -1, -1, -1, 9, -1, - -1, 12, -1, -1, 15, -1, -1, -1, -1, 78, - -1, -1, -1, -1, -1, -1, -1, 86, 87, 88, - 89, 90, 91, -1, -1, -1, 95, -1, 97, 98, - -1, -1, 101, 102, 45, 46, 105, 48, -1, -1, - 109, 110, 111, -1, 55, 56, -1, 58, -1, 60, - -1, -1, -1, -1, -1, -1, 9, -1, -1, 12, - -1, -1, 15, -1, -1, -1, -1, 78, -1, -1, - -1, -1, -1, -1, -1, 86, 87, 88, 89, 90, - 91, -1, -1, -1, 95, -1, 97, 98, -1, -1, - 101, 102, 45, 46, 105, 48, -1, -1, 109, 110, - 111, -1, 55, 56, -1, 58, -1, 60, -1, -1, + -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, + 87, 88, 89, 90, 91, 92, -1, -1, -1, 96, + -1, 98, 99, -1, -1, 102, 103, 46, 47, 106, + 49, -1, -1, 110, 111, 112, -1, 56, 57, -1, + 59, -1, 61, -1, -1, -1, -1, -1, 9, -1, + -1, 12, -1, -1, 15, -1, -1, -1, -1, -1, + 79, -1, -1, -1, -1, -1, -1, -1, 87, 88, + 89, 90, 91, 92, -1, -1, -1, 96, -1, 98, + 99, -1, -1, 102, 103, 46, 47, 106, 49, -1, + -1, 110, 111, 112, -1, 56, 57, -1, 59, -1, + 61, -1, -1, -1, -1, -1, 9, -1, -1, 12, + -1, -1, 15, -1, -1, -1, -1, -1, 79, -1, + -1, -1, -1, -1, -1, -1, 87, 88, 89, 90, + 91, 92, -1, -1, -1, 96, -1, 98, 99, -1, + -1, 102, 103, 46, 47, 106, 49, -1, -1, 110, + 111, 112, -1, 56, 57, -1, 59, -1, 61, -1, -1, -1, -1, -1, 9, -1, -1, 12, -1, -1, - 15, -1, -1, -1, -1, 78, -1, -1, -1, -1, - -1, -1, -1, 86, 87, 88, 89, 90, 91, -1, - -1, -1, 95, -1, 97, 98, -1, -1, 101, 102, - 45, 46, 105, 48, -1, -1, 109, 110, 111, -1, - 55, 56, -1, 58, -1, 60, -1, -1, -1, -1, + 15, -1, -1, -1, -1, -1, 79, -1, -1, -1, + -1, -1, -1, -1, 87, 88, 89, 90, 91, 92, + -1, -1, -1, 96, -1, 98, 99, -1, -1, 102, + 103, 46, 47, 106, 49, -1, -1, 110, 111, 112, + -1, 56, 57, -1, 59, -1, 61, -1, -1, -1, -1, -1, 9, -1, -1, 12, -1, -1, 15, -1, - -1, -1, -1, 78, -1, -1, -1, -1, -1, -1, - -1, 86, 87, 88, 89, 90, 91, -1, -1, -1, - 95, -1, 97, 98, -1, -1, 101, 102, 45, 46, - 105, 48, -1, -1, 109, 110, 111, -1, 55, 56, - -1, 58, -1, 60, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, + -1, -1, 87, 88, 89, 90, 91, 92, -1, -1, + -1, 96, -1, 98, 99, -1, -1, 102, 103, 46, + 47, 106, 49, -1, -1, 110, 111, 112, -1, 56, + 57, -1, 59, -1, 61, -1, -1, -1, -1, -1, + 9, -1, -1, 12, -1, -1, 15, -1, -1, -1, + -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, + 87, 88, 89, 90, 91, 92, -1, -1, -1, 96, + -1, 98, 99, -1, -1, 102, 103, 46, 47, 106, + 49, -1, -1, 110, 111, 112, -1, 56, 57, -1, + 59, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 78, -1, -1, -1, -1, -1, -1, -1, 86, - 87, 88, 89, 90, 91, -1, -1, -1, 95, -1, - 97, 98, -1, -1, 101, 102, -1, -1, 105, -1, - -1, -1, 109, 110, 111, 10, -1, 12, 13, -1, - -1, 16, -1, -1, -1, -1, -1, -1, 23, -1, + 79, -1, -1, -1, -1, -1, -1, -1, 87, 88, + 89, 90, 91, 92, -1, -1, -1, 96, -1, 98, + 99, -1, -1, 102, 103, -1, -1, 106, -1, -1, + -1, 110, 111, 112, 10, -1, 12, 13, -1, -1, + 16, -1, -1, -1, -1, -1, -1, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 35, 36, -1, 38, 39, 40, 41, 42, 43, 44, - 45, 46, -1, 48, -1, -1, -1, -1, -1, -1, - 55, 56, -1, 58, -1, 60, -1, -1, -1, -1, + 36, 37, -1, 39, 40, 41, 42, 43, 44, 45, + 46, 47, -1, 49, -1, -1, -1, -1, -1, -1, + 56, 57, -1, 59, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 78, -1, -1, -1, -1, -1, -1, - -1, 86, 87, 88, 89, 90, 91, -1, 93, -1, - 95, -1, 97, 98, -1, -1, 101, 102, -1, -1, - 105, -1, -1, -1, 109, 110, 111, 10, -1, 12, + -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, + -1, 87, 88, 89, 90, 91, 92, -1, 94, -1, + 96, -1, 98, 99, -1, -1, 102, 103, -1, -1, + 106, -1, -1, -1, 110, 111, 112, 10, -1, 12, 13, -1, -1, 16, -1, -1, -1, -1, -1, -1, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 35, 36, -1, 38, 39, 40, 41, 42, - 43, 44, 45, 46, -1, 48, -1, -1, -1, -1, - -1, -1, 55, 56, -1, 58, -1, 60, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 78, -1, -1, -1, -1, - -1, -1, -1, 86, 87, 88, 89, 90, 91, -1, - 93, -1, 95, -1, 97, 98, -1, -1, 101, 102, - -1, -1, 105, -1, -1, -1, 109, 110, 111, 10, - -1, 12, 13, -1, -1, 16, -1, -1, -1, -1, - -1, -1, 23, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 35, 36, -1, 38, 39, 40, - 41, 42, 43, 44, 45, 46, -1, 48, -1, -1, - -1, -1, -1, -1, 55, 56, -1, 58, -1, 60, + -1, -1, -1, 36, 37, -1, 39, 40, 41, 42, + 43, 44, 45, 46, 47, -1, 49, -1, -1, -1, + -1, -1, -1, 56, 57, -1, 59, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 78, -1, -1, - -1, -1, -1, -1, -1, 86, 87, 88, 89, 90, - 91, -1, 93, -1, 95, -1, 97, 98, -1, -1, - 101, 102, -1, -1, 105, -1, -1, -1, 109, 110, - 111, 10, -1, 12, 13, -1, -1, 16, -1, -1, - -1, -1, -1, -1, 23, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 35, 36, -1, 38, - 39, 40, 41, 42, 43, 44, 45, 46, -1, 48, - -1, -1, -1, -1, -1, -1, 55, 56, -1, 58, - -1, 60, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 78, - -1, -1, -1, -1, -1, -1, -1, 86, 87, 88, - 89, 90, 91, -1, 93, -1, 95, -1, 97, 98, - -1, -1, 101, 102, -1, 10, 105, 12, 13, -1, - 109, 110, 111, -1, -1, -1, -1, -1, 23, -1, + -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, + -1, -1, -1, -1, 87, 88, 89, 90, 91, 92, + -1, 94, -1, 96, -1, 98, 99, -1, -1, 102, + 103, -1, -1, 106, -1, -1, -1, 110, 111, 112, + 10, -1, 12, 13, -1, -1, 16, -1, -1, -1, + -1, -1, -1, 23, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 36, 37, -1, 39, + 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, + -1, -1, -1, -1, -1, -1, 56, 57, -1, 59, + -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 79, + -1, -1, -1, -1, -1, -1, -1, 87, 88, 89, + 90, 91, 92, -1, 94, -1, 96, -1, 98, 99, + -1, -1, 102, 103, -1, -1, 106, -1, -1, -1, + 110, 111, 112, 10, -1, 12, 13, -1, -1, 16, + -1, -1, -1, -1, -1, -1, 23, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, + 37, -1, 39, 40, 41, 42, 43, 44, 45, 46, + 47, -1, 49, -1, -1, -1, -1, -1, -1, 56, + 57, -1, 59, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 35, 36, -1, 38, 39, 40, 41, 42, 43, 44, - 45, 46, -1, 48, -1, -1, -1, -1, -1, -1, - 55, 56, -1, 58, -1, 60, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 78, -1, -1, -1, -1, -1, -1, - -1, 86, 87, 88, 89, 90, 91, -1, 93, -1, - 95, -1, 97, 98, -1, -1, 101, 102, 12, 13, - 105, -1, 16, -1, 109, 110, 111, -1, -1, 23, + -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, + 87, 88, 89, 90, 91, 92, -1, 94, -1, 96, + -1, 98, 99, -1, -1, 102, 103, -1, 10, 106, + 12, 13, -1, 110, 111, 112, -1, -1, -1, -1, + -1, 23, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 36, 37, -1, 39, 40, 41, + 42, 43, 44, 45, 46, 47, -1, 49, -1, -1, + -1, -1, -1, -1, 56, 57, -1, 59, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 35, 36, -1, 38, 39, 40, 41, 42, 43, - 44, 45, 46, -1, 48, -1, -1, -1, -1, -1, - -1, 55, 56, -1, 58, -1, 60, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 79, -1, -1, + -1, -1, -1, -1, -1, 87, 88, 89, 90, 91, + 92, -1, 94, -1, 96, -1, 98, 99, -1, -1, + 102, 103, 12, 13, 106, -1, 16, -1, 110, 111, + 112, -1, -1, 23, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 36, 37, -1, 39, + 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, + -1, -1, -1, -1, -1, -1, 56, 57, -1, 59, + -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 79, + -1, -1, -1, -1, -1, -1, -1, 87, 88, 89, + 90, 91, 92, -1, 94, -1, 96, -1, 98, 99, + -1, -1, 102, 103, 12, 13, 106, -1, -1, -1, + 110, 111, 112, -1, -1, 23, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 36, 37, + -1, 39, 40, 41, 42, 43, 44, 45, 46, 47, + -1, 49, -1, -1, -1, -1, -1, -1, 56, 57, + -1, 59, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 78, -1, -1, -1, -1, -1, - -1, -1, 86, 87, 88, 89, 90, 91, -1, 93, - -1, 95, -1, 97, 98, -1, -1, 101, 102, 12, - 13, 105, -1, -1, -1, 109, 110, 111, -1, -1, - 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 35, 36, -1, 38, 39, 40, 41, 42, - 43, 44, 45, 46, -1, 48, -1, -1, -1, -1, - -1, -1, 55, 56, -1, 58, -1, 60, -1, -1, + -1, 79, -1, -1, -1, -1, -1, -1, -1, 87, + 88, 89, 90, 91, 92, -1, 94, 95, 96, -1, + 98, 99, -1, -1, 102, 103, 12, 13, 106, -1, + 16, -1, 110, 111, 112, -1, -1, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 78, -1, -1, -1, -1, - -1, -1, -1, 86, 87, 88, 89, 90, 91, -1, - 93, 94, 95, -1, 97, 98, -1, -1, 101, 102, - 12, 13, 105, -1, 16, -1, 109, 110, 111, -1, - -1, 23, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 35, 36, -1, 38, 39, 40, 41, - 42, 43, 44, 45, 46, -1, 48, -1, -1, -1, - -1, -1, -1, 55, 56, -1, 58, -1, 60, -1, + 36, 37, -1, 39, 40, 41, 42, 43, 44, 45, + 46, 47, -1, 49, -1, -1, -1, -1, -1, -1, + 56, 57, -1, 59, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 78, -1, -1, -1, - -1, -1, -1, -1, 86, 87, 88, 89, 90, 91, - -1, 93, -1, 95, -1, 97, 98, -1, -1, 101, - 102, 12, 13, 105, -1, 16, -1, 109, 110, 111, - -1, -1, 23, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 35, 36, -1, 38, 39, 40, - 41, 42, 43, 44, 45, 46, -1, 48, -1, -1, - -1, -1, -1, -1, 55, 56, -1, 58, -1, 60, + -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, + -1, 87, 88, 89, 90, 91, 92, -1, 94, -1, + 96, -1, 98, 99, -1, -1, 102, 103, 12, 13, + 106, -1, 16, -1, 110, 111, 112, -1, -1, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 78, -1, -1, - -1, -1, -1, -1, -1, 86, 87, 88, 89, 90, - 91, -1, 93, -1, 95, -1, 97, 98, -1, -1, - 101, 102, 12, 13, 105, -1, 16, -1, 109, 110, - 111, -1, -1, 23, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 35, 36, -1, 38, 39, - 40, 41, 42, 43, 44, 45, 46, -1, 48, -1, - -1, -1, -1, -1, -1, 55, 56, -1, 58, -1, - 60, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, -1, - -1, -1, -1, -1, -1, -1, 86, 87, 88, 89, - 90, 91, -1, 93, -1, 95, -1, 97, 98, -1, - -1, 101, 102, 12, 13, 105, -1, 16, -1, 109, - 110, 111, -1, -1, 23, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 35, 36, -1, 38, - 39, 40, 41, 42, 43, 44, 45, 46, -1, 48, - -1, -1, -1, -1, -1, -1, 55, 56, -1, 58, - -1, 60, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 78, - -1, -1, -1, -1, -1, -1, -1, 86, 87, 88, - 89, 90, 91, -1, 93, -1, 95, -1, 97, 98, - -1, -1, 101, 102, 12, 13, 105, -1, 16, -1, - 109, 110, 111, -1, -1, 23, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 35, 36, -1, - 38, 39, 40, 41, 42, 43, 44, 45, 46, -1, - 48, -1, -1, -1, -1, -1, -1, 55, 56, -1, - 58, -1, 60, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 36, 37, -1, 39, 40, 41, 42, 43, + 44, 45, 46, 47, -1, 49, -1, -1, -1, -1, + -1, -1, 56, 57, -1, 59, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 78, -1, -1, -1, -1, -1, -1, -1, 86, 87, - 88, 89, 90, 91, -1, 93, -1, 95, -1, 97, - 98, -1, -1, 101, 102, -1, -1, 105, 12, 13, - 14, 109, 110, 111, -1, -1, -1, -1, -1, 23, + -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, + -1, -1, -1, 87, 88, 89, 90, 91, 92, -1, + 94, -1, 96, -1, 98, 99, -1, -1, 102, 103, + 12, 13, 106, -1, 16, -1, 110, 111, 112, -1, + -1, 23, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 36, 37, -1, 39, 40, 41, + 42, 43, 44, 45, 46, 47, -1, 49, -1, -1, + -1, -1, -1, -1, 56, 57, -1, 59, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 35, 36, -1, 38, 39, 40, 41, 42, 43, - 44, 45, 46, -1, 48, -1, -1, -1, -1, -1, - -1, 55, 56, -1, 58, -1, 60, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 79, -1, -1, + -1, -1, -1, -1, -1, 87, 88, 89, 90, 91, + 92, -1, 94, -1, 96, -1, 98, 99, -1, -1, + 102, 103, 12, 13, 106, -1, 16, -1, 110, 111, + 112, -1, -1, 23, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 36, 37, -1, 39, + 40, 41, 42, 43, 44, 45, 46, 47, -1, 49, + -1, -1, -1, -1, -1, -1, 56, 57, -1, 59, + -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 79, + -1, -1, -1, -1, -1, -1, -1, 87, 88, 89, + 90, 91, 92, -1, 94, -1, 96, -1, 98, 99, + -1, -1, 102, 103, 12, 13, 106, -1, 16, -1, + 110, 111, 112, -1, -1, 23, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 36, 37, + -1, 39, 40, 41, 42, 43, 44, 45, 46, 47, + -1, 49, -1, -1, -1, -1, -1, -1, 56, 57, + -1, 59, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 78, -1, -1, -1, -1, -1, - -1, -1, 86, 87, 88, 89, 90, 91, -1, 93, - -1, 95, -1, 97, 98, -1, -1, 101, 102, 12, - 13, 105, -1, 16, -1, 109, 110, 111, -1, -1, + -1, 79, -1, -1, -1, -1, -1, -1, -1, 87, + 88, 89, 90, 91, 92, -1, 94, -1, 96, -1, + 98, 99, -1, -1, 102, 103, -1, -1, 106, 12, + 13, 14, 110, 111, 112, -1, -1, -1, -1, -1, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 35, 36, -1, 38, 39, 40, 41, 42, - 43, 44, 45, 46, -1, 48, -1, -1, -1, -1, - -1, -1, 55, 56, -1, 58, -1, 60, -1, -1, + -1, -1, -1, 36, 37, -1, 39, 40, 41, 42, + 43, 44, 45, 46, 47, -1, 49, -1, -1, -1, + -1, -1, -1, 56, 57, -1, 59, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 78, -1, -1, -1, -1, - -1, -1, -1, 86, 87, 88, 89, 90, 91, -1, - 93, -1, 95, -1, 97, 98, -1, -1, 101, 102, - 12, 13, 105, -1, -1, -1, 109, 110, 111, -1, - -1, 23, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 35, 36, -1, 38, 39, 40, 41, - 42, 43, 44, 45, 46, -1, 48, -1, -1, -1, - -1, -1, -1, 55, 56, -1, 58, -1, 60, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 78, -1, -1, -1, - -1, -1, -1, -1, 86, 87, 88, 89, 90, 91, - -1, 93, -1, 95, -1, 97, 98, -1, -1, 101, - 102, 12, 13, 105, -1, -1, -1, 109, 110, 111, + -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, + -1, -1, -1, -1, 87, 88, 89, 90, 91, 92, + -1, 94, -1, 96, -1, 98, 99, -1, -1, 102, + 103, 12, 13, 106, -1, 16, -1, 110, 111, 112, -1, -1, 23, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 35, -1, -1, 38, 39, 40, - 41, 42, 43, 44, 45, 46, -1, 48, -1, -1, - -1, -1, -1, -1, 55, 56, -1, 58, -1, 60, + -1, -1, -1, -1, -1, 36, 37, -1, 39, 40, + 41, 42, 43, 44, 45, 46, 47, -1, 49, -1, + -1, -1, -1, -1, -1, 56, 57, -1, 59, -1, + 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 79, -1, + -1, -1, -1, -1, -1, -1, 87, 88, 89, 90, + 91, 92, -1, 94, -1, 96, -1, 98, 99, -1, + -1, 102, 103, 12, 13, 106, -1, -1, -1, 110, + 111, 112, -1, -1, 23, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 36, 37, -1, + 39, 40, 41, 42, 43, 44, 45, 46, 47, -1, + 49, -1, -1, -1, -1, -1, -1, 56, 57, -1, + 59, -1, 61, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 79, -1, -1, -1, -1, -1, -1, -1, 87, 88, + 89, 90, 91, 92, -1, 94, -1, 96, -1, 98, + 99, -1, -1, 102, 103, 12, 13, 106, -1, -1, + -1, 110, 111, 112, -1, -1, 23, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, + -1, -1, 39, 40, 41, 42, 43, 44, 45, 46, + 47, -1, 49, -1, -1, -1, -1, -1, -1, 56, + 57, -1, 59, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 78, -1, -1, - -1, -1, -1, -1, -1, 86, 87, 88, 89, 90, - 91, 12, 13, -1, 95, -1, 97, 98, -1, -1, - 101, 102, 23, -1, 105, -1, -1, -1, 109, 110, - 111, -1, -1, -1, -1, -1, -1, 38, 39, 40, - 41, 42, 43, 44, 45, 46, -1, 48, -1, -1, - -1, -1, -1, -1, 55, 56, -1, 58, -1, 60, + -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, + 87, 88, 89, 90, 91, 92, 12, 13, -1, 96, + -1, 98, 99, -1, -1, 102, 103, 23, -1, 106, + -1, -1, -1, 110, 111, 112, -1, -1, -1, -1, + -1, -1, -1, 39, 40, 41, 42, 43, 44, 45, + 46, 47, -1, 49, -1, -1, -1, -1, -1, -1, + 56, 57, -1, 59, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 78, -1, -1, - -1, -1, -1, -1, -1, 86, 87, 88, 89, 90, - 91, 12, 13, -1, 95, -1, 97, 98, -1, -1, - 101, 102, 23, -1, 105, -1, -1, -1, 109, 110, - 111, -1, -1, -1, -1, -1, -1, 38, 39, 40, - 41, 42, 43, 44, 45, 46, -1, 48, -1, -1, - -1, -1, -1, -1, 55, 56, -1, 58, -1, 60, + -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, + -1, 87, 88, 89, 90, 91, 92, 12, 13, -1, + 96, -1, 98, 99, -1, -1, 102, 103, 23, -1, + 106, -1, -1, -1, 110, 111, 112, -1, -1, -1, + -1, -1, -1, -1, 39, 40, 41, 42, 43, 44, + 45, 46, 47, -1, 49, -1, -1, -1, -1, -1, + -1, 56, 57, -1, 59, 12, 61, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 23, -1, -1, -1, + -1, -1, -1, -1, 79, -1, -1, -1, -1, 36, + 37, -1, 87, 88, 89, 90, 91, 92, 45, 46, + 47, -1, 49, 98, 99, -1, -1, 102, 103, 56, + 57, 106, 59, -1, 61, 110, 111, 112, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 78, -1, -1, - -1, -1, 12, -1, -1, 86, 87, 88, 89, 90, - 91, -1, -1, 23, -1, -1, 97, 98, -1, -1, - 101, 102, -1, -1, 105, 35, 36, -1, 109, 110, - 111, -1, -1, -1, 44, 45, 46, -1, 48, -1, - -1, -1, -1, -1, -1, 55, 56, -1, 58, -1, - 60, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, -1, - -1, -1, -1, -1, -1, -1, 86, 87, 88, 89, - 90, 91, 12, 93, 94, 95, -1, 97, 98, -1, - -1, 101, 102, 23, -1, 105, -1, -1, -1, 109, - 110, 111, -1, -1, -1, 35, 36, -1, -1, -1, - -1, -1, -1, -1, 44, 45, 46, -1, 48, -1, - -1, -1, -1, -1, -1, 55, 56, -1, 58, -1, - 60, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, -1, - -1, 12, -1, -1, -1, -1, 86, 87, 88, 89, - 90, 91, 23, 93, -1, 95, -1, 97, 98, -1, - -1, 101, 102, -1, 35, 105, -1, -1, -1, 109, - 110, 111, -1, 44, 45, 46, -1, 48, -1, -1, - -1, -1, -1, -1, 55, 56, -1, 58, -1, 60, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 12, - -1, -1, 15, 16, -1, -1, -1, 78, -1, -1, - -1, -1, -1, -1, -1, 86, 87, 88, 89, 90, - 91, -1, -1, -1, 95, -1, 97, 98, -1, -1, - 101, 102, 45, 46, 105, 48, -1, -1, 109, 110, - 111, -1, 55, 56, -1, 58, -1, 60, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 12, -1, -1, - 15, 16, -1, -1, -1, 78, -1, -1, -1, -1, - -1, -1, -1, 86, 87, 88, 89, 90, 91, -1, - -1, -1, 95, -1, 97, 98, -1, -1, 101, 102, - 45, 46, 105, 48, -1, -1, 109, 110, 111, -1, - 55, 56, -1, 58, -1, 60, -1, -1, -1, -1, + -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, + 87, 88, 89, 90, 91, 92, 12, 94, 95, 96, + -1, 98, 99, -1, -1, 102, 103, 23, -1, 106, + -1, -1, -1, 110, 111, 112, -1, -1, -1, -1, + 36, 37, -1, -1, -1, -1, -1, -1, -1, 45, + 46, 47, -1, 49, -1, -1, -1, -1, -1, -1, + 56, 57, -1, 59, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 78, -1, -1, 12, -1, -1, -1, - -1, 86, 87, 88, 89, 90, 91, 23, -1, -1, - 95, -1, 97, 98, -1, -1, 101, 102, -1, -1, - 105, -1, -1, -1, 109, 110, 111, -1, 44, 45, - 46, -1, 48, -1, -1, -1, -1, -1, -1, 55, - 56, -1, 58, -1, 60, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 12, -1, -1, 15, -1, -1, - -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, - 86, 87, 88, 89, 90, 91, -1, -1, -1, 95, - -1, 97, 98, -1, -1, 101, 102, 45, 46, 105, - 48, -1, -1, 109, 110, 111, -1, 55, 56, -1, - 58, -1, 60, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 12, -1, -1, 15, -1, -1, -1, -1, - 78, -1, -1, -1, -1, -1, -1, -1, 86, 87, - 88, 89, 90, 91, -1, -1, -1, 95, -1, 97, - 98, -1, -1, 101, 102, 45, 46, 105, 48, -1, - -1, 109, 110, 111, -1, 55, 56, -1, 58, -1, - 60, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 12, -1, -1, 15, -1, -1, -1, -1, 78, -1, - -1, -1, -1, -1, -1, -1, 86, 87, 88, 89, - 90, 91, -1, -1, -1, 95, -1, 97, 98, -1, - -1, 101, 102, 45, 46, 105, 48, -1, -1, 109, - 110, 111, -1, 55, 56, -1, 58, -1, 60, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 12, -1, - -1, -1, -1, -1, -1, -1, 78, -1, -1, -1, - -1, -1, -1, -1, 86, 87, 88, 89, 90, 91, - -1, -1, -1, 95, -1, 97, 98, -1, -1, 101, - 102, 45, 46, 105, 48, -1, -1, 109, 110, 111, - -1, 55, 56, -1, 58, -1, 60, -1, -1, -1, - -1, -1, -1, -1, -1, 69, 12, -1, -1, 15, - -1, -1, -1, -1, 78, -1, -1, -1, -1, -1, - -1, -1, 86, 87, 88, 89, 90, 91, -1, -1, - -1, 95, -1, 97, 98, -1, -1, 101, 102, 45, - 46, 105, 48, -1, -1, 109, 110, 111, -1, 55, - 56, -1, 58, -1, 60, -1, -1, -1, -1, -1, + -1, -1, -1, 79, -1, -1, -1, -1, 12, -1, + -1, 87, 88, 89, 90, 91, 92, -1, 94, 23, + 96, -1, 98, 99, -1, -1, 102, 103, -1, -1, + 106, -1, 36, -1, 110, 111, 112, -1, -1, -1, + -1, 45, 46, 47, -1, 49, -1, -1, -1, -1, + -1, -1, 56, 57, -1, 59, 12, 61, -1, 15, + 16, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, + -1, -1, -1, 87, 88, 89, 90, 91, 92, -1, + 46, 47, 96, 49, 98, 99, -1, -1, 102, 103, + 56, 57, 106, 59, -1, 61, 110, 111, 112, -1, + -1, -1, -1, -1, 12, -1, -1, 15, 16, -1, + -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, + -1, 87, 88, 89, 90, 91, 92, -1, -1, -1, + 96, -1, 98, 99, -1, -1, 102, 103, 46, 47, + 106, 49, -1, -1, 110, 111, 112, -1, 56, 57, + -1, 59, 12, 61, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 23, -1, -1, -1, -1, -1, -1, + -1, 79, -1, -1, -1, -1, -1, -1, -1, 87, + 88, 89, 90, 91, 92, 45, 46, 47, 96, 49, + 98, 99, -1, -1, 102, 103, 56, 57, 106, 59, + -1, 61, 110, 111, 112, -1, -1, -1, -1, -1, + 12, -1, -1, 15, -1, -1, -1, -1, -1, 79, + -1, -1, -1, -1, -1, -1, -1, 87, 88, 89, + 90, 91, 92, -1, -1, -1, 96, -1, 98, 99, + -1, -1, 102, 103, 46, 47, 106, 49, -1, -1, + 110, 111, 112, -1, 56, 57, -1, 59, 12, 61, + -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 79, -1, -1, + -1, -1, -1, -1, -1, 87, 88, 89, 90, 91, + 92, -1, 46, 47, 96, 49, 98, 99, -1, -1, + 102, 103, 56, 57, 106, 59, -1, 61, 110, 111, + 112, -1, -1, -1, -1, -1, 12, -1, -1, 15, + -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, + -1, -1, -1, 87, 88, 89, 90, 91, 92, -1, + -1, -1, 96, -1, 98, 99, -1, -1, 102, 103, + 46, 47, 106, 49, -1, -1, 110, 111, 112, -1, + 56, 57, -1, 59, 12, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 78, -1, -1, 12, -1, -1, -1, -1, - 86, 87, 88, 89, 90, 91, 23, -1, -1, 95, - -1, 97, 98, -1, -1, 101, 102, -1, -1, 105, - -1, -1, -1, 109, 110, 111, -1, 44, 45, 46, - -1, 48, -1, -1, -1, -1, -1, -1, 55, 56, - -1, 58, -1, 60, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 12, -1, -1, -1, -1, -1, -1, - -1, 78, -1, -1, -1, -1, -1, -1, -1, 86, - 87, 88, 89, 90, 91, -1, -1, -1, -1, -1, - 97, 98, -1, -1, 101, 102, 45, 46, 105, 48, - -1, -1, 109, 110, 111, -1, 55, 56, -1, 58, - -1, 60, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 78, - -1, -1, -1, -1, -1, -1, -1, 86, 87, 88, - 89, 90, 91, -1, -1, -1, 95, -1, 97, 98, - -1, -1, 101, 102, -1, -1, 105, -1, -1, -1, - 109, 110, 111 + -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, + -1, 87, 88, 89, 90, 91, 92, -1, 46, 47, + 96, 49, 98, 99, -1, -1, 102, 103, 56, 57, + 106, 59, -1, 61, 110, 111, 112, -1, -1, -1, + -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, + -1, 79, 12, -1, -1, 15, -1, -1, -1, 87, + 88, 89, 90, 91, 92, -1, -1, -1, 96, -1, + 98, 99, -1, -1, 102, 103, -1, -1, 106, -1, + -1, -1, 110, 111, 112, -1, 46, 47, -1, 49, + -1, -1, -1, -1, -1, -1, 56, 57, -1, 59, + 12, 61, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 23, -1, -1, -1, -1, -1, -1, -1, 79, + -1, -1, -1, -1, -1, -1, -1, 87, 88, 89, + 90, 91, 92, 45, 46, 47, 96, 49, 98, 99, + -1, -1, 102, 103, 56, 57, 106, 59, 12, 61, + 110, 111, 112, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 79, -1, -1, + -1, -1, -1, -1, -1, 87, 88, 89, 90, 91, + 92, -1, 46, 47, -1, 49, 98, 99, -1, -1, + 102, 103, 56, 57, 106, 59, -1, 61, 110, 111, + 112, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, + -1, -1, -1, 87, 88, 89, 90, 91, 92, -1, + -1, -1, 96, -1, 98, 99, -1, -1, 102, 103, + -1, -1, 106, -1, -1, -1, 110, 111, 112 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 1, 9, 14, 114, 129, 131, 143, 0, 7, - 8, 11, 12, 15, 45, 46, 48, 54, 55, 56, - 58, 60, 78, 86, 87, 88, 89, 90, 91, 95, - 97, 98, 101, 102, 105, 109, 110, 111, 126, 132, - 133, 135, 138, 145, 146, 156, 157, 158, 159, 161, - 9, 14, 126, 126, 138, 139, 147, 12, 12, 105, - 158, 159, 86, 89, 124, 12, 12, 12, 12, 42, - 159, 12, 12, 158, 158, 145, 158, 159, 159, 158, - 1, 9, 14, 47, 49, 50, 51, 52, 53, 57, - 61, 62, 76, 77, 96, 99, 118, 120, 125, 126, - 138, 142, 149, 151, 155, 162, 10, 126, 129, 13, - 23, 35, 36, 38, 39, 40, 41, 42, 43, 44, - 93, 115, 116, 158, 12, 91, 15, 101, 102, 103, - 104, 108, 69, 109, 110, 18, 155, 155, 10, 16, - 117, 16, 117, 92, 16, 136, 138, 138, 12, 138, - 138, 136, 16, 136, 158, 42, 138, 138, 9, 127, - 128, 14, 127, 150, 150, 161, 138, 150, 12, 12, - 150, 150, 138, 150, 12, 9, 152, 151, 155, 12, - 137, 140, 141, 145, 158, 159, 150, 17, 151, 154, - 128, 155, 133, 95, 138, 146, 138, 138, 138, 138, - 138, 138, 161, 138, 9, 138, 9, 138, 138, 146, - 69, 158, 158, 158, 158, 158, 158, 138, 136, 17, - 17, 9, 138, 44, 138, 15, 16, 117, 86, 160, - 117, 117, 16, 16, 158, 117, 117, 9, 128, 18, - 150, 130, 149, 161, 138, 150, 138, 151, 79, 119, - 17, 144, 139, 23, 44, 93, 115, 116, 158, 117, - 13, 37, 40, 69, 151, 132, 17, 159, 94, 117, - 117, 158, 19, 161, 138, 16, 117, 148, 138, 146, - 138, 146, 161, 138, 136, 14, 44, 148, 148, 153, - 9, 151, 9, 16, 12, 137, 146, 161, 137, 137, - 137, 137, 158, 158, 158, 137, 126, 138, 138, 138, - 86, 9, 134, 16, 16, 16, 16, 16, 117, 16, - 117, 19, 14, 128, 161, 99, 44, 139, 94, 155, - 16, 117, 16, 117, 126, 138, 146, 138, 128, 138, - 148, 12, 161, 16, 137, 17, 159, 159, 155, 16, - 16, 16, 130, 14, 123, 138, 16, 16, 17, 148, - 128, 151, 16, 122, 130, 150, 151, 148, 121, 151 + 0, 1, 9, 14, 115, 130, 132, 144, 0, 7, + 8, 11, 12, 15, 46, 47, 49, 55, 56, 57, + 59, 61, 79, 87, 88, 89, 90, 91, 92, 96, + 98, 99, 102, 103, 106, 110, 111, 112, 127, 133, + 134, 136, 139, 146, 147, 157, 158, 159, 160, 162, + 9, 14, 127, 127, 139, 140, 148, 12, 12, 106, + 159, 160, 87, 90, 125, 12, 12, 12, 12, 43, + 160, 12, 12, 159, 159, 146, 159, 160, 160, 159, + 1, 9, 14, 48, 50, 51, 52, 53, 54, 58, + 62, 63, 77, 78, 97, 100, 119, 121, 126, 127, + 139, 143, 150, 152, 156, 163, 10, 127, 130, 13, + 23, 36, 37, 39, 40, 41, 42, 43, 44, 45, + 94, 116, 117, 159, 12, 92, 15, 102, 103, 104, + 105, 109, 70, 110, 111, 18, 156, 156, 10, 16, + 118, 16, 118, 93, 16, 137, 139, 139, 12, 139, + 139, 137, 16, 137, 159, 43, 139, 139, 9, 128, + 129, 14, 128, 151, 151, 162, 139, 151, 12, 12, + 151, 151, 139, 151, 12, 9, 153, 152, 156, 12, + 138, 141, 142, 146, 159, 160, 151, 17, 152, 155, + 129, 156, 134, 96, 139, 147, 139, 139, 139, 139, + 139, 139, 162, 139, 9, 139, 9, 139, 139, 147, + 70, 159, 159, 159, 159, 159, 159, 139, 137, 17, + 17, 9, 139, 45, 139, 15, 16, 118, 87, 161, + 118, 118, 16, 16, 159, 118, 118, 9, 129, 18, + 151, 131, 150, 162, 139, 151, 139, 152, 80, 120, + 17, 145, 140, 23, 45, 94, 116, 117, 159, 118, + 13, 38, 41, 70, 152, 133, 17, 160, 95, 118, + 118, 159, 19, 162, 139, 16, 118, 149, 139, 147, + 139, 147, 162, 139, 137, 14, 45, 149, 149, 154, + 9, 152, 9, 16, 12, 138, 147, 162, 138, 138, + 138, 138, 159, 159, 159, 138, 127, 139, 139, 139, + 87, 9, 135, 16, 16, 16, 16, 16, 118, 16, + 118, 19, 14, 129, 162, 100, 45, 140, 95, 156, + 16, 118, 16, 118, 127, 139, 147, 139, 129, 139, + 149, 12, 162, 16, 138, 17, 160, 160, 156, 16, + 16, 16, 131, 14, 124, 139, 16, 16, 17, 149, + 129, 152, 16, 123, 131, 151, 152, 149, 122, 152 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 113, 114, 114, 115, 115, 116, 116, 117, 117, - 118, 118, 119, 119, 121, 120, 122, 120, 123, 120, - 124, 124, 125, 126, 126, 127, 127, 128, 128, 129, - 129, 130, 130, 131, 131, 132, 133, 133, 133, 133, - 133, 133, 133, 134, 133, 135, 135, 136, 136, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 0, 114, 115, 115, 116, 116, 117, 117, 118, 118, + 119, 119, 120, 120, 122, 121, 123, 121, 124, 121, + 125, 125, 126, 127, 127, 128, 128, 129, 129, 130, + 130, 131, 131, 132, 132, 133, 134, 134, 134, 134, + 134, 134, 134, 135, 134, 136, 136, 137, 137, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 139, - 139, 140, 140, 141, 141, 141, 142, 142, 143, 143, - 143, 143, 144, 144, 145, 145, 147, 146, 148, 148, - 149, 149, 149, 149, 149, 149, 149, 149, 150, 150, - 151, 151, 152, 153, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 154, 151, 151, 155, - 155, 156, 156, 157, 157, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 159, 159, 159, - 159, 160, 160, 160, 161, 161, 161, 162 + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 140, + 140, 141, 141, 142, 142, 142, 143, 143, 144, 144, + 144, 144, 145, 145, 146, 146, 148, 147, 149, 149, + 150, 150, 150, 150, 150, 150, 150, 150, 151, 151, + 152, 152, 153, 154, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 155, 152, 152, 156, + 156, 157, 157, 158, 158, 159, 159, 159, 159, 159, + 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, + 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, + 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, + 159, 159, 159, 159, 159, 159, 159, 160, 160, 160, + 160, 161, 161, 161, 162, 162, 162, 163 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1877,22 +1866,22 @@ static const yytype_uint8 yyr2[] = #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (0) +#define YYBACKUP(Token, Value) \ + do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ + while (0) /* Error token number */ #define YYTERROR 1 @@ -2007,7 +1996,7 @@ yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yystos[yyssp[yyi + 1 - yynrhs]], - &(yyvsp[(yyi + 1) - (yynrhs)]) + &yyvsp[(yyi + 1) - (yynrhs)] ); YYFPRINTF (stderr, "\n"); } @@ -2111,7 +2100,10 @@ yytnamerr (char *yyres, const char *yystr) case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; - /* Fall through. */ + else + goto append; + + append: default: if (yyres) yyres[yyn] = *yyp; @@ -2207,10 +2199,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yyarg[yycount++] = yytname[yyx]; { YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (! (yysize <= yysize1 - && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) + yysize = yysize1; + else return 2; - yysize = yysize1; } } } @@ -2234,9 +2226,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, { YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) + yysize = yysize1; + else return 2; - yysize = yysize1; } if (*yymsg_alloc < yysize) @@ -2362,23 +2355,33 @@ yyparse (void) yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; + /*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | +| yynewstate -- push a new state, which is found in yystate. | `------------------------------------------------------------*/ - yynewstate: +yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; - yysetstate: + +/*--------------------------------------------------------------------. +| yynewstate -- set current state (the top of the stack) to yystate. | +`--------------------------------------------------------------------*/ +yysetstate: + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + YY_ASSERT (0 <= yystate && yystate < YYNSTATES); *yyssp = (yytype_int16) yystate; if (yyss + yystacksize - 1 <= yyssp) +#if !defined yyoverflow && !defined YYSTACK_RELOCATE + goto yyexhaustedlab; +#else { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); -#ifdef yyoverflow +# if defined yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into @@ -2397,10 +2400,7 @@ yyparse (void) yyss = yyss1; yyvs = yyvs1; } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyexhaustedlab; -# else +# else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; @@ -2416,12 +2416,11 @@ yyparse (void) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE +# undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif -#endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; @@ -2432,19 +2431,18 @@ yyparse (void) if (yyss + yystacksize - 1 <= yyssp) YYABORT; } - - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); +#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ if (yystate == YYFINAL) YYACCEPT; goto yybackup; + /*-----------. | yybackup. | `-----------*/ yybackup: - /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ @@ -2502,7 +2500,6 @@ yybackup: YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END - goto yynewstate; @@ -2517,7 +2514,7 @@ yydefault: /*-----------------------------. -| yyreduce -- Do a reduction. | +| yyreduce -- do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ @@ -2537,889 +2534,890 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 2: -#line 99 "awkgram.y" /* yacc.c:1645 */ + case 2: +#line 99 "awkgram.y" { if (errorflag==0) winner = (Node *)stat3(PROGRAM, beginloc, (yyvsp[0].p), endloc); } -#line 2545 "ytab.c" /* yacc.c:1645 */ +#line 2542 "y.tab.c" break; case 3: -#line 101 "awkgram.y" /* yacc.c:1645 */ +#line 101 "awkgram.y" { yyclearin; bracecheck(); SYNTAX("bailing out"); } -#line 2551 "ytab.c" /* yacc.c:1645 */ +#line 2548 "y.tab.c" break; case 14: -#line 125 "awkgram.y" /* yacc.c:1645 */ +#line 125 "awkgram.y" {inloop++;} -#line 2557 "ytab.c" /* yacc.c:1645 */ +#line 2554 "y.tab.c" break; case 15: -#line 126 "awkgram.y" /* yacc.c:1645 */ +#line 126 "awkgram.y" { --inloop; (yyval.p) = stat4(FOR, (yyvsp[-9].p), notnull((yyvsp[-6].p)), (yyvsp[-3].p), (yyvsp[0].p)); } -#line 2563 "ytab.c" /* yacc.c:1645 */ +#line 2560 "y.tab.c" break; case 16: -#line 127 "awkgram.y" /* yacc.c:1645 */ +#line 127 "awkgram.y" {inloop++;} -#line 2569 "ytab.c" /* yacc.c:1645 */ +#line 2566 "y.tab.c" break; case 17: -#line 128 "awkgram.y" /* yacc.c:1645 */ +#line 128 "awkgram.y" { --inloop; (yyval.p) = stat4(FOR, (yyvsp[-7].p), NIL, (yyvsp[-3].p), (yyvsp[0].p)); } -#line 2575 "ytab.c" /* yacc.c:1645 */ +#line 2572 "y.tab.c" break; case 18: -#line 129 "awkgram.y" /* yacc.c:1645 */ +#line 129 "awkgram.y" {inloop++;} -#line 2581 "ytab.c" /* yacc.c:1645 */ +#line 2578 "y.tab.c" break; case 19: -#line 130 "awkgram.y" /* yacc.c:1645 */ +#line 130 "awkgram.y" { --inloop; (yyval.p) = stat3(IN, (yyvsp[-5].p), makearr((yyvsp[-3].p)), (yyvsp[0].p)); } -#line 2587 "ytab.c" /* yacc.c:1645 */ +#line 2584 "y.tab.c" break; case 20: -#line 134 "awkgram.y" /* yacc.c:1645 */ +#line 134 "awkgram.y" { setfname((yyvsp[0].cp)); } -#line 2593 "ytab.c" /* yacc.c:1645 */ +#line 2590 "y.tab.c" break; case 21: -#line 135 "awkgram.y" /* yacc.c:1645 */ +#line 135 "awkgram.y" { setfname((yyvsp[0].cp)); } -#line 2599 "ytab.c" /* yacc.c:1645 */ +#line 2596 "y.tab.c" break; case 22: -#line 139 "awkgram.y" /* yacc.c:1645 */ +#line 139 "awkgram.y" { (yyval.p) = notnull((yyvsp[-1].p)); } -#line 2605 "ytab.c" /* yacc.c:1645 */ +#line 2602 "y.tab.c" break; case 27: -#line 151 "awkgram.y" /* yacc.c:1645 */ +#line 151 "awkgram.y" { (yyval.i) = 0; } -#line 2611 "ytab.c" /* yacc.c:1645 */ +#line 2608 "y.tab.c" break; case 29: -#line 156 "awkgram.y" /* yacc.c:1645 */ +#line 156 "awkgram.y" { (yyval.i) = 0; } -#line 2617 "ytab.c" /* yacc.c:1645 */ +#line 2614 "y.tab.c" break; case 31: -#line 162 "awkgram.y" /* yacc.c:1645 */ +#line 162 "awkgram.y" { (yyval.p) = 0; } -#line 2623 "ytab.c" /* yacc.c:1645 */ +#line 2620 "y.tab.c" break; case 33: -#line 167 "awkgram.y" /* yacc.c:1645 */ +#line 167 "awkgram.y" { (yyval.p) = 0; } -#line 2629 "ytab.c" /* yacc.c:1645 */ +#line 2626 "y.tab.c" break; case 34: -#line 168 "awkgram.y" /* yacc.c:1645 */ +#line 168 "awkgram.y" { (yyval.p) = (yyvsp[-1].p); } -#line 2635 "ytab.c" /* yacc.c:1645 */ +#line 2632 "y.tab.c" break; case 35: -#line 172 "awkgram.y" /* yacc.c:1645 */ +#line 172 "awkgram.y" { (yyval.p) = notnull((yyvsp[0].p)); } -#line 2641 "ytab.c" /* yacc.c:1645 */ +#line 2638 "y.tab.c" break; case 36: -#line 176 "awkgram.y" /* yacc.c:1645 */ +#line 176 "awkgram.y" { (yyval.p) = stat2(PASTAT, (yyvsp[0].p), stat2(PRINT, rectonode(), NIL)); } -#line 2647 "ytab.c" /* yacc.c:1645 */ +#line 2644 "y.tab.c" break; case 37: -#line 177 "awkgram.y" /* yacc.c:1645 */ +#line 177 "awkgram.y" { (yyval.p) = stat2(PASTAT, (yyvsp[-3].p), (yyvsp[-1].p)); } -#line 2653 "ytab.c" /* yacc.c:1645 */ +#line 2650 "y.tab.c" break; case 38: -#line 178 "awkgram.y" /* yacc.c:1645 */ +#line 178 "awkgram.y" { (yyval.p) = pa2stat((yyvsp[-3].p), (yyvsp[0].p), stat2(PRINT, rectonode(), NIL)); } -#line 2659 "ytab.c" /* yacc.c:1645 */ +#line 2656 "y.tab.c" break; case 39: -#line 179 "awkgram.y" /* yacc.c:1645 */ +#line 179 "awkgram.y" { (yyval.p) = pa2stat((yyvsp[-6].p), (yyvsp[-3].p), (yyvsp[-1].p)); } -#line 2665 "ytab.c" /* yacc.c:1645 */ +#line 2662 "y.tab.c" break; case 40: -#line 180 "awkgram.y" /* yacc.c:1645 */ +#line 180 "awkgram.y" { (yyval.p) = stat2(PASTAT, NIL, (yyvsp[-1].p)); } -#line 2671 "ytab.c" /* yacc.c:1645 */ +#line 2668 "y.tab.c" break; case 41: -#line 182 "awkgram.y" /* yacc.c:1645 */ +#line 182 "awkgram.y" { beginloc = linkum(beginloc, (yyvsp[-1].p)); (yyval.p) = 0; } -#line 2677 "ytab.c" /* yacc.c:1645 */ +#line 2674 "y.tab.c" break; case 42: -#line 184 "awkgram.y" /* yacc.c:1645 */ +#line 184 "awkgram.y" { endloc = linkum(endloc, (yyvsp[-1].p)); (yyval.p) = 0; } -#line 2683 "ytab.c" /* yacc.c:1645 */ +#line 2680 "y.tab.c" break; case 43: -#line 185 "awkgram.y" /* yacc.c:1645 */ - {infunc++;} -#line 2689 "ytab.c" /* yacc.c:1645 */ +#line 185 "awkgram.y" + {infunc = true;} +#line 2686 "y.tab.c" break; case 44: -#line 186 "awkgram.y" /* yacc.c:1645 */ - { infunc--; curfname=0; defn((Cell *)(yyvsp[-7].p), (yyvsp[-5].p), (yyvsp[-1].p)); (yyval.p) = 0; } -#line 2695 "ytab.c" /* yacc.c:1645 */ +#line 186 "awkgram.y" + { infunc = false; curfname=0; defn((Cell *)(yyvsp[-7].p), (yyvsp[-5].p), (yyvsp[-1].p)); (yyval.p) = 0; } +#line 2692 "y.tab.c" break; case 46: -#line 191 "awkgram.y" /* yacc.c:1645 */ +#line 191 "awkgram.y" { (yyval.p) = linkum((yyvsp[-2].p), (yyvsp[0].p)); } -#line 2701 "ytab.c" /* yacc.c:1645 */ +#line 2698 "y.tab.c" break; case 48: -#line 196 "awkgram.y" /* yacc.c:1645 */ +#line 196 "awkgram.y" { (yyval.p) = linkum((yyvsp[-2].p), (yyvsp[0].p)); } -#line 2707 "ytab.c" /* yacc.c:1645 */ +#line 2704 "y.tab.c" break; case 49: -#line 200 "awkgram.y" /* yacc.c:1645 */ +#line 200 "awkgram.y" { (yyval.p) = op2((yyvsp[-1].i), (yyvsp[-2].p), (yyvsp[0].p)); } -#line 2713 "ytab.c" /* yacc.c:1645 */ +#line 2710 "y.tab.c" break; case 50: -#line 202 "awkgram.y" /* yacc.c:1645 */ +#line 202 "awkgram.y" { (yyval.p) = op3(CONDEXPR, notnull((yyvsp[-4].p)), (yyvsp[-2].p), (yyvsp[0].p)); } -#line 2719 "ytab.c" /* yacc.c:1645 */ +#line 2716 "y.tab.c" break; case 51: -#line 204 "awkgram.y" /* yacc.c:1645 */ +#line 204 "awkgram.y" { (yyval.p) = op2(BOR, notnull((yyvsp[-2].p)), notnull((yyvsp[0].p))); } -#line 2725 "ytab.c" /* yacc.c:1645 */ +#line 2722 "y.tab.c" break; case 52: -#line 206 "awkgram.y" /* yacc.c:1645 */ +#line 206 "awkgram.y" { (yyval.p) = op2(AND, notnull((yyvsp[-2].p)), notnull((yyvsp[0].p))); } -#line 2731 "ytab.c" /* yacc.c:1645 */ +#line 2728 "y.tab.c" break; case 53: -#line 207 "awkgram.y" /* yacc.c:1645 */ +#line 207 "awkgram.y" { (yyval.p) = op3((yyvsp[-1].i), NIL, (yyvsp[-2].p), (Node*)makedfa((yyvsp[0].s), 0)); } -#line 2737 "ytab.c" /* yacc.c:1645 */ +#line 2734 "y.tab.c" break; case 54: -#line 209 "awkgram.y" /* yacc.c:1645 */ +#line 209 "awkgram.y" { if (constnode((yyvsp[0].p))) (yyval.p) = op3((yyvsp[-1].i), NIL, (yyvsp[-2].p), (Node*)makedfa(strnode((yyvsp[0].p)), 0)); else (yyval.p) = op3((yyvsp[-1].i), (Node *)1, (yyvsp[-2].p), (yyvsp[0].p)); } -#line 2746 "ytab.c" /* yacc.c:1645 */ +#line 2743 "y.tab.c" break; case 55: -#line 213 "awkgram.y" /* yacc.c:1645 */ +#line 213 "awkgram.y" { (yyval.p) = op2(INTEST, (yyvsp[-2].p), makearr((yyvsp[0].p))); } -#line 2752 "ytab.c" /* yacc.c:1645 */ +#line 2749 "y.tab.c" break; case 56: -#line 214 "awkgram.y" /* yacc.c:1645 */ +#line 214 "awkgram.y" { (yyval.p) = op2(INTEST, (yyvsp[-3].p), makearr((yyvsp[0].p))); } -#line 2758 "ytab.c" /* yacc.c:1645 */ +#line 2755 "y.tab.c" break; case 57: -#line 215 "awkgram.y" /* yacc.c:1645 */ +#line 215 "awkgram.y" { (yyval.p) = op2(CAT, (yyvsp[-1].p), (yyvsp[0].p)); } -#line 2764 "ytab.c" /* yacc.c:1645 */ +#line 2761 "y.tab.c" break; case 60: -#line 221 "awkgram.y" /* yacc.c:1645 */ +#line 221 "awkgram.y" { (yyval.p) = op2((yyvsp[-1].i), (yyvsp[-2].p), (yyvsp[0].p)); } -#line 2770 "ytab.c" /* yacc.c:1645 */ +#line 2767 "y.tab.c" break; case 61: -#line 223 "awkgram.y" /* yacc.c:1645 */ +#line 223 "awkgram.y" { (yyval.p) = op3(CONDEXPR, notnull((yyvsp[-4].p)), (yyvsp[-2].p), (yyvsp[0].p)); } -#line 2776 "ytab.c" /* yacc.c:1645 */ +#line 2773 "y.tab.c" break; case 62: -#line 225 "awkgram.y" /* yacc.c:1645 */ +#line 225 "awkgram.y" { (yyval.p) = op2(BOR, notnull((yyvsp[-2].p)), notnull((yyvsp[0].p))); } -#line 2782 "ytab.c" /* yacc.c:1645 */ +#line 2779 "y.tab.c" break; case 63: -#line 227 "awkgram.y" /* yacc.c:1645 */ +#line 227 "awkgram.y" { (yyval.p) = op2(AND, notnull((yyvsp[-2].p)), notnull((yyvsp[0].p))); } -#line 2788 "ytab.c" /* yacc.c:1645 */ +#line 2785 "y.tab.c" break; case 64: -#line 228 "awkgram.y" /* yacc.c:1645 */ +#line 228 "awkgram.y" { (yyval.p) = op2((yyvsp[-1].i), (yyvsp[-2].p), (yyvsp[0].p)); } -#line 2794 "ytab.c" /* yacc.c:1645 */ +#line 2791 "y.tab.c" break; case 65: -#line 229 "awkgram.y" /* yacc.c:1645 */ +#line 229 "awkgram.y" { (yyval.p) = op2((yyvsp[-1].i), (yyvsp[-2].p), (yyvsp[0].p)); } -#line 2800 "ytab.c" /* yacc.c:1645 */ +#line 2797 "y.tab.c" break; case 66: -#line 230 "awkgram.y" /* yacc.c:1645 */ +#line 230 "awkgram.y" { (yyval.p) = op2((yyvsp[-1].i), (yyvsp[-2].p), (yyvsp[0].p)); } -#line 2806 "ytab.c" /* yacc.c:1645 */ +#line 2803 "y.tab.c" break; case 67: -#line 231 "awkgram.y" /* yacc.c:1645 */ +#line 231 "awkgram.y" { (yyval.p) = op2((yyvsp[-1].i), (yyvsp[-2].p), (yyvsp[0].p)); } -#line 2812 "ytab.c" /* yacc.c:1645 */ +#line 2809 "y.tab.c" break; case 68: -#line 232 "awkgram.y" /* yacc.c:1645 */ +#line 232 "awkgram.y" { (yyval.p) = op2((yyvsp[-1].i), (yyvsp[-2].p), (yyvsp[0].p)); } -#line 2818 "ytab.c" /* yacc.c:1645 */ +#line 2815 "y.tab.c" break; case 69: -#line 233 "awkgram.y" /* yacc.c:1645 */ +#line 233 "awkgram.y" { (yyval.p) = op2((yyvsp[-1].i), (yyvsp[-2].p), (yyvsp[0].p)); } -#line 2824 "ytab.c" /* yacc.c:1645 */ +#line 2821 "y.tab.c" break; case 70: -#line 234 "awkgram.y" /* yacc.c:1645 */ +#line 234 "awkgram.y" { (yyval.p) = op3((yyvsp[-1].i), NIL, (yyvsp[-2].p), (Node*)makedfa((yyvsp[0].s), 0)); } -#line 2830 "ytab.c" /* yacc.c:1645 */ +#line 2827 "y.tab.c" break; case 71: -#line 236 "awkgram.y" /* yacc.c:1645 */ +#line 236 "awkgram.y" { if (constnode((yyvsp[0].p))) (yyval.p) = op3((yyvsp[-1].i), NIL, (yyvsp[-2].p), (Node*)makedfa(strnode((yyvsp[0].p)), 0)); else (yyval.p) = op3((yyvsp[-1].i), (Node *)1, (yyvsp[-2].p), (yyvsp[0].p)); } -#line 2839 "ytab.c" /* yacc.c:1645 */ +#line 2836 "y.tab.c" break; case 72: -#line 240 "awkgram.y" /* yacc.c:1645 */ +#line 240 "awkgram.y" { (yyval.p) = op2(INTEST, (yyvsp[-2].p), makearr((yyvsp[0].p))); } -#line 2845 "ytab.c" /* yacc.c:1645 */ +#line 2842 "y.tab.c" break; case 73: -#line 241 "awkgram.y" /* yacc.c:1645 */ +#line 241 "awkgram.y" { (yyval.p) = op2(INTEST, (yyvsp[-3].p), makearr((yyvsp[0].p))); } -#line 2851 "ytab.c" /* yacc.c:1645 */ +#line 2848 "y.tab.c" break; case 74: -#line 242 "awkgram.y" /* yacc.c:1645 */ +#line 242 "awkgram.y" { if (safe) SYNTAX("cmd | getline is unsafe"); else (yyval.p) = op3(GETLINE, (yyvsp[0].p), itonp((yyvsp[-2].i)), (yyvsp[-3].p)); } -#line 2859 "ytab.c" /* yacc.c:1645 */ +#line 2856 "y.tab.c" break; case 75: -#line 245 "awkgram.y" /* yacc.c:1645 */ +#line 245 "awkgram.y" { if (safe) SYNTAX("cmd | getline is unsafe"); else (yyval.p) = op3(GETLINE, (Node*)0, itonp((yyvsp[-1].i)), (yyvsp[-2].p)); } -#line 2867 "ytab.c" /* yacc.c:1645 */ +#line 2864 "y.tab.c" break; case 76: -#line 248 "awkgram.y" /* yacc.c:1645 */ +#line 248 "awkgram.y" { (yyval.p) = op2(CAT, (yyvsp[-1].p), (yyvsp[0].p)); } -#line 2873 "ytab.c" /* yacc.c:1645 */ +#line 2870 "y.tab.c" break; case 79: -#line 254 "awkgram.y" /* yacc.c:1645 */ +#line 254 "awkgram.y" { (yyval.p) = linkum((yyvsp[-2].p), (yyvsp[0].p)); } -#line 2879 "ytab.c" /* yacc.c:1645 */ +#line 2876 "y.tab.c" break; case 80: -#line 255 "awkgram.y" /* yacc.c:1645 */ +#line 255 "awkgram.y" { (yyval.p) = linkum((yyvsp[-2].p), (yyvsp[0].p)); } -#line 2885 "ytab.c" /* yacc.c:1645 */ +#line 2882 "y.tab.c" break; case 82: -#line 260 "awkgram.y" /* yacc.c:1645 */ +#line 260 "awkgram.y" { (yyval.p) = linkum((yyvsp[-2].p), (yyvsp[0].p)); } -#line 2891 "ytab.c" /* yacc.c:1645 */ +#line 2888 "y.tab.c" break; case 83: -#line 264 "awkgram.y" /* yacc.c:1645 */ +#line 264 "awkgram.y" { (yyval.p) = rectonode(); } -#line 2897 "ytab.c" /* yacc.c:1645 */ +#line 2894 "y.tab.c" break; case 85: -#line 266 "awkgram.y" /* yacc.c:1645 */ +#line 266 "awkgram.y" { (yyval.p) = (yyvsp[-1].p); } -#line 2903 "ytab.c" /* yacc.c:1645 */ +#line 2900 "y.tab.c" break; case 94: -#line 283 "awkgram.y" /* yacc.c:1645 */ +#line 283 "awkgram.y" { (yyval.p) = op3(MATCH, NIL, rectonode(), (Node*)makedfa((yyvsp[0].s), 0)); } -#line 2909 "ytab.c" /* yacc.c:1645 */ +#line 2906 "y.tab.c" break; case 95: -#line 284 "awkgram.y" /* yacc.c:1645 */ +#line 284 "awkgram.y" { (yyval.p) = op1(NOT, notnull((yyvsp[0].p))); } -#line 2915 "ytab.c" /* yacc.c:1645 */ +#line 2912 "y.tab.c" break; case 96: -#line 288 "awkgram.y" /* yacc.c:1645 */ +#line 288 "awkgram.y" {startreg();} -#line 2921 "ytab.c" /* yacc.c:1645 */ +#line 2918 "y.tab.c" break; case 97: -#line 288 "awkgram.y" /* yacc.c:1645 */ +#line 288 "awkgram.y" { (yyval.s) = (yyvsp[-1].s); } -#line 2927 "ytab.c" /* yacc.c:1645 */ +#line 2924 "y.tab.c" break; case 100: -#line 296 "awkgram.y" /* yacc.c:1645 */ +#line 296 "awkgram.y" { if (safe) SYNTAX("print | is unsafe"); else (yyval.p) = stat3((yyvsp[-3].i), (yyvsp[-2].p), itonp((yyvsp[-1].i)), (yyvsp[0].p)); } -#line 2935 "ytab.c" /* yacc.c:1645 */ +#line 2932 "y.tab.c" break; case 101: -#line 299 "awkgram.y" /* yacc.c:1645 */ +#line 299 "awkgram.y" { if (safe) SYNTAX("print >> is unsafe"); else (yyval.p) = stat3((yyvsp[-3].i), (yyvsp[-2].p), itonp((yyvsp[-1].i)), (yyvsp[0].p)); } -#line 2943 "ytab.c" /* yacc.c:1645 */ +#line 2940 "y.tab.c" break; case 102: -#line 302 "awkgram.y" /* yacc.c:1645 */ +#line 302 "awkgram.y" { if (safe) SYNTAX("print > is unsafe"); else (yyval.p) = stat3((yyvsp[-3].i), (yyvsp[-2].p), itonp((yyvsp[-1].i)), (yyvsp[0].p)); } -#line 2951 "ytab.c" /* yacc.c:1645 */ +#line 2948 "y.tab.c" break; case 103: -#line 305 "awkgram.y" /* yacc.c:1645 */ +#line 305 "awkgram.y" { (yyval.p) = stat3((yyvsp[-1].i), (yyvsp[0].p), NIL, NIL); } -#line 2957 "ytab.c" /* yacc.c:1645 */ +#line 2954 "y.tab.c" break; case 104: -#line 306 "awkgram.y" /* yacc.c:1645 */ +#line 306 "awkgram.y" { (yyval.p) = stat2(DELETE, makearr((yyvsp[-3].p)), (yyvsp[-1].p)); } -#line 2963 "ytab.c" /* yacc.c:1645 */ +#line 2960 "y.tab.c" break; case 105: -#line 307 "awkgram.y" /* yacc.c:1645 */ +#line 307 "awkgram.y" { (yyval.p) = stat2(DELETE, makearr((yyvsp[0].p)), 0); } -#line 2969 "ytab.c" /* yacc.c:1645 */ +#line 2966 "y.tab.c" break; case 106: -#line 308 "awkgram.y" /* yacc.c:1645 */ +#line 308 "awkgram.y" { (yyval.p) = exptostat((yyvsp[0].p)); } -#line 2975 "ytab.c" /* yacc.c:1645 */ +#line 2972 "y.tab.c" break; case 107: -#line 309 "awkgram.y" /* yacc.c:1645 */ +#line 309 "awkgram.y" { yyclearin; SYNTAX("illegal statement"); } -#line 2981 "ytab.c" /* yacc.c:1645 */ +#line 2978 "y.tab.c" break; case 110: -#line 318 "awkgram.y" /* yacc.c:1645 */ +#line 318 "awkgram.y" { if (!inloop) SYNTAX("break illegal outside of loops"); (yyval.p) = stat1(BREAK, NIL); } -#line 2988 "ytab.c" /* yacc.c:1645 */ +#line 2985 "y.tab.c" break; case 111: -#line 320 "awkgram.y" /* yacc.c:1645 */ +#line 320 "awkgram.y" { if (!inloop) SYNTAX("continue illegal outside of loops"); (yyval.p) = stat1(CONTINUE, NIL); } -#line 2995 "ytab.c" /* yacc.c:1645 */ +#line 2992 "y.tab.c" break; case 112: -#line 322 "awkgram.y" /* yacc.c:1645 */ +#line 322 "awkgram.y" {inloop++;} -#line 3001 "ytab.c" /* yacc.c:1645 */ +#line 2998 "y.tab.c" break; case 113: -#line 322 "awkgram.y" /* yacc.c:1645 */ +#line 322 "awkgram.y" {--inloop;} -#line 3007 "ytab.c" /* yacc.c:1645 */ +#line 3004 "y.tab.c" break; case 114: -#line 323 "awkgram.y" /* yacc.c:1645 */ +#line 323 "awkgram.y" { (yyval.p) = stat2(DO, (yyvsp[-6].p), notnull((yyvsp[-2].p))); } -#line 3013 "ytab.c" /* yacc.c:1645 */ +#line 3010 "y.tab.c" break; case 115: -#line 324 "awkgram.y" /* yacc.c:1645 */ +#line 324 "awkgram.y" { (yyval.p) = stat1(EXIT, (yyvsp[-1].p)); } -#line 3019 "ytab.c" /* yacc.c:1645 */ +#line 3016 "y.tab.c" break; case 116: -#line 325 "awkgram.y" /* yacc.c:1645 */ +#line 325 "awkgram.y" { (yyval.p) = stat1(EXIT, NIL); } -#line 3025 "ytab.c" /* yacc.c:1645 */ +#line 3022 "y.tab.c" break; case 118: -#line 327 "awkgram.y" /* yacc.c:1645 */ +#line 327 "awkgram.y" { (yyval.p) = stat3(IF, (yyvsp[-3].p), (yyvsp[-2].p), (yyvsp[0].p)); } -#line 3031 "ytab.c" /* yacc.c:1645 */ +#line 3028 "y.tab.c" break; case 119: -#line 328 "awkgram.y" /* yacc.c:1645 */ +#line 328 "awkgram.y" { (yyval.p) = stat3(IF, (yyvsp[-1].p), (yyvsp[0].p), NIL); } -#line 3037 "ytab.c" /* yacc.c:1645 */ +#line 3034 "y.tab.c" break; case 120: -#line 329 "awkgram.y" /* yacc.c:1645 */ +#line 329 "awkgram.y" { (yyval.p) = (yyvsp[-1].p); } -#line 3043 "ytab.c" /* yacc.c:1645 */ +#line 3040 "y.tab.c" break; case 121: -#line 330 "awkgram.y" /* yacc.c:1645 */ +#line 330 "awkgram.y" { if (infunc) SYNTAX("next is illegal inside a function"); (yyval.p) = stat1(NEXT, NIL); } -#line 3051 "ytab.c" /* yacc.c:1645 */ +#line 3048 "y.tab.c" break; case 122: -#line 333 "awkgram.y" /* yacc.c:1645 */ +#line 333 "awkgram.y" { if (infunc) SYNTAX("nextfile is illegal inside a function"); (yyval.p) = stat1(NEXTFILE, NIL); } -#line 3059 "ytab.c" /* yacc.c:1645 */ +#line 3056 "y.tab.c" break; case 123: -#line 336 "awkgram.y" /* yacc.c:1645 */ +#line 336 "awkgram.y" { (yyval.p) = stat1(RETURN, (yyvsp[-1].p)); } -#line 3065 "ytab.c" /* yacc.c:1645 */ +#line 3062 "y.tab.c" break; case 124: -#line 337 "awkgram.y" /* yacc.c:1645 */ +#line 337 "awkgram.y" { (yyval.p) = stat1(RETURN, NIL); } -#line 3071 "ytab.c" /* yacc.c:1645 */ +#line 3068 "y.tab.c" break; case 126: -#line 339 "awkgram.y" /* yacc.c:1645 */ +#line 339 "awkgram.y" {inloop++;} -#line 3077 "ytab.c" /* yacc.c:1645 */ +#line 3074 "y.tab.c" break; case 127: -#line 339 "awkgram.y" /* yacc.c:1645 */ +#line 339 "awkgram.y" { --inloop; (yyval.p) = stat2(WHILE, (yyvsp[-2].p), (yyvsp[0].p)); } -#line 3083 "ytab.c" /* yacc.c:1645 */ +#line 3080 "y.tab.c" break; case 128: -#line 340 "awkgram.y" /* yacc.c:1645 */ +#line 340 "awkgram.y" { (yyval.p) = 0; } -#line 3089 "ytab.c" /* yacc.c:1645 */ +#line 3086 "y.tab.c" break; case 130: -#line 345 "awkgram.y" /* yacc.c:1645 */ +#line 345 "awkgram.y" { (yyval.p) = linkum((yyvsp[-1].p), (yyvsp[0].p)); } -#line 3095 "ytab.c" /* yacc.c:1645 */ +#line 3092 "y.tab.c" break; case 134: -#line 354 "awkgram.y" /* yacc.c:1645 */ +#line 354 "awkgram.y" { (yyval.cp) = catstr((yyvsp[-1].cp), (yyvsp[0].cp)); } -#line 3101 "ytab.c" /* yacc.c:1645 */ +#line 3098 "y.tab.c" break; case 135: -#line 358 "awkgram.y" /* yacc.c:1645 */ +#line 358 "awkgram.y" { (yyval.p) = op2(DIVEQ, (yyvsp[-3].p), (yyvsp[0].p)); } -#line 3107 "ytab.c" /* yacc.c:1645 */ +#line 3104 "y.tab.c" break; case 136: -#line 359 "awkgram.y" /* yacc.c:1645 */ +#line 359 "awkgram.y" { (yyval.p) = op2(ADD, (yyvsp[-2].p), (yyvsp[0].p)); } -#line 3113 "ytab.c" /* yacc.c:1645 */ +#line 3110 "y.tab.c" break; case 137: -#line 360 "awkgram.y" /* yacc.c:1645 */ +#line 360 "awkgram.y" { (yyval.p) = op2(MINUS, (yyvsp[-2].p), (yyvsp[0].p)); } -#line 3119 "ytab.c" /* yacc.c:1645 */ +#line 3116 "y.tab.c" break; case 138: -#line 361 "awkgram.y" /* yacc.c:1645 */ +#line 361 "awkgram.y" { (yyval.p) = op2(MULT, (yyvsp[-2].p), (yyvsp[0].p)); } -#line 3125 "ytab.c" /* yacc.c:1645 */ +#line 3122 "y.tab.c" break; case 139: -#line 362 "awkgram.y" /* yacc.c:1645 */ +#line 362 "awkgram.y" { (yyval.p) = op2(DIVIDE, (yyvsp[-2].p), (yyvsp[0].p)); } -#line 3131 "ytab.c" /* yacc.c:1645 */ +#line 3128 "y.tab.c" break; case 140: -#line 363 "awkgram.y" /* yacc.c:1645 */ +#line 363 "awkgram.y" { (yyval.p) = op2(MOD, (yyvsp[-2].p), (yyvsp[0].p)); } -#line 3137 "ytab.c" /* yacc.c:1645 */ +#line 3134 "y.tab.c" break; case 141: -#line 364 "awkgram.y" /* yacc.c:1645 */ +#line 364 "awkgram.y" { (yyval.p) = op2(POWER, (yyvsp[-2].p), (yyvsp[0].p)); } -#line 3143 "ytab.c" /* yacc.c:1645 */ +#line 3140 "y.tab.c" break; case 142: -#line 365 "awkgram.y" /* yacc.c:1645 */ +#line 365 "awkgram.y" { (yyval.p) = op1(UMINUS, (yyvsp[0].p)); } -#line 3149 "ytab.c" /* yacc.c:1645 */ +#line 3146 "y.tab.c" break; case 143: -#line 366 "awkgram.y" /* yacc.c:1645 */ +#line 366 "awkgram.y" { (yyval.p) = op1(UPLUS, (yyvsp[0].p)); } -#line 3155 "ytab.c" /* yacc.c:1645 */ +#line 3152 "y.tab.c" break; case 144: -#line 367 "awkgram.y" /* yacc.c:1645 */ +#line 367 "awkgram.y" { (yyval.p) = op1(NOT, notnull((yyvsp[0].p))); } -#line 3161 "ytab.c" /* yacc.c:1645 */ +#line 3158 "y.tab.c" break; case 145: -#line 368 "awkgram.y" /* yacc.c:1645 */ +#line 368 "awkgram.y" { (yyval.p) = op2(BLTIN, itonp((yyvsp[-2].i)), rectonode()); } -#line 3167 "ytab.c" /* yacc.c:1645 */ +#line 3164 "y.tab.c" break; case 146: -#line 369 "awkgram.y" /* yacc.c:1645 */ +#line 369 "awkgram.y" { (yyval.p) = op2(BLTIN, itonp((yyvsp[-3].i)), (yyvsp[-1].p)); } -#line 3173 "ytab.c" /* yacc.c:1645 */ +#line 3170 "y.tab.c" break; case 147: -#line 370 "awkgram.y" /* yacc.c:1645 */ +#line 370 "awkgram.y" { (yyval.p) = op2(BLTIN, itonp((yyvsp[0].i)), rectonode()); } -#line 3179 "ytab.c" /* yacc.c:1645 */ +#line 3176 "y.tab.c" break; case 148: -#line 371 "awkgram.y" /* yacc.c:1645 */ +#line 371 "awkgram.y" { (yyval.p) = op2(CALL, celltonode((yyvsp[-2].cp),CVAR), NIL); } -#line 3185 "ytab.c" /* yacc.c:1645 */ +#line 3182 "y.tab.c" break; case 149: -#line 372 "awkgram.y" /* yacc.c:1645 */ +#line 372 "awkgram.y" { (yyval.p) = op2(CALL, celltonode((yyvsp[-3].cp),CVAR), (yyvsp[-1].p)); } -#line 3191 "ytab.c" /* yacc.c:1645 */ +#line 3188 "y.tab.c" break; case 150: -#line 373 "awkgram.y" /* yacc.c:1645 */ +#line 373 "awkgram.y" { (yyval.p) = op1(CLOSE, (yyvsp[0].p)); } -#line 3197 "ytab.c" /* yacc.c:1645 */ +#line 3194 "y.tab.c" break; case 151: -#line 374 "awkgram.y" /* yacc.c:1645 */ +#line 374 "awkgram.y" { (yyval.p) = op1(PREDECR, (yyvsp[0].p)); } -#line 3203 "ytab.c" /* yacc.c:1645 */ +#line 3200 "y.tab.c" break; case 152: -#line 375 "awkgram.y" /* yacc.c:1645 */ +#line 375 "awkgram.y" { (yyval.p) = op1(PREINCR, (yyvsp[0].p)); } -#line 3209 "ytab.c" /* yacc.c:1645 */ +#line 3206 "y.tab.c" break; case 153: -#line 376 "awkgram.y" /* yacc.c:1645 */ +#line 376 "awkgram.y" { (yyval.p) = op1(POSTDECR, (yyvsp[-1].p)); } -#line 3215 "ytab.c" /* yacc.c:1645 */ +#line 3212 "y.tab.c" break; case 154: -#line 377 "awkgram.y" /* yacc.c:1645 */ +#line 377 "awkgram.y" { (yyval.p) = op1(POSTINCR, (yyvsp[-1].p)); } -#line 3221 "ytab.c" /* yacc.c:1645 */ +#line 3218 "y.tab.c" break; case 155: -#line 378 "awkgram.y" /* yacc.c:1645 */ +#line 378 "awkgram.y" { (yyval.p) = op3(GETLINE, (yyvsp[-2].p), itonp((yyvsp[-1].i)), (yyvsp[0].p)); } -#line 3227 "ytab.c" /* yacc.c:1645 */ +#line 3224 "y.tab.c" break; case 156: -#line 379 "awkgram.y" /* yacc.c:1645 */ +#line 379 "awkgram.y" { (yyval.p) = op3(GETLINE, NIL, itonp((yyvsp[-1].i)), (yyvsp[0].p)); } -#line 3233 "ytab.c" /* yacc.c:1645 */ +#line 3230 "y.tab.c" break; case 157: -#line 380 "awkgram.y" /* yacc.c:1645 */ +#line 380 "awkgram.y" { (yyval.p) = op3(GETLINE, (yyvsp[0].p), NIL, NIL); } -#line 3239 "ytab.c" /* yacc.c:1645 */ +#line 3236 "y.tab.c" break; case 158: -#line 381 "awkgram.y" /* yacc.c:1645 */ +#line 381 "awkgram.y" { (yyval.p) = op3(GETLINE, NIL, NIL, NIL); } -#line 3245 "ytab.c" /* yacc.c:1645 */ +#line 3242 "y.tab.c" break; case 159: -#line 383 "awkgram.y" /* yacc.c:1645 */ +#line 383 "awkgram.y" { (yyval.p) = op2(INDEX, (yyvsp[-3].p), (yyvsp[-1].p)); } -#line 3251 "ytab.c" /* yacc.c:1645 */ +#line 3248 "y.tab.c" break; case 160: -#line 385 "awkgram.y" /* yacc.c:1645 */ +#line 385 "awkgram.y" { SYNTAX("index() doesn't permit regular expressions"); (yyval.p) = op2(INDEX, (yyvsp[-3].p), (Node*)(yyvsp[-1].s)); } -#line 3258 "ytab.c" /* yacc.c:1645 */ +#line 3255 "y.tab.c" break; case 161: -#line 387 "awkgram.y" /* yacc.c:1645 */ +#line 387 "awkgram.y" { (yyval.p) = (yyvsp[-1].p); } -#line 3264 "ytab.c" /* yacc.c:1645 */ +#line 3261 "y.tab.c" break; case 162: -#line 389 "awkgram.y" /* yacc.c:1645 */ +#line 389 "awkgram.y" { (yyval.p) = op3(MATCHFCN, NIL, (yyvsp[-3].p), (Node*)makedfa((yyvsp[-1].s), 1)); } -#line 3270 "ytab.c" /* yacc.c:1645 */ +#line 3267 "y.tab.c" break; case 163: -#line 391 "awkgram.y" /* yacc.c:1645 */ +#line 391 "awkgram.y" { if (constnode((yyvsp[-1].p))) (yyval.p) = op3(MATCHFCN, NIL, (yyvsp[-3].p), (Node*)makedfa(strnode((yyvsp[-1].p)), 1)); else (yyval.p) = op3(MATCHFCN, (Node *)1, (yyvsp[-3].p), (yyvsp[-1].p)); } -#line 3279 "ytab.c" /* yacc.c:1645 */ +#line 3276 "y.tab.c" break; case 164: -#line 395 "awkgram.y" /* yacc.c:1645 */ +#line 395 "awkgram.y" { (yyval.p) = celltonode((yyvsp[0].cp), CCON); } -#line 3285 "ytab.c" /* yacc.c:1645 */ +#line 3282 "y.tab.c" break; case 165: -#line 397 "awkgram.y" /* yacc.c:1645 */ +#line 397 "awkgram.y" { (yyval.p) = op4(SPLIT, (yyvsp[-5].p), makearr((yyvsp[-3].p)), (yyvsp[-1].p), (Node*)STRING); } -#line 3291 "ytab.c" /* yacc.c:1645 */ +#line 3288 "y.tab.c" break; case 166: -#line 399 "awkgram.y" /* yacc.c:1645 */ +#line 399 "awkgram.y" { (yyval.p) = op4(SPLIT, (yyvsp[-5].p), makearr((yyvsp[-3].p)), (Node*)makedfa((yyvsp[-1].s), 1), (Node *)REGEXPR); } -#line 3297 "ytab.c" /* yacc.c:1645 */ +#line 3294 "y.tab.c" break; case 167: -#line 401 "awkgram.y" /* yacc.c:1645 */ +#line 401 "awkgram.y" { (yyval.p) = op4(SPLIT, (yyvsp[-3].p), makearr((yyvsp[-1].p)), NIL, (Node*)STRING); } -#line 3303 "ytab.c" /* yacc.c:1645 */ +#line 3300 "y.tab.c" break; case 168: -#line 402 "awkgram.y" /* yacc.c:1645 */ +#line 402 "awkgram.y" { (yyval.p) = op1((yyvsp[-3].i), (yyvsp[-1].p)); } -#line 3309 "ytab.c" /* yacc.c:1645 */ +#line 3306 "y.tab.c" break; case 169: -#line 403 "awkgram.y" /* yacc.c:1645 */ +#line 403 "awkgram.y" { (yyval.p) = celltonode((yyvsp[0].cp), CCON); } -#line 3315 "ytab.c" /* yacc.c:1645 */ +#line 3312 "y.tab.c" break; case 170: -#line 405 "awkgram.y" /* yacc.c:1645 */ +#line 405 "awkgram.y" { (yyval.p) = op4((yyvsp[-5].i), NIL, (Node*)makedfa((yyvsp[-3].s), 1), (yyvsp[-1].p), rectonode()); } -#line 3321 "ytab.c" /* yacc.c:1645 */ +#line 3318 "y.tab.c" break; case 171: -#line 407 "awkgram.y" /* yacc.c:1645 */ +#line 407 "awkgram.y" { if (constnode((yyvsp[-3].p))) (yyval.p) = op4((yyvsp[-5].i), NIL, (Node*)makedfa(strnode((yyvsp[-3].p)), 1), (yyvsp[-1].p), rectonode()); else (yyval.p) = op4((yyvsp[-5].i), (Node *)1, (yyvsp[-3].p), (yyvsp[-1].p), rectonode()); } -#line 3330 "ytab.c" /* yacc.c:1645 */ +#line 3327 "y.tab.c" break; case 172: -#line 412 "awkgram.y" /* yacc.c:1645 */ +#line 412 "awkgram.y" { (yyval.p) = op4((yyvsp[-7].i), NIL, (Node*)makedfa((yyvsp[-5].s), 1), (yyvsp[-3].p), (yyvsp[-1].p)); } -#line 3336 "ytab.c" /* yacc.c:1645 */ +#line 3333 "y.tab.c" break; case 173: -#line 414 "awkgram.y" /* yacc.c:1645 */ +#line 414 "awkgram.y" { if (constnode((yyvsp[-5].p))) (yyval.p) = op4((yyvsp[-7].i), NIL, (Node*)makedfa(strnode((yyvsp[-5].p)), 1), (yyvsp[-3].p), (yyvsp[-1].p)); else (yyval.p) = op4((yyvsp[-7].i), (Node *)1, (yyvsp[-5].p), (yyvsp[-3].p), (yyvsp[-1].p)); } -#line 3345 "ytab.c" /* yacc.c:1645 */ +#line 3342 "y.tab.c" break; case 174: -#line 419 "awkgram.y" /* yacc.c:1645 */ +#line 419 "awkgram.y" { (yyval.p) = op3(SUBSTR, (yyvsp[-5].p), (yyvsp[-3].p), (yyvsp[-1].p)); } -#line 3351 "ytab.c" /* yacc.c:1645 */ +#line 3348 "y.tab.c" break; case 175: -#line 421 "awkgram.y" /* yacc.c:1645 */ +#line 421 "awkgram.y" { (yyval.p) = op3(SUBSTR, (yyvsp[-3].p), (yyvsp[-1].p), NIL); } -#line 3357 "ytab.c" /* yacc.c:1645 */ +#line 3354 "y.tab.c" break; case 178: -#line 427 "awkgram.y" /* yacc.c:1645 */ +#line 427 "awkgram.y" { (yyval.p) = op2(ARRAY, makearr((yyvsp[-3].p)), (yyvsp[-1].p)); } -#line 3363 "ytab.c" /* yacc.c:1645 */ +#line 3360 "y.tab.c" break; case 179: -#line 428 "awkgram.y" /* yacc.c:1645 */ +#line 428 "awkgram.y" { (yyval.p) = op1(INDIRECT, celltonode((yyvsp[0].cp), CVAR)); } -#line 3369 "ytab.c" /* yacc.c:1645 */ +#line 3366 "y.tab.c" break; case 180: -#line 429 "awkgram.y" /* yacc.c:1645 */ +#line 429 "awkgram.y" { (yyval.p) = op1(INDIRECT, (yyvsp[0].p)); } -#line 3375 "ytab.c" /* yacc.c:1645 */ +#line 3372 "y.tab.c" break; case 181: -#line 433 "awkgram.y" /* yacc.c:1645 */ +#line 433 "awkgram.y" { arglist = (yyval.p) = 0; } -#line 3381 "ytab.c" /* yacc.c:1645 */ +#line 3378 "y.tab.c" break; case 182: -#line 434 "awkgram.y" /* yacc.c:1645 */ +#line 434 "awkgram.y" { arglist = (yyval.p) = celltonode((yyvsp[0].cp),CVAR); } -#line 3387 "ytab.c" /* yacc.c:1645 */ +#line 3384 "y.tab.c" break; case 183: -#line 435 "awkgram.y" /* yacc.c:1645 */ +#line 435 "awkgram.y" { checkdup((yyvsp[-2].p), (yyvsp[0].cp)); arglist = (yyval.p) = linkum((yyvsp[-2].p),celltonode((yyvsp[0].cp),CVAR)); } -#line 3395 "ytab.c" /* yacc.c:1645 */ +#line 3392 "y.tab.c" break; case 184: -#line 441 "awkgram.y" /* yacc.c:1645 */ +#line 441 "awkgram.y" { (yyval.p) = celltonode((yyvsp[0].cp), CVAR); } -#line 3401 "ytab.c" /* yacc.c:1645 */ +#line 3398 "y.tab.c" break; case 185: -#line 442 "awkgram.y" /* yacc.c:1645 */ +#line 442 "awkgram.y" { (yyval.p) = op1(ARG, itonp((yyvsp[0].i))); } -#line 3407 "ytab.c" /* yacc.c:1645 */ +#line 3404 "y.tab.c" break; case 186: -#line 443 "awkgram.y" /* yacc.c:1645 */ +#line 443 "awkgram.y" { (yyval.p) = op1(VARNF, (Node *) (yyvsp[0].cp)); } -#line 3413 "ytab.c" /* yacc.c:1645 */ +#line 3410 "y.tab.c" break; case 187: -#line 448 "awkgram.y" /* yacc.c:1645 */ +#line 448 "awkgram.y" { (yyval.p) = notnull((yyvsp[-1].p)); } -#line 3419 "ytab.c" /* yacc.c:1645 */ +#line 3416 "y.tab.c" break; -#line 3423 "ytab.c" /* yacc.c:1645 */ +#line 3420 "y.tab.c" + default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -3533,12 +3531,10 @@ yyerrlab: | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: - - /* Pacify compilers like GCC when the user code never invokes - YYERROR and the label yyerrorlab therefore never appears in user - code. */ - if (/*CONSTCOND*/ 0) - goto yyerrorlab; + /* Pacify compilers when the user code never invokes YYERROR and the + label yyerrorlab therefore never appears in user code. */ + if (0) + YYERROR; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ @@ -3600,6 +3596,7 @@ yyacceptlab: yyresult = 0; goto yyreturn; + /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ @@ -3607,6 +3604,7 @@ yyabortlab: yyresult = 1; goto yyreturn; + #if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | @@ -3617,6 +3615,10 @@ yyexhaustedlab: /* Fall through. */ #endif + +/*-----------------------------------------------------. +| yyreturn -- parsing is finished, return the result. | +`-----------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { @@ -3646,7 +3648,7 @@ yyreturn: #endif return yyresult; } -#line 451 "awkgram.y" /* yacc.c:1903 */ +#line 451 "awkgram.y" void setfname(Cell *p) @@ -1,8 +1,9 @@ -/* A Bison parser, made by GNU Bison 3.2.2. */ +/* A Bison parser, made by GNU Bison 3.4.1. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, + Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -33,8 +34,8 @@ /* Undocumented macros, especially those whose name start with YY_, are private implementation details. Do not rely on them. */ -#ifndef YY_YY_YTAB_H_INCLUDED -# define YY_YY_YTAB_H_INCLUDED +#ifndef YY_YY_Y_TAB_H_INCLUDED +# define YY_YY_Y_TAB_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 @@ -70,78 +71,79 @@ extern int yydebug; QUEST = 277, PLUS = 278, EMPTYRE = 279, - AND = 280, - BOR = 281, - APPEND = 282, - EQ = 283, - GE = 284, - GT = 285, - LE = 286, - LT = 287, - NE = 288, - IN = 289, - ARG = 290, - BLTIN = 291, - BREAK = 292, - CLOSE = 293, - CONTINUE = 294, - DELETE = 295, - DO = 296, - EXIT = 297, - FOR = 298, - FUNC = 299, - SUB = 300, - GSUB = 301, - IF = 302, - INDEX = 303, - LSUBSTR = 304, - MATCHFCN = 305, - NEXT = 306, - NEXTFILE = 307, - ADD = 308, - MINUS = 309, - MULT = 310, - DIVIDE = 311, - MOD = 312, - ASSIGN = 313, - ASGNOP = 314, - ADDEQ = 315, - SUBEQ = 316, - MULTEQ = 317, - DIVEQ = 318, - MODEQ = 319, - POWEQ = 320, - PRINT = 321, - PRINTF = 322, - SPRINTF = 323, - ELSE = 324, - INTEST = 325, - CONDEXPR = 326, - POSTINCR = 327, - PREINCR = 328, - POSTDECR = 329, - PREDECR = 330, - VAR = 331, - IVAR = 332, - VARNF = 333, - CALL = 334, - NUMBER = 335, - STRING = 336, - REGEXPR = 337, - GETLINE = 338, - RETURN = 339, - SPLIT = 340, - SUBSTR = 341, - WHILE = 342, - CAT = 343, - NOT = 344, - UMINUS = 345, - UPLUS = 346, - POWER = 347, - DECR = 348, - INCR = 349, - INDIRECT = 350, - LASTTOKEN = 351 + ZERO = 280, + AND = 281, + BOR = 282, + APPEND = 283, + EQ = 284, + GE = 285, + GT = 286, + LE = 287, + LT = 288, + NE = 289, + IN = 290, + ARG = 291, + BLTIN = 292, + BREAK = 293, + CLOSE = 294, + CONTINUE = 295, + DELETE = 296, + DO = 297, + EXIT = 298, + FOR = 299, + FUNC = 300, + SUB = 301, + GSUB = 302, + IF = 303, + INDEX = 304, + LSUBSTR = 305, + MATCHFCN = 306, + NEXT = 307, + NEXTFILE = 308, + ADD = 309, + MINUS = 310, + MULT = 311, + DIVIDE = 312, + MOD = 313, + ASSIGN = 314, + ASGNOP = 315, + ADDEQ = 316, + SUBEQ = 317, + MULTEQ = 318, + DIVEQ = 319, + MODEQ = 320, + POWEQ = 321, + PRINT = 322, + PRINTF = 323, + SPRINTF = 324, + ELSE = 325, + INTEST = 326, + CONDEXPR = 327, + POSTINCR = 328, + PREINCR = 329, + POSTDECR = 330, + PREDECR = 331, + VAR = 332, + IVAR = 333, + VARNF = 334, + CALL = 335, + NUMBER = 336, + STRING = 337, + REGEXPR = 338, + GETLINE = 339, + RETURN = 340, + SPLIT = 341, + SUBSTR = 342, + WHILE = 343, + CAT = 344, + NOT = 345, + UMINUS = 346, + UPLUS = 347, + POWER = 348, + DECR = 349, + INCR = 350, + INDIRECT = 351, + LASTTOKEN = 352 }; #endif /* Tokens. */ @@ -167,94 +169,94 @@ extern int yydebug; #define QUEST 277 #define PLUS 278 #define EMPTYRE 279 -#define AND 280 -#define BOR 281 -#define APPEND 282 -#define EQ 283 -#define GE 284 -#define GT 285 -#define LE 286 -#define LT 287 -#define NE 288 -#define IN 289 -#define ARG 290 -#define BLTIN 291 -#define BREAK 292 -#define CLOSE 293 -#define CONTINUE 294 -#define DELETE 295 -#define DO 296 -#define EXIT 297 -#define FOR 298 -#define FUNC 299 -#define SUB 300 -#define GSUB 301 -#define IF 302 -#define INDEX 303 -#define LSUBSTR 304 -#define MATCHFCN 305 -#define NEXT 306 -#define NEXTFILE 307 -#define ADD 308 -#define MINUS 309 -#define MULT 310 -#define DIVIDE 311 -#define MOD 312 -#define ASSIGN 313 -#define ASGNOP 314 -#define ADDEQ 315 -#define SUBEQ 316 -#define MULTEQ 317 -#define DIVEQ 318 -#define MODEQ 319 -#define POWEQ 320 -#define PRINT 321 -#define PRINTF 322 -#define SPRINTF 323 -#define ELSE 324 -#define INTEST 325 -#define CONDEXPR 326 -#define POSTINCR 327 -#define PREINCR 328 -#define POSTDECR 329 -#define PREDECR 330 -#define VAR 331 -#define IVAR 332 -#define VARNF 333 -#define CALL 334 -#define NUMBER 335 -#define STRING 336 -#define REGEXPR 337 -#define GETLINE 338 -#define RETURN 339 -#define SPLIT 340 -#define SUBSTR 341 -#define WHILE 342 -#define CAT 343 -#define NOT 344 -#define UMINUS 345 -#define UPLUS 346 -#define POWER 347 -#define DECR 348 -#define INCR 349 -#define INDIRECT 350 -#define LASTTOKEN 351 +#define ZERO 280 +#define AND 281 +#define BOR 282 +#define APPEND 283 +#define EQ 284 +#define GE 285 +#define GT 286 +#define LE 287 +#define LT 288 +#define NE 289 +#define IN 290 +#define ARG 291 +#define BLTIN 292 +#define BREAK 293 +#define CLOSE 294 +#define CONTINUE 295 +#define DELETE 296 +#define DO 297 +#define EXIT 298 +#define FOR 299 +#define FUNC 300 +#define SUB 301 +#define GSUB 302 +#define IF 303 +#define INDEX 304 +#define LSUBSTR 305 +#define MATCHFCN 306 +#define NEXT 307 +#define NEXTFILE 308 +#define ADD 309 +#define MINUS 310 +#define MULT 311 +#define DIVIDE 312 +#define MOD 313 +#define ASSIGN 314 +#define ASGNOP 315 +#define ADDEQ 316 +#define SUBEQ 317 +#define MULTEQ 318 +#define DIVEQ 319 +#define MODEQ 320 +#define POWEQ 321 +#define PRINT 322 +#define PRINTF 323 +#define SPRINTF 324 +#define ELSE 325 +#define INTEST 326 +#define CONDEXPR 327 +#define POSTINCR 328 +#define PREINCR 329 +#define POSTDECR 330 +#define PREDECR 331 +#define VAR 332 +#define IVAR 333 +#define VARNF 334 +#define CALL 335 +#define NUMBER 336 +#define STRING 337 +#define REGEXPR 338 +#define GETLINE 339 +#define RETURN 340 +#define SPLIT 341 +#define SUBSTR 342 +#define WHILE 343 +#define CAT 344 +#define NOT 345 +#define UMINUS 346 +#define UPLUS 347 +#define POWER 348 +#define DECR 349 +#define INCR 350 +#define INDIRECT 351 +#define LASTTOKEN 352 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - union YYSTYPE { -#line 41 "awkgram.y" /* yacc.c:1906 */ +#line 41 "awkgram.y" Node *p; Cell *cp; int i; char *s; -#line 256 "ytab.h" /* yacc.c:1906 */ -}; +#line 258 "y.tab.h" +}; typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 @@ -265,4 +267,4 @@ extern YYSTYPE yylval; int yyparse (void); -#endif /* !YY_YY_YTAB_H_INCLUDED */ +#endif /* !YY_YY_Y_TAB_H_INCLUDED */ |