aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaibo Huang <hhb@google.com>2020-02-07 20:33:46 -0800
committerElliott Hughes <enh@google.com>2020-02-10 12:16:48 -0800
commit69b38a7b2d0138fe1cd8275389148ab8da472fef (patch)
treef309d66d506395d55429260920ae60c0e6eba76a
parent2b2ca9f3fb281122e14253c2d58b88e3e3ee3335 (diff)
parente9c99065fd31253a4db4a6bce673decd143f7a3e (diff)
downloadone-true-awk-69b38a7b2d0138fe1cd8275389148ab8da472fef.tar.gz
Upgrade one-true-awk to e9c99065fd31253a4db4a6bce673decd143f7a3e
Test: None Change-Id: I1deb6d8c9e61f129ee3cfe324eea796a5dc7b0c8
-rw-r--r--ChangeLog5
-rw-r--r--FIXES30
-rw-r--r--METADATA6
-rw-r--r--README.md14
-rw-r--r--TODO19
-rw-r--r--awk.110
-rw-r--r--awk.h3
-rw-r--r--awkgram.y2
-rw-r--r--b.c16
-rw-r--r--lex.c17
-rw-r--r--lib.c29
-rw-r--r--main.c2
-rw-r--r--maketab.c8
-rw-r--r--proctab.c150
-rw-r--r--proto.h10
-rw-r--r--run.c315
-rwxr-xr-xtestdir/T.builtin8
-rwxr-xr-xtestdir/T.csconcat (renamed from testdir/T.concat)4
-rwxr-xr-xtestdir/T.int-expr42
-rwxr-xr-xtestdir/T.misc7
-rw-r--r--tran.c13
-rw-r--r--ytab.c2700
-rw-r--r--ytab.h308
23 files changed, 1979 insertions, 1739 deletions
diff --git a/ChangeLog b/ChangeLog
index 1afd9de..4e95699 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/FIXES b/FIXES
index 6889e30..598608a 100644
--- a/FIXES
+++ b/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:
diff --git a/METADATA b/METADATA
index a4d2203..7918382 100644
--- a/METADATA
+++ b/METADATA
@@ -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
}
}
diff --git a/README.md b/README.md
index 77701d7..ab6aae1 100644
--- a/README.md
+++ b/README.md
@@ -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`.
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..13f2925
--- /dev/null
+++ b/TODO
@@ -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).
diff --git a/awk.1 b/awk.1
index 5c05b01..aa66f06 100644
--- a/awk.1
+++ b/awk.1
@@ -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
diff --git a/awk.h b/awk.h
index bede1b0..6865438 100644
--- a/awk.h
+++ b/awk.h
@@ -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 */
diff --git a/awkgram.y b/awkgram.y
index 894f9b5..8fc1709 100644
--- a/awkgram.y
+++ b/awkgram.y
@@ -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
diff --git a/b.c b/b.c
index 5671796..545fb7d 100644
--- a/b.c
+++ b/b.c
@@ -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;
diff --git a/lex.c b/lex.c
index d729516..1c23212 100644
--- a/lex.c
+++ b/lex.c
@@ -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;
diff --git a/lib.c b/lib.c
index dbc09c3..0485e5a 100644
--- a/lib.c
+++ b/lib.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;
}
}
diff --git a/main.c b/main.c
index abfa312..832d971 100644
--- a/main.c
+++ b/main.c
@@ -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>
diff --git a/maketab.c b/maketab.c
index c3ce5c6..9ac833e 100644
--- a/maketab.c
+++ b/maketab.c
@@ -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 */
diff --git a/proctab.c b/proctab.c
index 5ec8c6e..5ae6786 100644
--- a/proctab.c
+++ b/proctab.c
@@ -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 */
diff --git a/proto.h b/proto.h
index 6918e1f..aac2547 100644
--- a/proto.h
+++ b/proto.h
@@ -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);
diff --git a/run.c b/run.c
index a331449..4270e54 100644
--- a/run.c
+++ b/run.c
@@ -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'
diff --git a/tran.c b/tran.c
index d659cfa..4efaa21 100644
--- a/tran.c
+++ b/tran.c
@@ -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;
diff --git a/ytab.c b/ytab.c
index b880c37..fb38155 100644
--- a/ytab.c
+++ b/ytab.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)
diff --git a/ytab.h b/ytab.h
index 1a3d5da..c6e296f 100644
--- a/ytab.h
+++ b/ytab.h
@@ -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 */