Add an Android.bp (and the missing NOTICE). am: c673df25d4 am: a4bf73261a
am: 65df88c33a

Change-Id: Ibf3f5394996c5628535a59171f237f30a2630dc5
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..aed5304
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,43 @@
+cc_defaults {
+    name: "awk-defaults",
+
+    srcs: [
+        // We remove the upstream ytab.c/ytab.h and let the build system build
+        // awkgram.y for us. Because all the source refers to ytab.h, we have a
+        // one-line ytab.h that includes the generated awkgram.h.
+        "awkgram.y",
+        "b.c",
+        "lex.c",
+        "lib.c",
+        "main.c",
+        "parse.c",
+        // We don't build or run `maketab` because it can't cope with modern
+        // yacc output which generates an enum rather than #defines. Luckily
+        // the upstream prebuilt proctab.c is good enough.
+        "proctab.c",
+        "run.c",
+        "tran.c",
+    ],
+
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wextra",
+        // Ignore a few harmless idioms widely used in this code.
+        "-Wno-missing-field-initializers",
+        "-Wno-self-assign",
+        "-Wno-unused-parameter",
+    ],
+}
+
+cc_binary {
+    name: "awk",
+    defaults: ["awk-defaults"],
+}
+
+cc_binary {
+    name: "awk_vendor",
+    defaults: ["awk-defaults"],
+    stem: "awk",
+    vendor: true,
+}
diff --git a/NOTICE b/NOTICE
new file mode 120000
index 0000000..7a694c9
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1 @@
+LICENSE
\ No newline at end of file
diff --git a/ytab.c b/ytab.c
deleted file mode 100644
index 8720de5..0000000
--- a/ytab.c
+++ /dev/null
@@ -1,1679 +0,0 @@
-
-#line	26	"/n/fs/fac/bwk/awk/awkgram.y"
-#include <stdio.h>
-#include <string.h>
-#include "awk.h"
-
-void checkdup(Node *list, Cell *item);
-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 */
-char	*curfname = 0;	/* current function name */
-Node	*arglist = 0;	/* list of args for current function */
-
-#line	41	"/n/fs/fac/bwk/awk/awkgram.y"
-typedef union  {
-	Node	*p;
-	Cell	*cp;
-	int	i;
-	char	*s;
-} YYSTYPE;
-extern	int	yyerrflag;
-#ifndef	YYMAXDEPTH
-#define	YYMAXDEPTH	150
-#endif
-YYSTYPE	yylval;
-YYSTYPE	yyval;
-#define	FIRSTTOKEN	57346
-#define	PROGRAM	57347
-#define	PASTAT	57348
-#define	PASTAT2	57349
-#define	XBEGIN	57350
-#define	XEND	57351
-#define	NL	57352
-#define	ARRAY	57353
-#define	MATCH	57354
-#define	NOTMATCH	57355
-#define	MATCHOP	57356
-#define	FINAL	57357
-#define	DOT	57358
-#define	ALL	57359
-#define	CCL	57360
-#define	NCCL	57361
-#define	CHAR	57362
-#define	OR	57363
-#define	STAR	57364
-#define	QUEST	57365
-#define	PLUS	57366
-#define	EMPTYRE	57367
-#define	AND	57368
-#define	BOR	57369
-#define	APPEND	57370
-#define	EQ	57371
-#define	GE	57372
-#define	GT	57373
-#define	LE	57374
-#define	LT	57375
-#define	NE	57376
-#define	IN	57377
-#define	ARG	57378
-#define	BLTIN	57379
-#define	BREAK	57380
-#define	CLOSE	57381
-#define	CONTINUE	57382
-#define	DELETE	57383
-#define	DO	57384
-#define	EXIT	57385
-#define	FOR	57386
-#define	FUNC	57387
-#define	SUB	57388
-#define	GSUB	57389
-#define	IF	57390
-#define	INDEX	57391
-#define	LSUBSTR	57392
-#define	MATCHFCN	57393
-#define	NEXT	57394
-#define	NEXTFILE	57395
-#define	ADD	57396
-#define	MINUS	57397
-#define	MULT	57398
-#define	DIVIDE	57399
-#define	MOD	57400
-#define	ASSIGN	57401
-#define	ASGNOP	57402
-#define	ADDEQ	57403
-#define	SUBEQ	57404
-#define	MULTEQ	57405
-#define	DIVEQ	57406
-#define	MODEQ	57407
-#define	POWEQ	57408
-#define	PRINT	57409
-#define	PRINTF	57410
-#define	SPRINTF	57411
-#define	ELSE	57412
-#define	INTEST	57413
-#define	CONDEXPR	57414
-#define	POSTINCR	57415
-#define	PREINCR	57416
-#define	POSTDECR	57417
-#define	PREDECR	57418
-#define	VAR	57419
-#define	IVAR	57420
-#define	VARNF	57421
-#define	CALL	57422
-#define	NUMBER	57423
-#define	STRING	57424
-#define	REGEXPR	57425
-#define	GETLINE	57426
-#define	RETURN	57427
-#define	SPLIT	57428
-#define	SUBSTR	57429
-#define	WHILE	57430
-#define	CAT	57431
-#define	NOT	57432
-#define	UMINUS	57433
-#define	POWER	57434
-#define	DECR	57435
-#define	INCR	57436
-#define	INDIRECT	57437
-#define	LASTTOKEN	57438
-#define YYEOFCODE 1
-#define YYERRCODE 2
-
-#line	445	"/n/fs/fac/bwk/awk/awkgram.y"
-
-
-void setfname(Cell *p)
-{
-	if (isarr(p))
-		SYNTAX("%s is an array, not a function", p->nval);
-	else if (isfcn(p))
-		SYNTAX("you can't define function %s more than once", p->nval);
-	curfname = p->nval;
-}
-
-int constnode(Node *p)
-{
-	return isvalue(p) && ((Cell *) (p->narg[0]))->csub == CCON;
-}
-
-char *strnode(Node *p)
-{
-	return ((Cell *)(p->narg[0]))->sval;
-}
-
-Node *notnull(Node *n)
-{
-	switch (n->nobj) {
-	case LE: case LT: case EQ: case NE: case GT: case GE:
-	case BOR: case AND: case NOT:
-		return n;
-	default:
-		return op2(NE, n, nullnode);
-	}
-}
-
-void checkdup(Node *vl, Cell *cp)	/* check if name already in list */
-{
-	char *s = cp->nval;
-	for ( ; vl; vl = vl->nnext) {
-		if (strcmp(s, ((Cell *)(vl->narg[0]))->nval) == 0) {
-			SYNTAX("duplicate argument %s", s);
-			break;
-		}
-	}
-}
-static	const	short	yyexca[] =
-{-1, 0,
-	1, 28,
-	8, 28,
-	9, 28,
-	12, 28,
-	13, 28,
-	16, 28,
-	46, 28,
-	47, 28,
-	49, 28,
-	55, 28,
-	56, 28,
-	57, 28,
-	59, 28,
-	61, 28,
-	79, 28,
-	87, 28,
-	88, 28,
-	89, 28,
-	90, 28,
-	91, 28,
-	92, 28,
-	96, 28,
-	98, 28,
-	99, 28,
-	102, 28,
-	103, 28,
-	106, 28,
-	109, 28,
-	110, 28,
-	111, 28,
-	-2, 0,
--1, 1,
-	1, -1,
-	-2, 0,
--1, 157,
-	15, 30,
-	-2, 0,
--1, 176,
-	14, 0,
-	24, 0,
-	39, 0,
-	40, 0,
-	41, 0,
-	42, 0,
-	43, 0,
-	44, 0,
-	45, 0,
-	-2, 63,
--1, 177,
-	14, 0,
-	24, 0,
-	39, 0,
-	40, 0,
-	41, 0,
-	42, 0,
-	43, 0,
-	44, 0,
-	45, 0,
-	-2, 64,
--1, 178,
-	14, 0,
-	24, 0,
-	39, 0,
-	40, 0,
-	41, 0,
-	42, 0,
-	43, 0,
-	44, 0,
-	45, 0,
-	-2, 65,
--1, 179,
-	14, 0,
-	24, 0,
-	39, 0,
-	40, 0,
-	41, 0,
-	42, 0,
-	43, 0,
-	44, 0,
-	45, 0,
-	-2, 66,
--1, 180,
-	14, 0,
-	24, 0,
-	39, 0,
-	40, 0,
-	41, 0,
-	42, 0,
-	43, 0,
-	44, 0,
-	45, 0,
-	-2, 67,
--1, 181,
-	14, 0,
-	24, 0,
-	39, 0,
-	40, 0,
-	41, 0,
-	42, 0,
-	43, 0,
-	44, 0,
-	45, 0,
-	-2, 68,
--1, 183,
-	14, 0,
-	24, 0,
-	39, 0,
-	40, 0,
-	41, 0,
-	42, 0,
-	43, 0,
-	44, 0,
-	45, 0,
-	-2, 70,
--1, 289,
-	24, 0,
-	45, 0,
-	-2, 53,
--1, 334,
-	17, 30,
-	-2, 0,
--1, 356,
-	17, 30,
-	-2, 0,
-};
-#define	YYNPROD	185
-#define	YYPRIVATE 57344
-#define	YYLAST	4442
-static	const	short	yyact[] =
-{
-  17, 140,  66, 228, 200, 105,  43,  62, 277,  10,
- 125,  24,  11,  43, 253, 135, 100, 112,  51, 141,
-  79,  80, 308, 243, 100, 185, 100, 100, 100, 103,
- 104, 100, 122, 123, 124, 215,  82, 249,  54,  83,
- 102, 107,  43, 107, 253, 223,   9,  42,  22,  44,
-  43, 113, 314, 252,  42,  22,  44, 206,  11, 143,
- 253, 147, 103, 104, 244, 150, 151, 153, 154, 278,
- 113,  23, 136, 163, 353, 100, 190, 276,  23, 103,
- 104, 190, 336,  42, 156,  44, 190, 324, 136, 352,
- 134,  42,  22,  44, 190, 316,  43, 133,  85, 351,
- 100, 149, 321, 258, 320, 182, 269, 100, 100, 100,
- 100, 100, 100, 100, 232,  23,  86, 190, 168, 169,
- 275, 318, 332, 278, 203, 205, 100, 108, 109, 110,
- 111, 110, 111, 112, 211, 112, 170,  42, 233,  44,
- 190, 234, 212, 190, 190, 217, 284, 100, 221, 265,
- 260, 190, 167, 100, 226, 190,   3, 259, 219, 158,
- 230, 188, 136, 100,   6, 137, 137, 236,   6,   7,
- 142, 310, 100,   7, 100, 157, 100, 100, 100, 100,
- 100, 100, 100, 131, 100,  21, 251, 100, 100, 130,
-  48, 129, 128,  16, 100,  49, 127, 126, 120, 119,
-  52,  16, 100, 190, 312, 137, 274, 100, 218, 100,
- 100, 100, 144,   4, 100, 100, 155, 271, 145, 132,
- 317, 348,  50,  55, 362, 270, 365, 162,   1,  72,
-  40, 224, 100, 100, 100, 100, 163,   5, 163, 163,
- 163, 163,  20,  58, 163,  67, 100, 222,  61, 292,
-  60,  19, 288, 248, 293, 100, 100, 294,  96, 166,
-  81, 238,   8, 159, 160,   2, 114,   0, 116, 117,
- 118,   0,   0, 121, 300, 301,   0, 115, 139, 239,
- 184,   0,   0, 100,   0, 148, 100, 100, 100, 313,
- 100, 309, 100,   0,   0, 136,   0, 100,   0, 100,
- 100,   0,   0, 100,   0, 100, 100, 100,   0, 307,
-   0,   0,   0,   0,   0, 165, 163,  96,   0,   0,
- 335,   0,   0,   0, 164, 339, 334, 342,   0, 343,
- 136,   0,   0,   0, 100, 341,   0, 230, 347, 100,
-   0, 100, 116, 229,   0, 100, 100,   0,   0,  96,
- 194, 195, 196, 197, 198, 199, 357, 360, 139, 230,
- 361,   0, 356,   0,   0,   0, 136,   0, 207, 220,
- 363,   0,   0, 139,   0,   0,   0,   0, 349, 227,
-   0, 238,   0,   0, 238, 238, 238,   0, 238,  96,
- 238,   0, 139, 139,   0,  96,   0,   0,   0, 239,
-   0, 257, 239, 239, 239, 242, 239,   0, 239,   0,
-   0,   0,   0,   0,  96,   0,  96,   0,  96,  96,
-  96,  96,  96,  96,  96,   0,  96, 290,   0,  96,
-  96,   0,   0,   0,   0,   0, 256, 238, 297,   0,
-   0,   0,   0,   0,  96,   0, 273,   0,   0, 261,
- 303,  96,  96,  96,   0, 239,  96,  96,   0,   0,
-   0,   0, 311, 282,   0, 285, 286, 287, 289,   0,
-   0, 291,   0,   0,  96, 279, 280, 281, 165,   0,
- 165, 165, 165, 165,   0,   0, 165, 164,  96, 164,
- 164, 164, 164,   0,   0, 164,   0,  96,  96,   0,
- 337,   0,   0,   0,   0,  74,   0, 189, 191,   0,
-  15,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0, 106, 242,   0,   0, 242, 242,
- 242, 139, 242,   0, 242,   0,   0,   0,   0,  96,
-   0,  96,  96, 338,   0,  96,   0,  96,  96,  96,
-   0,   0,   0,   0,   0,   0,  15,   0, 165,   0,
-   0,   0, 235,   0,   0, 146,   0, 164,   0,   0,
-   0, 152, 358, 139,   0,   0,  96,   0,   0,   0,
-   0, 242,   0,  96,   0,   0, 364,  96,  96, 366,
- 171, 173, 175, 176, 177, 178, 179, 180, 181, 183,
-   0,   0,   0,   0,   0,   0,   0, 186, 187,   0,
- 262, 263, 264,   0, 266, 267, 268,   0,   0, 201,
-   0,   0,   0,   0,   0, 201, 201,   0,   0,   0,
-   0,   0, 208, 209, 210, 201, 213, 214, 189,   0,
-   0,  15,   0,   0,   0,   0, 190,   0, 101,  95,
- 295,   0, 330,   0,   0,   0,   0,   0,   0,  93,
-   0,   0,   0,   0, 231,   0,   0, 106,   0,   0,
-   0,  98,  97, 245,  87,  88,  89,  90,  91,  92,
-  94,  43,  28,   0,  30,   0,   0,   0,   0,   0,
-   0,  46,  47,   0,  34, 254,  35, 255,   0,   0,
-   0,   0,   0,   0,   0, 323, 326, 328, 329,   0,
-   0,   0,   0,   0,  38, 189,   0,   0,   0,   0,
-   0,   0,  42,  22,  44,  29,  36,  39,   0,  84,
-   0,  33,   0,  37,  41,   0,   0,  27,  26,   0,
-   0,  99,   0,   0,  31,  32,  23,   0,   0,   0,
- 201,   0,   0,   0,   0,   0, 296,   0,   0,   0,
-   0,   0,   0, 298,   0,   0,   0,   0, 299, 302,
-   0,   0, 304, 305, 306,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0, 106,
-   0,   0,   0,   0,   0,  75,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,  16,  18,   0,  68,  45,
-   0, 359,   0,   0,   0, 333,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0, 340,
-   0,   0,   0,   0,   0, 344,   0,   0, 345,  43,
-  28,  56,  30,  57,  73,  69,  59,  70,   0,  46,
-  47,  71,  34,   0,  35,  63,  64,   0,   0,   0,
-   0,   0,   0,   0,   0,  75,   0,   0,   0,   0,
-  77,  78,  38,  53,   0,  16,  18,   0,  68,  45,
-  42,  22,  44,  29,  36,  39,   0,   0,   0,  33,
-  65,  37,  41,  76,   0,  27,  26,   0,   0,  25,
-   0,   0,  31,  32,  23,   0,   0,   0,   0,  43,
-  28,  56,  30,  57,  73,  69,  59,  70,   0,  46,
-  47,  71,  34,   0,  35,  63,  64,   0,   0,   0,
-   0,   0,   0,  75,   0,   0,   0,   0,   0,   0,
-  77,  78,  38,  16,  18,   0,  68,  45,   0, 331,
-  42,  22,  44,  29,  36,  39,   0,   0,   0,  33,
-  65,  37,  41,  76,   0,  27,  26,   0,   0,  25,
-   0,   0,  31,  32,  23,   0,   0,  43,  28,  56,
-  30,  57,  73,  69,  59,  70,   0,  46,  47,  71,
-  34,   0,  35,  63,  64,   0,   0,   0,   0,   0,
-   0,   0,   0,  75,   0,   0,   0,   0,  77,  78,
-  38, 272,   0,  16,  18,   0,  68,  45,  42,  22,
-  44,  29,  36,  39,   0,   0,   0,  33,  65,  37,
-  41,  76,   0,  27,  26,   0,   0,  25,   0,   0,
-  31,  32,  23,   0,   0,   0,   0,  43,  28,  56,
-  30,  57,  73,  69,  59,  70,   0,  46,  47,  71,
-  34,   0,  35,  63,  64,   0,   0,   0,   0,   0,
-   0,  75,   0,   0,   0,   0,   0,   0,  77,  78,
-  38,  16,  18,   0,  68,  45,   0, 247,  42,  22,
-  44,  29,  36,  39,   0,   0,   0,  33,  65,  37,
-  41,  76,   0,  27,  26,   0,   0,  25,   0,   0,
-  31,  32,  23,   0,   0,  43,  28,  56,  30,  57,
-  73,  69,  59,  70,   0,  46,  47,  71,  34,   0,
-  35,  63,  64,   0,   0,   0,   0,   0,   0,  75,
-   0,   0,   0,   0,   0,   0,  77,  78,  38,  16,
-  18,   0,  68,  45,   0, 246,  42,  22,  44,  29,
-  36,  39,   0,   0,   0,  33,  65,  37,  41,  76,
-   0,  27,  26,   0,   0,  25,   0,   0,  31,  32,
-  23,   0,   0,  43,  28,  56,  30,  57,  73,  69,
-  59,  70,   0,  46,  47,  71,  34,   0,  35,  63,
-  64,   0,   0,   0,   0,   0,   0,  75,   0,   0,
-   0,   0,   0,   0,  77,  78,  38,  16,  18,   0,
-  68,  45,   0, 225,  42,  22,  44,  29,  36,  39,
-   0,   0,   0,  33,  65,  37,  41,  76,   0,  27,
-  26,   0,   0,  25,   0,   0,  31,  32,  23,   0,
-   0,  43,  28,  56,  30,  57,  73,  69,  59,  70,
-   0,  46,  47,  71,  34,   0,  35,  63,  64,   0,
-   0,   0,   0,   0,   0,  75,   0,   0,   0,   0,
-   0,   0,  77,  78,  38,  16,  18,   0,  68,  45,
-   0, 216,  42,  22,  44,  29,  36,  39,   0,   0,
-   0,  33,  65,  37,  41,  76,   0,  27,  26,   0,
-   0,  25,   0,   0,  31,  32,  23,   0,   0,  43,
-  28,  56,  30,  57,  73,  69,  59,  70,   0,  46,
-  47,  71,  34,   0,  35,  63,  64,   0,   0,   0,
-   0,   0,   0,  75,   0,   0,   0,   0,   0,   0,
-  77,  78,  38,  16,  18,   0,  68,  45,   0, 138,
-  42,  22,  44,  29,  36,  39,   0,   0,   0,  33,
-  65,  37,  41,  76,   0,  27,  26,   0,   0,  25,
-   0,   0,  31,  32,  23,   0,   0,  43,  28,  56,
-  30,  57,  73,  69,  59,  70,   0,  46,  47,  71,
-  34,   0,  35,  63,  64,   0,   0,   0,   0,   0,
-   0,  75,   0,   0,   0,   0,   0,   0,  77,  78,
-  38,  16,  18,   0,  68,  45,   0,   0,  42,  22,
-  44,  29,  36,  39,   0,   0,   0,  33,  65,  37,
-  41,  76,   0,  27,  26,   0,   0,  25,   0,   0,
-  31,  32,  23,   0,   0,  43,  28,  56,  30,  57,
-  73,  69,  59,  70,   0,  46,  47,  71,  34,   0,
-  35,  63,  64,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,  77,  78,  38,   0,
-   0,   0,   0,   0,   0,   0,  42,  22,  44,  29,
-  36,  39,   0,   0,   0,  33,  65,  37,  41,  76,
-   0,  27,  26,   0,   0,  25,   0,   0,  31,  32,
-  23, 190,   0, 101,  95,   0,   0, 327,   0,   0,
-   0,   0,   0,   0,  93,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,  98,  97,   0,  87,
-  88,  89,  90,  91,  92,  94,  43,  28,   0,  30,
-   0,   0,   0,   0,   0,   0,  46,  47,   0,  34,
-   0,  35,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,  38,
-   0,   0,   0,   0,   0,   0,   0,  42,  22,  44,
-  29,  36,  39,   0,  84,   0,  33,   0,  37,  41,
-   0,   0,  27,  26,   0,   0,  99,   0,   0,  31,
-  32,  23, 190,   0, 101,  95,   0,   0, 325,   0,
-   0,   0,   0,   0,   0,  93,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,  98,  97,   0,
-  87,  88,  89,  90,  91,  92,  94,  43,  28,   0,
-  30,   0,   0,   0,   0,   0,   0,  46,  47,   0,
-  34,   0,  35,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-  38,   0,   0,   0,   0,   0,   0,   0,  42,  22,
-  44,  29,  36,  39,   0,  84,   0,  33,   0,  37,
-  41,   0,   0,  27,  26,   0,   0,  99,   0,   0,
-  31,  32,  23, 137,   0,   0, 101,  95, 142,   0,
-   0,   0,   0,   0,   0,   0,   0,  93,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,  98,
-  97,   0,  87,  88,  89,  90,  91,  92,  94,  43,
-  28,   0,  30,   0,   0,   0,   0,   0,   0,  46,
-  47,   0,  34,   0,  35,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,  38,   0,   0,   0,   0,   0,   0,   0,
-  42,  22,  44,  29,  36,  39,   0,  84,   0,  33,
-   0,  37,  41,   0,   0,  27,  26,   0,   0,  99,
-   0,   0,  31,  32,  23, 190,   0, 101,  95,   0,
-   0, 192,   0,   0,   0,   0,   0,   0,  93,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-  98,  97,   0,  87,  88,  89,  90,  91,  92,  94,
-  43,  28,   0,  30,   0,   0,   0,   0,   0,   0,
-  46,  47,   0,  34,   0,  35,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,  38,   0,   0,   0,   0,   0,   0,
-   0,  42,  22,  44,  29,  36,  39,   0,  84,   0,
-  33,   0,  37,  41,   0,   0,  27,  26, 101,  95,
-  99,   0, 355,  31,  32,  23,   0,   0,   0,  93,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,  98,  97,   0,  87,  88,  89,  90,  91,  92,
-  94,  43,  28,   0,  30,   0,   0,   0,   0,   0,
-   0,  46,  47,   0,  34,   0,  35,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,  38,   0,   0,   0,   0,   0,
-   0,   0,  42,  22,  44,  29,  36,  39,   0,  84,
-   0,  33,   0,  37,  41,   0,   0,  27,  26, 101,
-  95,  99,   0, 354,  31,  32,  23,   0,   0,   0,
-  93,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,  98,  97,   0,  87,  88,  89,  90,  91,
-  92,  94,  43,  28,   0,  30,   0,   0,   0,   0,
-   0,   0,  46,  47,   0,  34,   0,  35,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,  38,   0,   0,   0,   0,
-   0,   0,   0,  42,  22,  44,  29,  36,  39,   0,
-  84,   0,  33,   0,  37,  41,   0,   0,  27,  26,
- 101,  95,  99,   0, 350,  31,  32,  23,   0,   0,
-   0,  93,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,  98,  97,   0,  87,  88,  89,  90,
-  91,  92,  94,  43,  28,   0,  30,   0,   0,   0,
-   0,   0,   0,  46,  47,   0,  34,   0,  35,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,  38,   0,   0,   0,
-   0,   0,   0,   0,  42,  22,  44,  29,  36,  39,
-   0,  84,   0,  33,   0,  37,  41,   0,   0,  27,
-  26,   0,   0,  99,   0,   0,  31,  32,  23, 101,
-  95, 346,   0,   0,   0,   0,   0,   0,   0,   0,
-  93,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,  98,  97,   0,  87,  88,  89,  90,  91,
-  92,  94,  43,  28,   0,  30,   0,   0,   0,   0,
-   0,   0,  46,  47,   0,  34,   0,  35,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,  38,   0,   0,   0,   0,
-   0,   0,   0,  42,  22,  44,  29,  36,  39,   0,
-  84,   0,  33,   0,  37,  41,   0,   0,  27,  26,
- 101,  95,  99,   0, 322,  31,  32,  23,   0,   0,
-   0,  93,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,  98,  97,   0,  87,  88,  89,  90,
-  91,  92,  94,  43,  28,   0,  30,   0,   0,   0,
-   0,   0,   0,  46,  47,   0,  34,   0,  35,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,  38,   0,   0,   0,
-   0,   0,   0,   0,  42,  22,  44,  29,  36,  39,
-   0,  84,   0,  33,   0,  37,  41,   0,   0,  27,
-  26, 101,  95,  99,   0, 319,  31,  32,  23,   0,
-   0,   0,  93,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,  98,  97,   0,  87,  88,  89,
-  90,  91,  92,  94,  43,  28,   0,  30,   0,   0,
-   0,   0,   0,   0,  46,  47,   0,  34,   0,  35,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,  38,   0,   0,
-   0,   0,   0,   0,   0,  42,  22,  44,  29,  36,
-  39,   0,  84,   0,  33,   0,  37,  41,   0,   0,
-  27,  26, 101,  95,  99,   0, 278,  31,  32,  23,
-   0,   0,   0,  93,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,  98,  97,   0,  87,  88,
-  89,  90,  91,  92,  94,  43,  28,   0,  30,   0,
-   0,   0,   0,   0,   0,  46,  47,   0,  34,   0,
-  35,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,  38,   0,
-   0,   0,   0,   0,   0,   0,  42,  22,  44,  29,
-  36,  39,   0,  84,   0,  33,   0,  37,  41,   0,
-   0,  27,  26,   0, 190,  99, 101,  95,  31,  32,
-  23,   0,   0,   0,   0,   0,   0,  93,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,  98,
-  97,   0,  87,  88,  89,  90,  91,  92,  94,  43,
-  28,   0,  30,   0,   0,   0,   0,   0,   0,  46,
-  47,   0,  34,   0,  35,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,  38,   0,   0,   0,   0,   0,   0,   0,
-  42,  22,  44,  29,  36,  39,   0,  84,   0,  33,
-   0,  37,  41,   0,   0,  27,  26, 101,  95,  99,
-   0, 192,  31,  32,  23,   0,   0,   0,  93,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-  98,  97,   0,  87,  88,  89,  90,  91,  92,  94,
-  43,  28,   0,  30,   0,   0,   0,   0,   0,   0,
-  46,  47,   0,  34,   0,  35,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,  38,   0,   0,   0,   0,   0,   0,
-   0,  42,  22,  44,  29,  36,  39,   0,  84,   0,
-  33,   0,  37,  41,   0,   0,  27,  26, 101,  95,
-  99,   0,   0,  31,  32,  23,   0,   0,   0,  93,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,  98,  97,   0,  87,  88,  89,  90,  91,  92,
-  94,  43,  28,   0,  30,   0,   0,   0,   0,   0,
-   0,  46,  47,   0,  34,   0,  35,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,  38,   0,   0,   0,   0,   0,
-   0,   0,  42,  22,  44,  29,  36,  39,   0,  84,
- 250,  33,   0,  37,  41,   0,   0,  27,  26, 101,
-  95,  99,   0,   0,  31,  32,  23,   0,   0,   0,
-  93,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,  98,  97,   0,  87,  88,  89,  90,  91,
-  92,  94,  43,  28,   0,  30,   0,   0,   0,   0,
-   0,   0,  46,  47,   0,  34,   0,  35,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,  38,   0,   0,   0,   0,
-   0,   0,   0,  42,  22,  44,  29,  36,  39,   0,
-  84,   0,  33,   0,  37,  41,   0,   0,  27,  26,
- 101,  95,  99,   0,   0,  31,  32,  23,   0,   0,
-   0,  93,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,  98,   0,   0,  87,  88,  89,  90,
-  91,  92,  94,  43,  28,   0,  30,   0,   0,   0,
-   0,   0,   0,  46,  47,   0,  34,   0,  35,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,  38,   0,   0,   0,
-   0,   0,   0,   0,  42,  22,  44,  29,  36,  39,
- 101,  95,   0,  33,   0,  37,  41,   0,   0,  27,
-  26,  93,   0,  99,   0,   0,  31,  32,  23,   0,
-   0,   0,   0,   0,   0,   0,  87,  88,  89,  90,
-  91,  92,  94,  43,  28,   0,  30,   0,   0,   0,
-   0,   0,   0,  46,  47,   0,  34,   0,  35,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,  38,   0,   0,   0,
-   0, 101,   0,   0,  42,  22,  44,  29,  36,  39,
-   0,   0, 240,  33,   0,  37,  41,   0,   0,  27,
-  26,   0,   0,  99,  98,  97,  31,  32,  23,   0,
-   0,   0,   0, 241,  43,  28,   0,  30,   0,   0,
-   0,   0,   0,   0,  46,  47,   0,  34,   0,  35,
-   0,   0,   0,   0,   0,   0,   0,  75,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,  38,  18,   0,
-   0,  45,   0,   0,   0,  42,  22,  44,  29,  36,
-  39,   0, 237, 315,  33,   0,  37,  41,   0,   0,
-  27,  26,   0,   0,  99,   0,   0,  31,  32,  23,
-   0,  43,  28,   0,  30,   0,  73,   0,   0,   0,
-   0,  46,  47,   0,  34,   0,  35,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,  77,  78,  38,   0,   0,   0,   0, 101,
-   0,   0,  42,  22,  44,  29,  36,  39,   0,   0,
- 240,  33,   0,  37,  41,   0,   0,  27,  26,   0,
-   0,  25,  98,  97,  31,  32,  23,   0,   0,   0,
-   0, 241,  43,  28,   0,  30,   0,   0,   0,   0,
-   0,   0,  46,  47,   0,  34,   0,  35,   0,   0,
-   0,   0,  12,  13,   0,   0,  16,  18,   0,   0,
-  45,   0,   0,   0,   0,  38,   0,   0,   0,   0,
-   0,   0,   0,  42,  22,  44,  29,  36,  39,   0,
- 237,   0,  33,   0,  37,  41,   0,   0,  27,  26,
-  43,  28,  99,  30,   0,  31,  32,  23,   0,  14,
-  46,  47,   0,  34,   0,  35,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,  38,   0,   0, 101,   0,   0,   0,
-   0,  42,  22,  44,  29,  36,  39, 240,   0,   0,
-  33,   0,  37,  41,   0,   0,  27,  26,   0,  98,
-  25,   0,   0,  31,  32,  23,   0,   0, 241,  43,
-  28,   0,  30,   0,   0,   0,   0,   0,   0,  46,
-  47,   0,  34,   0,  35,   0,   0,   0,   0,   0,
-   0, 137,   0,   0,  18,   0, 142,  45,   0,   0,
-   0,   0,  38,   0,   0,   0,   0,   0,   0,   0,
-  42,  22,  44,  29,  36,  39,   0,   0,   0,  33,
-   0,  37,  41,   0,   0,  27,  26,  43,  28,  99,
-  30,   0,  31,  32,  23,   0,   0,  46,  47,   0,
-  34,   0,  35,   0,   0,   0,   0,   0,   0, 253,
-   0,   0,  18,   0,   0,  45,   0,   0,   0,   0,
-  38,   0,   0,   0,   0,   0,   0,   0,  42,  22,
-  44,  29,  36,  39,   0,   0,   0,  33,   0,  37,
-  41,   0,   0,  27,  26,  43,  28,  25,  30,   0,
-  31,  32,  23,   0,   0,  46,  47,   0,  34,   0,
-  35,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,  38,   0,
-   0, 101,   0,   0,   0,   0,  42,  22,  44,  29,
-  36,  39, 240,   0,   0,  33,   0,  37,  41,   0,
-   0,  27,  26,   0,   0,  25,   0,   0,  31,  32,
-  23,   0,   0, 241,  43,  28,   0,  30,   0,   0,
-   0,   0,   0,   0,  46,  47,   0,  34,   0,  35,
-   0,   0,   0,   0,   0,   0, 174,   0,   0, 283,
-   0,   0,  45,   0,   0,   0,   0,  38,   0,   0,
-   0,   0,   0,   0,   0,  42,  22,  44,  29,  36,
-  39,   0,   0,   0,  33,   0,  37,  41,   0,   0,
-  27,  26,  43,  28,  99,  30,   0,  31,  32,  23,
-   0,   0,  46,  47,   0,  34,   0,  35,   0,   0,
-   0,   0,   0,   0, 172,   0,   0, 283,   0,   0,
-  45,   0,   0,   0,   0,  38,   0,   0,   0,   0,
-   0,   0,   0,  42,  22,  44,  29,  36,  39,   0,
-   0,   0,  33,   0,  37,  41,   0,   0,  27,  26,
-  43,  28,  25,  30,   0,  31,  32,  23,   0,   0,
-  46,  47,   0,  34,   0,  35,   0,   0,   0,   0,
-   0,   0, 253,   0,   0, 283,   0,   0,  45,   0,
-   0,   0,   0,  38,   0,   0,   0,   0,   0,   0,
-   0,  42,  22,  44,  29,  36,  39,   0,   0,   0,
-  33,   0,  37,  41,   0,   0,  27,  26,  43,  28,
-  25,  30,   0,  31,  32,  23,   0,   0,  46,  47,
-   0,  34,   0,  35,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,  18,   0,   0,  45, 204,   0,   0,
-   0,  38,   0,   0,   0,   0,   0,   0,   0,  42,
-  22,  44,  29,  36,  39,   0,   0,   0,  33,   0,
-  37,  41,   0,   0,  27,  26,  43,  28,  25,  30,
-   0,  31,  32,  23,   0,   0,  46,  47,   0,  34,
-   0,  35,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,  18,   0,   0,  45, 202,   0,   0,   0,  38,
-   0,   0,   0,   0,   0,   0,   0,  42,  22,  44,
-  29,  36,  39,   0,   0,   0,  33,   0,  37,  41,
-   0,   0,  27,  26,  43,  28,  25,  30,   0,  31,
-  32,  23,   0,   0,  46,  47,   0,  34,   0,  35,
-   0,   0,   0,   0,   0,   0, 174,   0,   0,  18,
-   0,   0,  45,   0,   0,   0,   0,  38,   0,   0,
-   0,   0,   0,   0,   0,  42,  22,  44,  29,  36,
-  39,   0,   0,   0,  33,   0,  37,  41,   0,   0,
-  27,  26,  43,  28,  25,  30,   0,  31,  32,  23,
-   0,   0,  46,  47,   0,  34,   0,  35,   0,   0,
-   0,   0,   0,   0, 172,   0,   0,  18,   0,   0,
-  45,   0,   0,   0,   0,  38,   0,   0,   0,   0,
-   0,   0,   0,  42,  22,  44,  29,  36,  39,   0,
-   0,   0,  33,   0,  37,  41,   0,   0,  27,  26,
-  43,  28,  25,  30,   0,  31,  32,  23,   0,   0,
-  46,  47,   0,  34,   0,  35,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,  18,   0,   0,  45,   0,
-   0,   0,   0,  38,   0,   0,   0,   0,   0,   0,
-   0,  42,  22,  44,  29,  36,  39,   0,   0,   0,
-  33,   0,  37,  41,   0,   0,  27,  26,  43,  28,
-  25,  30,   0,  31,  32,  23,   0,   0,  46,  47,
-   0,  34,   0,  35,   0,   0,   0,   0,   0,   0,
-   0,   0,   0, 283,   0,   0,  45,   0,   0,   0,
-   0,  38,   0,   0,   0,   0,   0,   0,   0,  42,
-  22,  44,  29,  36,  39,   0,   0,   0,  33,   0,
-  37,  41,   0,   0,  27,  26,  43,  28,  25,  30,
-   0,  31,  32,  23,   0,   0,  46,  47,   0,  34,
-   0,  35,   0,   0,   0,   0,   0,   0,   0,   0,
-   0, 101,   0,   0,   0,   0,   0,   0,   0,  38,
-   0,   0,   0,   0,   0,   0,   0,  42,  22,  44,
-  29,  36,  39,   0,   0,   0,  33,   0,  37,  41,
-   0,   0,  27,  26,  43,  28,  25,  30,   0,  31,
-  32,  23,   0,   0,  46,  47,   0,  34,   0,  35,
-   0,   0,   0,   0,   0,   0,   0,   0, 193, 161,
-   0,   0,  45,   0,   0,   0,   0,  38,   0,   0,
-   0,   0,   0,   0,   0,  42,  22,  44,  29,  36,
-  39,   0,   0,   0,  33,   0,  37,  41,   0,   0,
-  27,  26,  43,  28,  99,  30,   0,  31,  32,  23,
-   0,   0,  46,  47,   0,  34,   0,  35,   0,   0,
-   0,   0,   0,   0,   0,   0,   0, 101,   0,   0,
-  45,   0,   0,   0,   0,  38,   0,   0,   0,   0,
-   0,   0,   0,  42,  22,  44,  29,  36,  39,   0,
-   0,   0,  33,   0,  37,  41,   0,   0,  27,  26,
-  43,  28,  25,  30,   0,  31,  32,  23,   0,   0,
-  46,  47,   0,  34,   0,  35,   0,   0,   0,   0,
-   0,   0,   0,   0,   0, 101,   0,   0,   0,   0,
-   0,   0,   0,  38,   0,   0,   0,   0,   0,   0,
-   0,  42,  22,  44,  29,  36,  39,   0,   0,   0,
-  33,   0,  37,  41,   0,   0,  27,  26,  43,  28,
-  25,  30,   0,  31,  32,  23,   0,   0,  46,  47,
-   0,  34,   0,  35,   0,   0,   0,   0,   0,   0,
-   0,   0,   0, 101,   0,   0,   0,   0,   0,   0,
-   0,  38,   0,   0,   0,   0,   0,   0,   0,  42,
-  22,  44,  29,  36,  39,   0,   0,   0,  33,   0,
-  37,  41,   0,   0,  27,  26,  43,  28,  99,  30,
-   0,  31,  32,  23,   0,   0,  46,  47,   0,  34,
-   0,  35,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,  38,
-   0,   0,   0,   0,   0,   0,   0,  42,  22,  44,
-  29,  36,  39,   0,   0,   0,   0,   0,  37,  41,
-   0,   0,  27,  26,   0,   0,  99,   0,   0,  31,
-  32,  23
-};
-static	const	short	yypact[] =
-{
- 154,-1000,-1000,-1000,3264, 180,-1000,-1000, 158,-1000,
- 189, 863, 181, 181, -51,2826,-1000, -30,3982,-1000,
-  25,  51,-1000,4272,-1000,4214,4272,4272, 186, 185,
-4272, -40, -40, -33, 184, 183,-1000, 179, 178,-1000,
- 176, 170,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-3264, 863, 195,-1000,1341,-1000, 155, 155, 202,3391,
--1000,1409, 863, 155, 155,3391, 155,-1000, 195,-1000,
- 162, 146,4156,  -4,2826,-1000, 139,-1000,-1000, 863,
- 863, 123,-1000,-1000,3982,3924,3866,3982,3982,3982,
-3982,3982,3982,3982,  -4, -71,  25,-1000,-1000,4272,
- -80,3982,3982,-1000,-1000, 144,1814,4098,4272,4272,
-4272,4272,4272,3982,-1000,-1000, -91, -91, -91,3808,
-3750,  25,-1000,-1000,  14,4272,3982,3982,3982,3982,
-3982,3982, -58,-1000,1273,3982, 198,-1000,-1000,-1000,
--1000, 198, 195,-1000,-1000,1409,1713,-1000, -35,1205,
--1000,-1000,1713,-1000,-1000,1409,-1000,3135,3982, 100,
- 192,3982,3206, -47,-1000,  25,  45,3982,1137,1069,
- -50,2735,-1000,2917,-1000,2997,4330,4330,4330,4330,
-4330,4330,-1000,4330,-1000, -40,2644,2826,   8,3449,
--1000,3449,-1000,4272, -91,  27,  27, -91, -91, -91,
-  83,2826,-1000, 140,-1000, 133,4272,  25,2553,2553,
-2553, 132, 192,2553,2553,  90,-1000, 181,-1000,-1000,
--1000,-1000,1001,-1000, 196,-1000,-1000,-1000, 105,  32,
--1000,2459,4272,4272,4272,3692, 129,4040,3634,3576,
-4040,  -4,  25,4040,3982,2459,-1000,-1000, 106,-1000,
-3982,-1000,  -4,-1000,2826,2826,  25,3449,-1000,-1000,
--1000,  25,3449,3449,  50,-1000,3449,3449,3449,-1000,
- 863, -78,-1000,-1000,-1000, 156,  -4, 194,-1000,  25,
-  25,  25,3206,3982,   7,3068,3333,3518,-1000,4330,
--1000,3206,  75, 194, 194,  34,2826,-1000,2826,2368,
-  87,  85,2277,  70,1611,1510, 635, 931, 109,3982,
- 195,  52,-1000,  65,  -4,4040,-1000, 181,-1000,-1000,
--1000,-1000,-1000,3449,-1000,-1000,   4,-1000,   4,3449,
--1000,-1000,3982,2186,3135, 194,   7,-1000,3206, 863,
-2087,  82,  72,  57,1996,1905, 195,  52,1409, 793,
--1000,-1000,-1000,-1000,-1000, 155,3135, 194,-1000,-1000,
--1000,  52,1409, 194,-1000,1409,-1000
-};
-static	const	short	yypgo[] =
-{
-   0, 265, 505, 227,   5, 264,   4, 263, 242, 251,
-   9,  46, 262,  11,   2,   3, 223,  38,   0, 185,
- 260, 253, 250, 248, 247, 245, 243,   1, 237, 213,
-   7, 231,   8, 401,  19,  15, 116,  98, 230, 229,
- 228, 226, 224, 221, 220, 219, 218, 217, 216
-};
-static	const	short	yyr1[] =
-{
-   0,  40,  40,  36,  36,  37,  37,  33,  33,  26,
-  26,  24,  24,  41,  22,  42,  22,  43,  22,  20,
-  20,  23,  30,  30,  34,  34,  35,  35,  29,  29,
-  15,  15,   1,   1,  10,  11,  11,  11,  11,  11,
-  11,  11,  44,  11,  12,  12,   6,   6,   3,   3,
-   3,   3,   3,   3,   3,   3,   3,   3,   3,   2,
-   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-   2,   2,   2,   2,   2,   2,   2,   2,   4,   4,
-   5,   5,   7,   7,   7,  39,  39,  28,  28,  28,
-  28,  31,  31,   9,   9,  45,  13,  32,  32,  14,
-  14,  14,  14,  14,  14,  14,  14,  27,  27,  16,
-  16,  46,  47,  16,  16,  16,  16,  16,  16,  16,
-  16,  16,  16,  16,  16,  48,  16,  16,  17,  17,
-  38,  38,   8,   8,   8,   8,   8,   8,   8,   8,
-   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,
-   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,
-   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,
-   8,   8,   8,   8,  18,  18,  18,  18,  21,  21,
-  21,  19,  19,  19,  25
-};
-static	const	short	yyr2[] =
-{
-   0,   1,   1,   1,   2,   1,   2,   1,   2,   1,
-   2,   1,   2,   0,  12,   0,  10,   0,   8,   1,
-   1,   4,   1,   2,   1,   2,   0,   1,   0,   1,
-   0,   1,   1,   3,   1,   1,   4,   4,   7,   3,
-   4,   4,   0,   9,   1,   3,   1,   3,   3,   5,
-   3,   3,   3,   3,   3,   5,   2,   1,   1,   3,
-   5,   3,   3,   3,   3,   3,   3,   3,   3,   3,
-   3,   3,   5,   4,   3,   2,   1,   1,   3,   3,
-   1,   3,   0,   1,   3,   1,   1,   1,   1,   2,
-   2,   1,   2,   1,   2,   0,   4,   1,   2,   4,
-   4,   4,   2,   5,   2,   1,   1,   1,   2,   2,
-   2,   0,   0,   9,   3,   2,   1,   4,   2,   3,
-   2,   2,   3,   2,   2,   0,   3,   2,   1,   2,
-   1,   1,   4,   3,   3,   3,   3,   3,   3,   2,
-   2,   2,   3,   4,   1,   3,   4,   2,   2,   2,
-   2,   2,   4,   3,   2,   1,   6,   6,   3,   6,
-   6,   1,   8,   8,   6,   4,   1,   6,   6,   8,
-   8,   8,   6,   1,   1,   4,   1,   2,   0,   1,
-   3,   1,   1,   1,   4
-};
-static	const	short	yychk[] =
-{
--1000, -40,  -1,   2, -29, -28,  10,  15, -12, -11,
- -10, -30,   8,   9,  55,  -2,  12, -18,  13,  -9,
-  -8, -19,  88, 111, -13, 106, 103, 102,  47,  90,
-  49, 109, 110,  96,  59,  61,  91,  98,  79,  92,
- -38,  99,  87,  46,  89,  16,  56,  57,  10,  15,
- -29, -30,  11,  10, -17, -16,  48,  50, -26,  53,
- -22, -23, -30,  62,  63,  97, -14, -25,  15,  52,
-  54,  58, -39,  51,  -2,   2, 100,  77,  78, -30,
- -30, -20,  87,  90,  94, -37, -36,  39,  40,  41,
-  42,  43,  44,  24,  45,  14,  -8,  37,  36, 106,
- -18,  13,  70, 109, 110,  -4,  -2,  16, 102, 103,
- 104, 105, 108,  19,  -8,  -9,  -8,  -8,  -8,  13,
-  13,  -8, -18, -18, -18,  43,  13,  13,  13,  13,
-  13,  13, -45, -11, -17, -35, -34,  10,  18, -16,
- -27, -34,  15, -27,  10, -46,  -2, -27, -16, -17,
- -27, -27,  -2, -27, -27, -48, -35,  13,  13,  -7,
-  -5,  13,  -3, -18,  -9,  -8, -19,  13, -17, -17,
-  13,  -2,  10,  -2,  10,  -2,  -2,  -2,  -2,  -2,
-  -2,  -2, -13,  -2, -19,  96,  -2,  -2,  17, -33,
-  11, -33,  17,  70,  -8,  -8,  -8,  -8,  -8,  -8,
-  -6,  -2,  17,  -6,  17,  -6,  43,  -8,  -2,  -2,
-  -2,  -6, -13,  -2,  -2,  93,  18, -10,  10, -35,
- -16, -27, -24,  80, -31,  18, -27, -16, -15, -19,
- -14,  -2,  14,  38,  41, -33,  -4,  94, -37, -36,
-  24,  45,  -8,  70,  19,  -2,  18,  18, -21,  87,
-  95, -18,  45,  10,  -2,  -2,  -8, -33,  20,  17,
-  17,  -8, -33, -33, -33,  17, -33, -33, -33,  16,
- -30, -47,  10, -16,  10,  15,  45, -32,  17,  -8,
-  -8,  -8,  -3,  13,  17,  -3,  -3,  -3, -13,  -3,
- -19,  -3,  -6, -32, -32, -33,  -2, -19,  -2,  -2,
- -13, -13,  -2, -19,  -2,  -2,  -2, -17, 100, -35,
-  15, -19,  10,  -4,  45,  95,  20, -44,  87,  17,
-  17,  17,  17, -33,  17,  17, -33,  17, -33, -33,
-  17,  18,  13,  -2, -35, -32,  17, -19,  -3, -30,
-  -2, -13, -18, -18,  -2,  -2,  15, -15, -43, -17,
-  17,  17,  17,  17,  17,  17, -35, -32, -16,  18,
- -27, -15, -42, -32, -16, -41, -16
-};
-static	const	short	yydef[] =
-{
-  -2,  -2,   1,   2,  32,  29,  87,  88,  28,  44,
-  35,   0,   0,   0,   0,  34,  22, 173,   0,  76,
-  77, 174, 176,   0,  93,   0,   0,   0, 144,   0,
-   0,   0,   0, 155,   0,   0, 161,   0,   0, 166,
-   0,   0, 181, 182, 183,  95, 130, 131,  89,  90,
-  33,   0,  26,  23,   0, 128,   0,   0, 111,   0,
- 116,   0,   0,   0,   0,   0,   0, 125,  26,   9,
-   0,   0,  82,   0, 105, 106,   0,  85,  86,   0,
-   0,   0,  19,  20,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,  75,   5,   3,   0,
- 173,   0,   0, 150, 151,   0,   0,   0,   0,   0,
-   0,   0,   0,   0, 177,  94, 141, 139, 140,   0,
-   0, 147, 148, 149, 154,   0,   0,   0,   0,   0,
-   0,   0,   0,  45,   0,   0,  27,  24,  39, 129,
- 109, 107,  26, 110,  10,   0,   0, 115, 118,   0,
- 120, 121,   0, 123, 124,   0, 127,  -2,   0, 102,
-  83,   0,  80, 173,  57,  58, 104,   0,   0,   0,
- 178,   0,   6,  61,   4,  62,  -2,  -2,  -2,  -2,
-  -2,  -2,  69,  -2,  71,  74,   0,  59,   0,   0,
-   7,   0, 158,   0, 136, 133, 134, 135, 137, 138,
-   0,  46, 142,   0, 145,   0,   0, 153,   0,   0,
-   0,   0,  93,   0,   0,   0,  36,  37,  25, 108,
- 112, 114,   0,  11, 119,  91, 122, 126,   0, 174,
-  31,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,  56,   0,   0,   0,  40,  41,   0, 179,
-   0,  73,   0,   8,  79,  78, 132,   0, 175, 143,
- 146, 152,   0,   0,   0, 165,   0,   0,   0,  96,
-   0,   0,  12, 117,  92,  26,   0,  21,  97,  99,
- 100, 101,  81,   0,  84,   0,  50,  51,  52,  -2,
-  54,  48,   0, 184,  42,   0,  60,  72,  47,   0,
-  93,  93,   0,   0,   0,   0,   0,   0,   0,   0,
-  26,   0,  98,   0,   0,   0, 103,   0, 180, 156,
- 157, 159, 160,   0, 164, 167,   0, 168,   0,   0,
- 172,  38,   0,   0,  -2,  17,   0,  55,  49,   0,
-   0,  93,   0,   0,   0,   0,  26,   0,   0,   0,
- 162, 163, 169, 170, 171,   0,  -2,  15,  18,  43,
- 113,   0,   0,  13,  16,   0,  14
-};
-static	const	short	yytok1[] =
-{
-   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0, 105,   0,   0,
-  13,  17, 104, 102,  11, 103,   0,  16,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,  95,  15,
-   0,   0,   0,  94,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,  19,   0,  20,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,  12,  14,  18
-};
-static	const	short	yytok2[] =
-{
-   2,   3,   4,   5,   6,   7,   8,   9,  10,  21,
-  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
-  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,
-  42,  43,  44,  45,  46,  47,  48,  49,  50,  51,
-  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,
-  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,
-  72,  73,  74,  75,  76,  77,  78,  79,  80,  81,
-  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,
-  92,  93,  96,  97,  98,  99, 100, 101, 106, 107,
- 108, 109, 110, 111, 112
-};
-static	const	long	yytok3[] =
-{
-   0
-};
-#define YYFLAG 		-1000
-#define YYERROR		goto yyerrlab
-#define YYACCEPT	return(0)
-#define YYABORT		return(1)
-#define	yyclearin	yychar = -1
-#define	yyerrok		yyerrflag = 0
-
-#ifdef	yydebug
-#include	"y.debug"
-#else
-#define	yydebug		0
-static	const	char*	yytoknames[1];		/* for debugging */
-static	const	char*	yystates[1];		/* for debugging */
-#endif
-
-/*	parser for yacc output	*/
-#ifdef YYARG
-#define	yynerrs		yyarg->yynerrs
-#define	yyerrflag	yyarg->yyerrflag
-#define yyval		yyarg->yyval
-#define yylval		yyarg->yylval
-#else
-int	yynerrs = 0;		/* number of errors */
-int	yyerrflag = 0;		/* error recovery flag */
-#endif
-
-static const char*
-yytokname(int yyc)
-{
-	static char x[10];
-
-	if(yyc > 0 && yyc <= sizeof(yytoknames)/sizeof(yytoknames[0]))
-	if(yytoknames[yyc-1])
-		return yytoknames[yyc-1];
-	sprintf(x, "<%d>", yyc);
-	return x;
-}
-
-static const char*
-yystatname(int yys)
-{
-	static char x[10];
-
-	if(yys >= 0 && yys < sizeof(yystates)/sizeof(yystates[0]))
-	if(yystates[yys])
-		return yystates[yys];
-	sprintf(x, "<%d>\n", yys);
-	return x;
-}
-
-static long
-#ifdef YYARG
-yylex1(struct Yyarg *yyarg)
-#else
-yylex1(void)
-#endif
-{
-	long yychar;
-	const long *t3p;
-	int c;
-
-#ifdef YYARG	
-	yychar = yylex(yyarg);
-#else
-	yychar = yylex();
-#endif
-	if(yychar <= 0) {
-		c = yytok1[0];
-		goto out;
-	}
-	if(yychar < sizeof(yytok1)/sizeof(yytok1[0])) {
-		c = yytok1[yychar];
-		goto out;
-	}
-	if(yychar >= YYPRIVATE)
-		if(yychar < YYPRIVATE+sizeof(yytok2)/sizeof(yytok2[0])) {
-			c = yytok2[yychar-YYPRIVATE];
-			goto out;
-		}
-	for(t3p=yytok3;; t3p+=2) {
-		c = t3p[0];
-		if(c == yychar) {
-			c = t3p[1];
-			goto out;
-		}
-		if(c == 0)
-			break;
-	}
-	c = 0;
-
-out:
-	if(c == 0)
-		c = yytok2[1];	/* unknown char */
-	if(yydebug >= 3)
-		printf("lex %.4lX %s\n", yychar, yytokname(c));
-	return c;
-}
-
-int
-#ifdef YYARG
-yyparse(struct Yyarg *yyarg)
-#else
-yyparse(void)
-#endif
-{
-	struct
-	{
-		YYSTYPE	yyv;
-		int	yys;
-	} yys[YYMAXDEPTH], *yyp, *yypt;
-	const short *yyxi;
-	int yyj, yym, yystate, yyn, yyg;
-	long yychar;
-#ifndef YYARG
-	YYSTYPE save1, save2;
-	int save3, save4;
-
-	save1 = yylval;
-	save2 = yyval;
-	save3 = yynerrs;
-	save4 = yyerrflag;
-#endif
-
-	yystate = 0;
-	yychar = -1;
-	yynerrs = 0;
-	yyerrflag = 0;
-	yyp = &yys[-1];
-	goto yystack;
-
-ret0:
-	yyn = 0;
-	goto ret;
-
-ret1:
-	yyn = 1;
-	goto ret;
-
-ret:
-#ifndef YYARG
-	yylval = save1;
-	yyval = save2;
-	yynerrs = save3;
-	yyerrflag = save4;
-#endif
-	return yyn;
-
-yystack:
-	/* put a state and value onto the stack */
-	if(yydebug >= 4)
-		printf("char %s in %s", yytokname(yychar), yystatname(yystate));
-
-	yyp++;
-	if(yyp >= &yys[YYMAXDEPTH]) {
-		yyerror("yacc stack overflow");
-		goto ret1;
-	}
-	yyp->yys = yystate;
-	yyp->yyv = yyval;
-
-yynewstate:
-	yyn = yypact[yystate];
-	if(yyn <= YYFLAG)
-		goto yydefault; /* simple state */
-	if(yychar < 0)
-#ifdef YYARG
-		yychar = yylex1(yyarg);
-#else
-		yychar = yylex1();
-#endif
-	yyn += yychar;
-	if(yyn < 0 || yyn >= YYLAST)
-		goto yydefault;
-	yyn = yyact[yyn];
-	if(yychk[yyn] == yychar) { /* valid shift */
-		yychar = -1;
-		yyval = yylval;
-		yystate = yyn;
-		if(yyerrflag > 0)
-			yyerrflag--;
-		goto yystack;
-	}
-
-yydefault:
-	/* default state action */
-	yyn = yydef[yystate];
-	if(yyn == -2) {
-		if(yychar < 0)
-#ifdef YYARG
-		yychar = yylex1(yyarg);
-#else
-		yychar = yylex1();
-#endif
-
-		/* look through exception table */
-		for(yyxi=yyexca;; yyxi+=2)
-			if(yyxi[0] == -1 && yyxi[1] == yystate)
-				break;
-		for(yyxi += 2;; yyxi += 2) {
-			yyn = yyxi[0];
-			if(yyn < 0 || yyn == yychar)
-				break;
-		}
-		yyn = yyxi[1];
-		if(yyn < 0)
-			goto ret0;
-	}
-	if(yyn == 0) {
-		/* error ... attempt to resume parsing */
-		switch(yyerrflag) {
-		case 0:   /* brand new error */
-			yyerror("syntax error");
-			if(yydebug >= 1) {
-				printf("%s", yystatname(yystate));
-				printf("saw %s\n", yytokname(yychar));
-			}
-			goto yyerrlab;
-		yyerrlab:
-			yynerrs++;
-
-		case 1:
-		case 2: /* incompletely recovered error ... try again */
-			yyerrflag = 3;
-
-			/* find a state where "error" is a legal shift action */
-			while(yyp >= yys) {
-				yyn = yypact[yyp->yys] + YYERRCODE;
-				if(yyn >= 0 && yyn < YYLAST) {
-					yystate = yyact[yyn];  /* simulate a shift of "error" */
-					if(yychk[yystate] == YYERRCODE)
-						goto yystack;
-				}
-
-				/* the current yyp has no shift onn "error", pop stack */
-				if(yydebug >= 2)
-					printf("error recovery pops state %d, uncovers %d\n",
-						yyp->yys, (yyp-1)->yys );
-				yyp--;
-			}
-			/* there is no state on the stack with an error shift ... abort */
-			goto ret1;
-
-		case 3:  /* no shift yet; clobber input char */
-			if(yydebug >= YYEOFCODE)
-				printf("error recovery discards %s\n", yytokname(yychar));
-			if(yychar == YYEOFCODE)
-				goto ret1;
-			yychar = -1;
-			goto yynewstate;   /* try again in the same state */
-		}
-	}
-
-	/* reduction by production yyn */
-	if(yydebug >= 2)
-		printf("reduce %d in:\n\t%s", yyn, yystatname(yystate));
-
-	yypt = yyp;
-	yyp -= yyr2[yyn];
-	yyval = (yyp+1)->yyv;
-	yym = yyn;
-
-	/* consult goto table to find next state */
-	yyn = yyr1[yyn];
-	yyg = yypgo[yyn];
-	yyj = yyg + yyp->yys + 1;
-
-	if(yyj >= YYLAST || yychk[yystate=yyact[yyj]] != -yyn)
-		yystate = yyact[yyg];
-	switch(yym) {
-		
-case 1:
-#line	98	"/n/fs/fac/bwk/awk/awkgram.y"
-{ if (errorflag==0)
-			winner = (Node *)stat3(PROGRAM, beginloc, yypt[-0].yyv.p, endloc); } break;
-case 2:
-#line	100	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyclearin; bracecheck(); SYNTAX("bailing out"); } break;
-case 13:
-#line	124	"/n/fs/fac/bwk/awk/awkgram.y"
-{inloop++;} break;
-case 14:
-#line	125	"/n/fs/fac/bwk/awk/awkgram.y"
-{ --inloop; yyval.p = stat4(FOR, yypt[-9].yyv.p, notnull(yypt[-6].yyv.p), yypt[-3].yyv.p, yypt[-0].yyv.p); } break;
-case 15:
-#line	126	"/n/fs/fac/bwk/awk/awkgram.y"
-{inloop++;} break;
-case 16:
-#line	127	"/n/fs/fac/bwk/awk/awkgram.y"
-{ --inloop; yyval.p = stat4(FOR, yypt[-7].yyv.p, NIL, yypt[-3].yyv.p, yypt[-0].yyv.p); } break;
-case 17:
-#line	128	"/n/fs/fac/bwk/awk/awkgram.y"
-{inloop++;} break;
-case 18:
-#line	129	"/n/fs/fac/bwk/awk/awkgram.y"
-{ --inloop; yyval.p = stat3(IN, yypt[-5].yyv.p, makearr(yypt[-3].yyv.p), yypt[-0].yyv.p); } break;
-case 19:
-#line	133	"/n/fs/fac/bwk/awk/awkgram.y"
-{ setfname(yypt[-0].yyv.cp); } break;
-case 20:
-#line	134	"/n/fs/fac/bwk/awk/awkgram.y"
-{ setfname(yypt[-0].yyv.cp); } break;
-case 21:
-#line	138	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = notnull(yypt[-1].yyv.p); } break;
-case 26:
-#line	150	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.i = 0; } break;
-case 28:
-#line	155	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.i = 0; } break;
-case 30:
-#line	161	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = 0; } break;
-case 32:
-#line	166	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = 0; } break;
-case 33:
-#line	167	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = yypt[-1].yyv.p; } break;
-case 34:
-#line	171	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = notnull(yypt[-0].yyv.p); } break;
-case 35:
-#line	175	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat2(PASTAT, yypt[-0].yyv.p, stat2(PRINT, rectonode(), NIL)); } break;
-case 36:
-#line	176	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat2(PASTAT, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
-case 37:
-#line	177	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = pa2stat(yypt[-3].yyv.p, yypt[-0].yyv.p, stat2(PRINT, rectonode(), NIL)); } break;
-case 38:
-#line	178	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = pa2stat(yypt[-6].yyv.p, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
-case 39:
-#line	179	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat2(PASTAT, NIL, yypt[-1].yyv.p); } break;
-case 40:
-#line	181	"/n/fs/fac/bwk/awk/awkgram.y"
-{ beginloc = linkum(beginloc, yypt[-1].yyv.p); yyval.p = 0; } break;
-case 41:
-#line	183	"/n/fs/fac/bwk/awk/awkgram.y"
-{ endloc = linkum(endloc, yypt[-1].yyv.p); yyval.p = 0; } break;
-case 42:
-#line	184	"/n/fs/fac/bwk/awk/awkgram.y"
-{infunc++;} break;
-case 43:
-#line	185	"/n/fs/fac/bwk/awk/awkgram.y"
-{ infunc--; curfname=0; defn((Cell *)yypt[-7].yyv.p, yypt[-5].yyv.p, yypt[-1].yyv.p); yyval.p = 0; } break;
-case 45:
-#line	190	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 47:
-#line	195	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 48:
-#line	199	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 49:
-#line	201	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op3(CONDEXPR, notnull(yypt[-4].yyv.p), yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 50:
-#line	203	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(BOR, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break;
-case 51:
-#line	205	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(AND, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break;
-case 52:
-#line	206	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op3(yypt[-1].yyv.i, NIL, yypt[-2].yyv.p, (Node*)makedfa(yypt[-0].yyv.s, 0)); } break;
-case 53:
-#line	208	"/n/fs/fac/bwk/awk/awkgram.y"
-{ if (constnode(yypt[-0].yyv.p))
-			yyval.p = op3(yypt[-1].yyv.i, NIL, yypt[-2].yyv.p, (Node*)makedfa(strnode(yypt[-0].yyv.p), 0));
-		  else
-			yyval.p = op3(yypt[-1].yyv.i, (Node *)1, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 54:
-#line	212	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(INTEST, yypt[-2].yyv.p, makearr(yypt[-0].yyv.p)); } break;
-case 55:
-#line	213	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(INTEST, yypt[-3].yyv.p, makearr(yypt[-0].yyv.p)); } break;
-case 56:
-#line	214	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(CAT, yypt[-1].yyv.p, yypt[-0].yyv.p); } break;
-case 59:
-#line	220	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 60:
-#line	222	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op3(CONDEXPR, notnull(yypt[-4].yyv.p), yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 61:
-#line	224	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(BOR, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break;
-case 62:
-#line	226	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(AND, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break;
-case 63:
-#line	227	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 64:
-#line	228	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 65:
-#line	229	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 66:
-#line	230	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 67:
-#line	231	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 68:
-#line	232	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 69:
-#line	233	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op3(yypt[-1].yyv.i, NIL, yypt[-2].yyv.p, (Node*)makedfa(yypt[-0].yyv.s, 0)); } break;
-case 70:
-#line	235	"/n/fs/fac/bwk/awk/awkgram.y"
-{ if (constnode(yypt[-0].yyv.p))
-			yyval.p = op3(yypt[-1].yyv.i, NIL, yypt[-2].yyv.p, (Node*)makedfa(strnode(yypt[-0].yyv.p), 0));
-		  else
-			yyval.p = op3(yypt[-1].yyv.i, (Node *)1, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 71:
-#line	239	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(INTEST, yypt[-2].yyv.p, makearr(yypt[-0].yyv.p)); } break;
-case 72:
-#line	240	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(INTEST, yypt[-3].yyv.p, makearr(yypt[-0].yyv.p)); } break;
-case 73:
-#line	241	"/n/fs/fac/bwk/awk/awkgram.y"
-{ 
-			if (safe) SYNTAX("cmd | getline is unsafe");
-			else yyval.p = op3(GETLINE, yypt[-0].yyv.p, itonp(yypt[-2].yyv.i), yypt[-3].yyv.p); } break;
-case 74:
-#line	244	"/n/fs/fac/bwk/awk/awkgram.y"
-{ 
-			if (safe) SYNTAX("cmd | getline is unsafe");
-			else yyval.p = op3(GETLINE, (Node*)0, itonp(yypt[-1].yyv.i), yypt[-2].yyv.p); } break;
-case 75:
-#line	247	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(CAT, yypt[-1].yyv.p, yypt[-0].yyv.p); } break;
-case 78:
-#line	253	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 79:
-#line	254	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 81:
-#line	259	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 82:
-#line	263	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = rectonode(); } break;
-case 84:
-#line	265	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = yypt[-1].yyv.p; } break;
-case 93:
-#line	282	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op3(MATCH, NIL, rectonode(), (Node*)makedfa(yypt[-0].yyv.s, 0)); } break;
-case 94:
-#line	283	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(NOT, notnull(yypt[-0].yyv.p)); } break;
-case 95:
-#line	287	"/n/fs/fac/bwk/awk/awkgram.y"
-{startreg();} break;
-case 96:
-#line	287	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.s = yypt[-1].yyv.s; } break;
-case 99:
-#line	295	"/n/fs/fac/bwk/awk/awkgram.y"
-{ 
-			if (safe) SYNTAX("print | is unsafe");
-			else yyval.p = stat3(yypt[-3].yyv.i, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
-case 100:
-#line	298	"/n/fs/fac/bwk/awk/awkgram.y"
-{
-			if (safe) SYNTAX("print >> is unsafe");
-			else yyval.p = stat3(yypt[-3].yyv.i, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
-case 101:
-#line	301	"/n/fs/fac/bwk/awk/awkgram.y"
-{
-			if (safe) SYNTAX("print > is unsafe");
-			else yyval.p = stat3(yypt[-3].yyv.i, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
-case 102:
-#line	304	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat3(yypt[-1].yyv.i, yypt[-0].yyv.p, NIL, NIL); } break;
-case 103:
-#line	305	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat2(DELETE, makearr(yypt[-3].yyv.p), yypt[-1].yyv.p); } break;
-case 104:
-#line	306	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat2(DELETE, makearr(yypt[-0].yyv.p), 0); } break;
-case 105:
-#line	307	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = exptostat(yypt[-0].yyv.p); } break;
-case 106:
-#line	308	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyclearin; SYNTAX("illegal statement"); } break;
-case 109:
-#line	317	"/n/fs/fac/bwk/awk/awkgram.y"
-{ if (!inloop) SYNTAX("break illegal outside of loops");
-				  yyval.p = stat1(BREAK, NIL); } break;
-case 110:
-#line	319	"/n/fs/fac/bwk/awk/awkgram.y"
-{  if (!inloop) SYNTAX("continue illegal outside of loops");
-				  yyval.p = stat1(CONTINUE, NIL); } break;
-case 111:
-#line	321	"/n/fs/fac/bwk/awk/awkgram.y"
-{inloop++;} break;
-case 112:
-#line	321	"/n/fs/fac/bwk/awk/awkgram.y"
-{--inloop;} break;
-case 113:
-#line	322	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat2(DO, yypt[-6].yyv.p, notnull(yypt[-2].yyv.p)); } break;
-case 114:
-#line	323	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat1(EXIT, yypt[-1].yyv.p); } break;
-case 115:
-#line	324	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat1(EXIT, NIL); } break;
-case 117:
-#line	326	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat3(IF, yypt[-3].yyv.p, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 118:
-#line	327	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat3(IF, yypt[-1].yyv.p, yypt[-0].yyv.p, NIL); } break;
-case 119:
-#line	328	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = yypt[-1].yyv.p; } break;
-case 120:
-#line	329	"/n/fs/fac/bwk/awk/awkgram.y"
-{ if (infunc)
-				SYNTAX("next is illegal inside a function");
-			  yyval.p = stat1(NEXT, NIL); } break;
-case 121:
-#line	332	"/n/fs/fac/bwk/awk/awkgram.y"
-{ if (infunc)
-				SYNTAX("nextfile is illegal inside a function");
-			  yyval.p = stat1(NEXTFILE, NIL); } break;
-case 122:
-#line	335	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat1(RETURN, yypt[-1].yyv.p); } break;
-case 123:
-#line	336	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat1(RETURN, NIL); } break;
-case 125:
-#line	338	"/n/fs/fac/bwk/awk/awkgram.y"
-{inloop++;} break;
-case 126:
-#line	338	"/n/fs/fac/bwk/awk/awkgram.y"
-{ --inloop; yyval.p = stat2(WHILE, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 127:
-#line	339	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = 0; } break;
-case 129:
-#line	344	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = linkum(yypt[-1].yyv.p, yypt[-0].yyv.p); } break;
-case 132:
-#line	352	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(DIVEQ, yypt[-3].yyv.p, yypt[-0].yyv.p); } break;
-case 133:
-#line	353	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(ADD, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 134:
-#line	354	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(MINUS, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 135:
-#line	355	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(MULT, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 136:
-#line	356	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(DIVIDE, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 137:
-#line	357	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(MOD, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 138:
-#line	358	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(POWER, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 139:
-#line	359	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(UMINUS, yypt[-0].yyv.p); } break;
-case 140:
-#line	360	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = yypt[-0].yyv.p; } break;
-case 141:
-#line	361	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(NOT, notnull(yypt[-0].yyv.p)); } break;
-case 142:
-#line	362	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(BLTIN, itonp(yypt[-2].yyv.i), rectonode()); } break;
-case 143:
-#line	363	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(BLTIN, itonp(yypt[-3].yyv.i), yypt[-1].yyv.p); } break;
-case 144:
-#line	364	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(BLTIN, itonp(yypt[-0].yyv.i), rectonode()); } break;
-case 145:
-#line	365	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(CALL, celltonode(yypt[-2].yyv.cp,CVAR), NIL); } break;
-case 146:
-#line	366	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(CALL, celltonode(yypt[-3].yyv.cp,CVAR), yypt[-1].yyv.p); } break;
-case 147:
-#line	367	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(CLOSE, yypt[-0].yyv.p); } break;
-case 148:
-#line	368	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(PREDECR, yypt[-0].yyv.p); } break;
-case 149:
-#line	369	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(PREINCR, yypt[-0].yyv.p); } break;
-case 150:
-#line	370	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(POSTDECR, yypt[-1].yyv.p); } break;
-case 151:
-#line	371	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(POSTINCR, yypt[-1].yyv.p); } break;
-case 152:
-#line	372	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op3(GETLINE, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
-case 153:
-#line	373	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op3(GETLINE, NIL, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
-case 154:
-#line	374	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op3(GETLINE, yypt[-0].yyv.p, NIL, NIL); } break;
-case 155:
-#line	375	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op3(GETLINE, NIL, NIL, NIL); } break;
-case 156:
-#line	377	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(INDEX, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
-case 157:
-#line	379	"/n/fs/fac/bwk/awk/awkgram.y"
-{ SYNTAX("index() doesn't permit regular expressions");
-		  yyval.p = op2(INDEX, yypt[-3].yyv.p, (Node*)yypt[-1].yyv.s); } break;
-case 158:
-#line	381	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = yypt[-1].yyv.p; } break;
-case 159:
-#line	383	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op3(MATCHFCN, NIL, yypt[-3].yyv.p, (Node*)makedfa(yypt[-1].yyv.s, 1)); } break;
-case 160:
-#line	385	"/n/fs/fac/bwk/awk/awkgram.y"
-{ if (constnode(yypt[-1].yyv.p))
-			yyval.p = op3(MATCHFCN, NIL, yypt[-3].yyv.p, (Node*)makedfa(strnode(yypt[-1].yyv.p), 1));
-		  else
-			yyval.p = op3(MATCHFCN, (Node *)1, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
-case 161:
-#line	389	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = celltonode(yypt[-0].yyv.cp, CCON); } break;
-case 162:
-#line	391	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op4(SPLIT, yypt[-5].yyv.p, makearr(yypt[-3].yyv.p), yypt[-1].yyv.p, (Node*)STRING); } break;
-case 163:
-#line	393	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op4(SPLIT, yypt[-5].yyv.p, makearr(yypt[-3].yyv.p), (Node*)makedfa(yypt[-1].yyv.s, 1), (Node *)REGEXPR); } break;
-case 164:
-#line	395	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op4(SPLIT, yypt[-3].yyv.p, makearr(yypt[-1].yyv.p), NIL, (Node*)STRING); } break;
-case 165:
-#line	396	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(yypt[-3].yyv.i, yypt[-1].yyv.p); } break;
-case 166:
-#line	397	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = celltonode(yypt[-0].yyv.cp, CCON); } break;
-case 167:
-#line	399	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op4(yypt[-5].yyv.i, NIL, (Node*)makedfa(yypt[-3].yyv.s, 1), yypt[-1].yyv.p, rectonode()); } break;
-case 168:
-#line	401	"/n/fs/fac/bwk/awk/awkgram.y"
-{ if (constnode(yypt[-3].yyv.p))
-			yyval.p = op4(yypt[-5].yyv.i, NIL, (Node*)makedfa(strnode(yypt[-3].yyv.p), 1), yypt[-1].yyv.p, rectonode());
-		  else
-			yyval.p = op4(yypt[-5].yyv.i, (Node *)1, yypt[-3].yyv.p, yypt[-1].yyv.p, rectonode()); } break;
-case 169:
-#line	406	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op4(yypt[-7].yyv.i, NIL, (Node*)makedfa(yypt[-5].yyv.s, 1), yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
-case 170:
-#line	408	"/n/fs/fac/bwk/awk/awkgram.y"
-{ if (constnode(yypt[-5].yyv.p))
-			yyval.p = op4(yypt[-7].yyv.i, NIL, (Node*)makedfa(strnode(yypt[-5].yyv.p), 1), yypt[-3].yyv.p, yypt[-1].yyv.p);
-		  else
-			yyval.p = op4(yypt[-7].yyv.i, (Node *)1, yypt[-5].yyv.p, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
-case 171:
-#line	413	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op3(SUBSTR, yypt[-5].yyv.p, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
-case 172:
-#line	415	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op3(SUBSTR, yypt[-3].yyv.p, yypt[-1].yyv.p, NIL); } break;
-case 175:
-#line	421	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(ARRAY, makearr(yypt[-3].yyv.p), yypt[-1].yyv.p); } break;
-case 176:
-#line	422	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(INDIRECT, celltonode(yypt[-0].yyv.cp, CVAR)); } break;
-case 177:
-#line	423	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(INDIRECT, yypt[-0].yyv.p); } break;
-case 178:
-#line	427	"/n/fs/fac/bwk/awk/awkgram.y"
-{ arglist = yyval.p = 0; } break;
-case 179:
-#line	428	"/n/fs/fac/bwk/awk/awkgram.y"
-{ arglist = yyval.p = celltonode(yypt[-0].yyv.cp,CVAR); } break;
-case 180:
-#line	429	"/n/fs/fac/bwk/awk/awkgram.y"
-{
-			checkdup(yypt[-2].yyv.p, yypt[-0].yyv.cp);
-			arglist = yyval.p = linkum(yypt[-2].yyv.p,celltonode(yypt[-0].yyv.cp,CVAR)); } break;
-case 181:
-#line	435	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = celltonode(yypt[-0].yyv.cp, CVAR); } break;
-case 182:
-#line	436	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(ARG, itonp(yypt[-0].yyv.i)); } break;
-case 183:
-#line	437	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(VARNF, (Node *) yypt[-0].yyv.cp); } break;
-case 184:
-#line	442	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = notnull(yypt[-1].yyv.p); } break;
-	}
-	goto yystack;  /* stack new state and value */
-}
diff --git a/ytab.h b/ytab.h
index 8a366ba..8f41e59 100644
--- a/ytab.h
+++ b/ytab.h
@@ -1,101 +1 @@
-
-typedef union  {
-	Node	*p;
-	Cell	*cp;
-	int	i;
-	char	*s;
-}	YYSTYPE;
-extern	YYSTYPE	yylval;
-#define	FIRSTTOKEN	57346
-#define	PROGRAM	57347
-#define	PASTAT	57348
-#define	PASTAT2	57349
-#define	XBEGIN	57350
-#define	XEND	57351
-#define	NL	57352
-#define	ARRAY	57353
-#define	MATCH	57354
-#define	NOTMATCH	57355
-#define	MATCHOP	57356
-#define	FINAL	57357
-#define	DOT	57358
-#define	ALL	57359
-#define	CCL	57360
-#define	NCCL	57361
-#define	CHAR	57362
-#define	OR	57363
-#define	STAR	57364
-#define	QUEST	57365
-#define	PLUS	57366
-#define	EMPTYRE	57367
-#define	AND	57368
-#define	BOR	57369
-#define	APPEND	57370
-#define	EQ	57371
-#define	GE	57372
-#define	GT	57373
-#define	LE	57374
-#define	LT	57375
-#define	NE	57376
-#define	IN	57377
-#define	ARG	57378
-#define	BLTIN	57379
-#define	BREAK	57380
-#define	CLOSE	57381
-#define	CONTINUE	57382
-#define	DELETE	57383
-#define	DO	57384
-#define	EXIT	57385
-#define	FOR	57386
-#define	FUNC	57387
-#define	SUB	57388
-#define	GSUB	57389
-#define	IF	57390
-#define	INDEX	57391
-#define	LSUBSTR	57392
-#define	MATCHFCN	57393
-#define	NEXT	57394
-#define	NEXTFILE	57395
-#define	ADD	57396
-#define	MINUS	57397
-#define	MULT	57398
-#define	DIVIDE	57399
-#define	MOD	57400
-#define	ASSIGN	57401
-#define	ASGNOP	57402
-#define	ADDEQ	57403
-#define	SUBEQ	57404
-#define	MULTEQ	57405
-#define	DIVEQ	57406
-#define	MODEQ	57407
-#define	POWEQ	57408
-#define	PRINT	57409
-#define	PRINTF	57410
-#define	SPRINTF	57411
-#define	ELSE	57412
-#define	INTEST	57413
-#define	CONDEXPR	57414
-#define	POSTINCR	57415
-#define	PREINCR	57416
-#define	POSTDECR	57417
-#define	PREDECR	57418
-#define	VAR	57419
-#define	IVAR	57420
-#define	VARNF	57421
-#define	CALL	57422
-#define	NUMBER	57423
-#define	STRING	57424
-#define	REGEXPR	57425
-#define	GETLINE	57426
-#define	RETURN	57427
-#define	SPLIT	57428
-#define	SUBSTR	57429
-#define	WHILE	57430
-#define	CAT	57431
-#define	NOT	57432
-#define	UMINUS	57433
-#define	POWER	57434
-#define	DECR	57435
-#define	INCR	57436
-#define	INDIRECT	57437
-#define	LASTTOKEN	57438
+#include "awkgram.h"
diff --git a/ytabc.bak b/ytabc.bak
deleted file mode 100644
index 8720de5..0000000
--- a/ytabc.bak
+++ /dev/null
@@ -1,1679 +0,0 @@
-
-#line	26	"/n/fs/fac/bwk/awk/awkgram.y"
-#include <stdio.h>
-#include <string.h>
-#include "awk.h"
-
-void checkdup(Node *list, Cell *item);
-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 */
-char	*curfname = 0;	/* current function name */
-Node	*arglist = 0;	/* list of args for current function */
-
-#line	41	"/n/fs/fac/bwk/awk/awkgram.y"
-typedef union  {
-	Node	*p;
-	Cell	*cp;
-	int	i;
-	char	*s;
-} YYSTYPE;
-extern	int	yyerrflag;
-#ifndef	YYMAXDEPTH
-#define	YYMAXDEPTH	150
-#endif
-YYSTYPE	yylval;
-YYSTYPE	yyval;
-#define	FIRSTTOKEN	57346
-#define	PROGRAM	57347
-#define	PASTAT	57348
-#define	PASTAT2	57349
-#define	XBEGIN	57350
-#define	XEND	57351
-#define	NL	57352
-#define	ARRAY	57353
-#define	MATCH	57354
-#define	NOTMATCH	57355
-#define	MATCHOP	57356
-#define	FINAL	57357
-#define	DOT	57358
-#define	ALL	57359
-#define	CCL	57360
-#define	NCCL	57361
-#define	CHAR	57362
-#define	OR	57363
-#define	STAR	57364
-#define	QUEST	57365
-#define	PLUS	57366
-#define	EMPTYRE	57367
-#define	AND	57368
-#define	BOR	57369
-#define	APPEND	57370
-#define	EQ	57371
-#define	GE	57372
-#define	GT	57373
-#define	LE	57374
-#define	LT	57375
-#define	NE	57376
-#define	IN	57377
-#define	ARG	57378
-#define	BLTIN	57379
-#define	BREAK	57380
-#define	CLOSE	57381
-#define	CONTINUE	57382
-#define	DELETE	57383
-#define	DO	57384
-#define	EXIT	57385
-#define	FOR	57386
-#define	FUNC	57387
-#define	SUB	57388
-#define	GSUB	57389
-#define	IF	57390
-#define	INDEX	57391
-#define	LSUBSTR	57392
-#define	MATCHFCN	57393
-#define	NEXT	57394
-#define	NEXTFILE	57395
-#define	ADD	57396
-#define	MINUS	57397
-#define	MULT	57398
-#define	DIVIDE	57399
-#define	MOD	57400
-#define	ASSIGN	57401
-#define	ASGNOP	57402
-#define	ADDEQ	57403
-#define	SUBEQ	57404
-#define	MULTEQ	57405
-#define	DIVEQ	57406
-#define	MODEQ	57407
-#define	POWEQ	57408
-#define	PRINT	57409
-#define	PRINTF	57410
-#define	SPRINTF	57411
-#define	ELSE	57412
-#define	INTEST	57413
-#define	CONDEXPR	57414
-#define	POSTINCR	57415
-#define	PREINCR	57416
-#define	POSTDECR	57417
-#define	PREDECR	57418
-#define	VAR	57419
-#define	IVAR	57420
-#define	VARNF	57421
-#define	CALL	57422
-#define	NUMBER	57423
-#define	STRING	57424
-#define	REGEXPR	57425
-#define	GETLINE	57426
-#define	RETURN	57427
-#define	SPLIT	57428
-#define	SUBSTR	57429
-#define	WHILE	57430
-#define	CAT	57431
-#define	NOT	57432
-#define	UMINUS	57433
-#define	POWER	57434
-#define	DECR	57435
-#define	INCR	57436
-#define	INDIRECT	57437
-#define	LASTTOKEN	57438
-#define YYEOFCODE 1
-#define YYERRCODE 2
-
-#line	445	"/n/fs/fac/bwk/awk/awkgram.y"
-
-
-void setfname(Cell *p)
-{
-	if (isarr(p))
-		SYNTAX("%s is an array, not a function", p->nval);
-	else if (isfcn(p))
-		SYNTAX("you can't define function %s more than once", p->nval);
-	curfname = p->nval;
-}
-
-int constnode(Node *p)
-{
-	return isvalue(p) && ((Cell *) (p->narg[0]))->csub == CCON;
-}
-
-char *strnode(Node *p)
-{
-	return ((Cell *)(p->narg[0]))->sval;
-}
-
-Node *notnull(Node *n)
-{
-	switch (n->nobj) {
-	case LE: case LT: case EQ: case NE: case GT: case GE:
-	case BOR: case AND: case NOT:
-		return n;
-	default:
-		return op2(NE, n, nullnode);
-	}
-}
-
-void checkdup(Node *vl, Cell *cp)	/* check if name already in list */
-{
-	char *s = cp->nval;
-	for ( ; vl; vl = vl->nnext) {
-		if (strcmp(s, ((Cell *)(vl->narg[0]))->nval) == 0) {
-			SYNTAX("duplicate argument %s", s);
-			break;
-		}
-	}
-}
-static	const	short	yyexca[] =
-{-1, 0,
-	1, 28,
-	8, 28,
-	9, 28,
-	12, 28,
-	13, 28,
-	16, 28,
-	46, 28,
-	47, 28,
-	49, 28,
-	55, 28,
-	56, 28,
-	57, 28,
-	59, 28,
-	61, 28,
-	79, 28,
-	87, 28,
-	88, 28,
-	89, 28,
-	90, 28,
-	91, 28,
-	92, 28,
-	96, 28,
-	98, 28,
-	99, 28,
-	102, 28,
-	103, 28,
-	106, 28,
-	109, 28,
-	110, 28,
-	111, 28,
-	-2, 0,
--1, 1,
-	1, -1,
-	-2, 0,
--1, 157,
-	15, 30,
-	-2, 0,
--1, 176,
-	14, 0,
-	24, 0,
-	39, 0,
-	40, 0,
-	41, 0,
-	42, 0,
-	43, 0,
-	44, 0,
-	45, 0,
-	-2, 63,
--1, 177,
-	14, 0,
-	24, 0,
-	39, 0,
-	40, 0,
-	41, 0,
-	42, 0,
-	43, 0,
-	44, 0,
-	45, 0,
-	-2, 64,
--1, 178,
-	14, 0,
-	24, 0,
-	39, 0,
-	40, 0,
-	41, 0,
-	42, 0,
-	43, 0,
-	44, 0,
-	45, 0,
-	-2, 65,
--1, 179,
-	14, 0,
-	24, 0,
-	39, 0,
-	40, 0,
-	41, 0,
-	42, 0,
-	43, 0,
-	44, 0,
-	45, 0,
-	-2, 66,
--1, 180,
-	14, 0,
-	24, 0,
-	39, 0,
-	40, 0,
-	41, 0,
-	42, 0,
-	43, 0,
-	44, 0,
-	45, 0,
-	-2, 67,
--1, 181,
-	14, 0,
-	24, 0,
-	39, 0,
-	40, 0,
-	41, 0,
-	42, 0,
-	43, 0,
-	44, 0,
-	45, 0,
-	-2, 68,
--1, 183,
-	14, 0,
-	24, 0,
-	39, 0,
-	40, 0,
-	41, 0,
-	42, 0,
-	43, 0,
-	44, 0,
-	45, 0,
-	-2, 70,
--1, 289,
-	24, 0,
-	45, 0,
-	-2, 53,
--1, 334,
-	17, 30,
-	-2, 0,
--1, 356,
-	17, 30,
-	-2, 0,
-};
-#define	YYNPROD	185
-#define	YYPRIVATE 57344
-#define	YYLAST	4442
-static	const	short	yyact[] =
-{
-  17, 140,  66, 228, 200, 105,  43,  62, 277,  10,
- 125,  24,  11,  43, 253, 135, 100, 112,  51, 141,
-  79,  80, 308, 243, 100, 185, 100, 100, 100, 103,
- 104, 100, 122, 123, 124, 215,  82, 249,  54,  83,
- 102, 107,  43, 107, 253, 223,   9,  42,  22,  44,
-  43, 113, 314, 252,  42,  22,  44, 206,  11, 143,
- 253, 147, 103, 104, 244, 150, 151, 153, 154, 278,
- 113,  23, 136, 163, 353, 100, 190, 276,  23, 103,
- 104, 190, 336,  42, 156,  44, 190, 324, 136, 352,
- 134,  42,  22,  44, 190, 316,  43, 133,  85, 351,
- 100, 149, 321, 258, 320, 182, 269, 100, 100, 100,
- 100, 100, 100, 100, 232,  23,  86, 190, 168, 169,
- 275, 318, 332, 278, 203, 205, 100, 108, 109, 110,
- 111, 110, 111, 112, 211, 112, 170,  42, 233,  44,
- 190, 234, 212, 190, 190, 217, 284, 100, 221, 265,
- 260, 190, 167, 100, 226, 190,   3, 259, 219, 158,
- 230, 188, 136, 100,   6, 137, 137, 236,   6,   7,
- 142, 310, 100,   7, 100, 157, 100, 100, 100, 100,
- 100, 100, 100, 131, 100,  21, 251, 100, 100, 130,
-  48, 129, 128,  16, 100,  49, 127, 126, 120, 119,
-  52,  16, 100, 190, 312, 137, 274, 100, 218, 100,
- 100, 100, 144,   4, 100, 100, 155, 271, 145, 132,
- 317, 348,  50,  55, 362, 270, 365, 162,   1,  72,
-  40, 224, 100, 100, 100, 100, 163,   5, 163, 163,
- 163, 163,  20,  58, 163,  67, 100, 222,  61, 292,
-  60,  19, 288, 248, 293, 100, 100, 294,  96, 166,
-  81, 238,   8, 159, 160,   2, 114,   0, 116, 117,
- 118,   0,   0, 121, 300, 301,   0, 115, 139, 239,
- 184,   0,   0, 100,   0, 148, 100, 100, 100, 313,
- 100, 309, 100,   0,   0, 136,   0, 100,   0, 100,
- 100,   0,   0, 100,   0, 100, 100, 100,   0, 307,
-   0,   0,   0,   0,   0, 165, 163,  96,   0,   0,
- 335,   0,   0,   0, 164, 339, 334, 342,   0, 343,
- 136,   0,   0,   0, 100, 341,   0, 230, 347, 100,
-   0, 100, 116, 229,   0, 100, 100,   0,   0,  96,
- 194, 195, 196, 197, 198, 199, 357, 360, 139, 230,
- 361,   0, 356,   0,   0,   0, 136,   0, 207, 220,
- 363,   0,   0, 139,   0,   0,   0,   0, 349, 227,
-   0, 238,   0,   0, 238, 238, 238,   0, 238,  96,
- 238,   0, 139, 139,   0,  96,   0,   0,   0, 239,
-   0, 257, 239, 239, 239, 242, 239,   0, 239,   0,
-   0,   0,   0,   0,  96,   0,  96,   0,  96,  96,
-  96,  96,  96,  96,  96,   0,  96, 290,   0,  96,
-  96,   0,   0,   0,   0,   0, 256, 238, 297,   0,
-   0,   0,   0,   0,  96,   0, 273,   0,   0, 261,
- 303,  96,  96,  96,   0, 239,  96,  96,   0,   0,
-   0,   0, 311, 282,   0, 285, 286, 287, 289,   0,
-   0, 291,   0,   0,  96, 279, 280, 281, 165,   0,
- 165, 165, 165, 165,   0,   0, 165, 164,  96, 164,
- 164, 164, 164,   0,   0, 164,   0,  96,  96,   0,
- 337,   0,   0,   0,   0,  74,   0, 189, 191,   0,
-  15,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0, 106, 242,   0,   0, 242, 242,
- 242, 139, 242,   0, 242,   0,   0,   0,   0,  96,
-   0,  96,  96, 338,   0,  96,   0,  96,  96,  96,
-   0,   0,   0,   0,   0,   0,  15,   0, 165,   0,
-   0,   0, 235,   0,   0, 146,   0, 164,   0,   0,
-   0, 152, 358, 139,   0,   0,  96,   0,   0,   0,
-   0, 242,   0,  96,   0,   0, 364,  96,  96, 366,
- 171, 173, 175, 176, 177, 178, 179, 180, 181, 183,
-   0,   0,   0,   0,   0,   0,   0, 186, 187,   0,
- 262, 263, 264,   0, 266, 267, 268,   0,   0, 201,
-   0,   0,   0,   0,   0, 201, 201,   0,   0,   0,
-   0,   0, 208, 209, 210, 201, 213, 214, 189,   0,
-   0,  15,   0,   0,   0,   0, 190,   0, 101,  95,
- 295,   0, 330,   0,   0,   0,   0,   0,   0,  93,
-   0,   0,   0,   0, 231,   0,   0, 106,   0,   0,
-   0,  98,  97, 245,  87,  88,  89,  90,  91,  92,
-  94,  43,  28,   0,  30,   0,   0,   0,   0,   0,
-   0,  46,  47,   0,  34, 254,  35, 255,   0,   0,
-   0,   0,   0,   0,   0, 323, 326, 328, 329,   0,
-   0,   0,   0,   0,  38, 189,   0,   0,   0,   0,
-   0,   0,  42,  22,  44,  29,  36,  39,   0,  84,
-   0,  33,   0,  37,  41,   0,   0,  27,  26,   0,
-   0,  99,   0,   0,  31,  32,  23,   0,   0,   0,
- 201,   0,   0,   0,   0,   0, 296,   0,   0,   0,
-   0,   0,   0, 298,   0,   0,   0,   0, 299, 302,
-   0,   0, 304, 305, 306,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0, 106,
-   0,   0,   0,   0,   0,  75,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,  16,  18,   0,  68,  45,
-   0, 359,   0,   0,   0, 333,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0, 340,
-   0,   0,   0,   0,   0, 344,   0,   0, 345,  43,
-  28,  56,  30,  57,  73,  69,  59,  70,   0,  46,
-  47,  71,  34,   0,  35,  63,  64,   0,   0,   0,
-   0,   0,   0,   0,   0,  75,   0,   0,   0,   0,
-  77,  78,  38,  53,   0,  16,  18,   0,  68,  45,
-  42,  22,  44,  29,  36,  39,   0,   0,   0,  33,
-  65,  37,  41,  76,   0,  27,  26,   0,   0,  25,
-   0,   0,  31,  32,  23,   0,   0,   0,   0,  43,
-  28,  56,  30,  57,  73,  69,  59,  70,   0,  46,
-  47,  71,  34,   0,  35,  63,  64,   0,   0,   0,
-   0,   0,   0,  75,   0,   0,   0,   0,   0,   0,
-  77,  78,  38,  16,  18,   0,  68,  45,   0, 331,
-  42,  22,  44,  29,  36,  39,   0,   0,   0,  33,
-  65,  37,  41,  76,   0,  27,  26,   0,   0,  25,
-   0,   0,  31,  32,  23,   0,   0,  43,  28,  56,
-  30,  57,  73,  69,  59,  70,   0,  46,  47,  71,
-  34,   0,  35,  63,  64,   0,   0,   0,   0,   0,
-   0,   0,   0,  75,   0,   0,   0,   0,  77,  78,
-  38, 272,   0,  16,  18,   0,  68,  45,  42,  22,
-  44,  29,  36,  39,   0,   0,   0,  33,  65,  37,
-  41,  76,   0,  27,  26,   0,   0,  25,   0,   0,
-  31,  32,  23,   0,   0,   0,   0,  43,  28,  56,
-  30,  57,  73,  69,  59,  70,   0,  46,  47,  71,
-  34,   0,  35,  63,  64,   0,   0,   0,   0,   0,
-   0,  75,   0,   0,   0,   0,   0,   0,  77,  78,
-  38,  16,  18,   0,  68,  45,   0, 247,  42,  22,
-  44,  29,  36,  39,   0,   0,   0,  33,  65,  37,
-  41,  76,   0,  27,  26,   0,   0,  25,   0,   0,
-  31,  32,  23,   0,   0,  43,  28,  56,  30,  57,
-  73,  69,  59,  70,   0,  46,  47,  71,  34,   0,
-  35,  63,  64,   0,   0,   0,   0,   0,   0,  75,
-   0,   0,   0,   0,   0,   0,  77,  78,  38,  16,
-  18,   0,  68,  45,   0, 246,  42,  22,  44,  29,
-  36,  39,   0,   0,   0,  33,  65,  37,  41,  76,
-   0,  27,  26,   0,   0,  25,   0,   0,  31,  32,
-  23,   0,   0,  43,  28,  56,  30,  57,  73,  69,
-  59,  70,   0,  46,  47,  71,  34,   0,  35,  63,
-  64,   0,   0,   0,   0,   0,   0,  75,   0,   0,
-   0,   0,   0,   0,  77,  78,  38,  16,  18,   0,
-  68,  45,   0, 225,  42,  22,  44,  29,  36,  39,
-   0,   0,   0,  33,  65,  37,  41,  76,   0,  27,
-  26,   0,   0,  25,   0,   0,  31,  32,  23,   0,
-   0,  43,  28,  56,  30,  57,  73,  69,  59,  70,
-   0,  46,  47,  71,  34,   0,  35,  63,  64,   0,
-   0,   0,   0,   0,   0,  75,   0,   0,   0,   0,
-   0,   0,  77,  78,  38,  16,  18,   0,  68,  45,
-   0, 216,  42,  22,  44,  29,  36,  39,   0,   0,
-   0,  33,  65,  37,  41,  76,   0,  27,  26,   0,
-   0,  25,   0,   0,  31,  32,  23,   0,   0,  43,
-  28,  56,  30,  57,  73,  69,  59,  70,   0,  46,
-  47,  71,  34,   0,  35,  63,  64,   0,   0,   0,
-   0,   0,   0,  75,   0,   0,   0,   0,   0,   0,
-  77,  78,  38,  16,  18,   0,  68,  45,   0, 138,
-  42,  22,  44,  29,  36,  39,   0,   0,   0,  33,
-  65,  37,  41,  76,   0,  27,  26,   0,   0,  25,
-   0,   0,  31,  32,  23,   0,   0,  43,  28,  56,
-  30,  57,  73,  69,  59,  70,   0,  46,  47,  71,
-  34,   0,  35,  63,  64,   0,   0,   0,   0,   0,
-   0,  75,   0,   0,   0,   0,   0,   0,  77,  78,
-  38,  16,  18,   0,  68,  45,   0,   0,  42,  22,
-  44,  29,  36,  39,   0,   0,   0,  33,  65,  37,
-  41,  76,   0,  27,  26,   0,   0,  25,   0,   0,
-  31,  32,  23,   0,   0,  43,  28,  56,  30,  57,
-  73,  69,  59,  70,   0,  46,  47,  71,  34,   0,
-  35,  63,  64,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,  77,  78,  38,   0,
-   0,   0,   0,   0,   0,   0,  42,  22,  44,  29,
-  36,  39,   0,   0,   0,  33,  65,  37,  41,  76,
-   0,  27,  26,   0,   0,  25,   0,   0,  31,  32,
-  23, 190,   0, 101,  95,   0,   0, 327,   0,   0,
-   0,   0,   0,   0,  93,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,  98,  97,   0,  87,
-  88,  89,  90,  91,  92,  94,  43,  28,   0,  30,
-   0,   0,   0,   0,   0,   0,  46,  47,   0,  34,
-   0,  35,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,  38,
-   0,   0,   0,   0,   0,   0,   0,  42,  22,  44,
-  29,  36,  39,   0,  84,   0,  33,   0,  37,  41,
-   0,   0,  27,  26,   0,   0,  99,   0,   0,  31,
-  32,  23, 190,   0, 101,  95,   0,   0, 325,   0,
-   0,   0,   0,   0,   0,  93,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,  98,  97,   0,
-  87,  88,  89,  90,  91,  92,  94,  43,  28,   0,
-  30,   0,   0,   0,   0,   0,   0,  46,  47,   0,
-  34,   0,  35,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-  38,   0,   0,   0,   0,   0,   0,   0,  42,  22,
-  44,  29,  36,  39,   0,  84,   0,  33,   0,  37,
-  41,   0,   0,  27,  26,   0,   0,  99,   0,   0,
-  31,  32,  23, 137,   0,   0, 101,  95, 142,   0,
-   0,   0,   0,   0,   0,   0,   0,  93,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,  98,
-  97,   0,  87,  88,  89,  90,  91,  92,  94,  43,
-  28,   0,  30,   0,   0,   0,   0,   0,   0,  46,
-  47,   0,  34,   0,  35,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,  38,   0,   0,   0,   0,   0,   0,   0,
-  42,  22,  44,  29,  36,  39,   0,  84,   0,  33,
-   0,  37,  41,   0,   0,  27,  26,   0,   0,  99,
-   0,   0,  31,  32,  23, 190,   0, 101,  95,   0,
-   0, 192,   0,   0,   0,   0,   0,   0,  93,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-  98,  97,   0,  87,  88,  89,  90,  91,  92,  94,
-  43,  28,   0,  30,   0,   0,   0,   0,   0,   0,
-  46,  47,   0,  34,   0,  35,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,  38,   0,   0,   0,   0,   0,   0,
-   0,  42,  22,  44,  29,  36,  39,   0,  84,   0,
-  33,   0,  37,  41,   0,   0,  27,  26, 101,  95,
-  99,   0, 355,  31,  32,  23,   0,   0,   0,  93,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,  98,  97,   0,  87,  88,  89,  90,  91,  92,
-  94,  43,  28,   0,  30,   0,   0,   0,   0,   0,
-   0,  46,  47,   0,  34,   0,  35,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,  38,   0,   0,   0,   0,   0,
-   0,   0,  42,  22,  44,  29,  36,  39,   0,  84,
-   0,  33,   0,  37,  41,   0,   0,  27,  26, 101,
-  95,  99,   0, 354,  31,  32,  23,   0,   0,   0,
-  93,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,  98,  97,   0,  87,  88,  89,  90,  91,
-  92,  94,  43,  28,   0,  30,   0,   0,   0,   0,
-   0,   0,  46,  47,   0,  34,   0,  35,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,  38,   0,   0,   0,   0,
-   0,   0,   0,  42,  22,  44,  29,  36,  39,   0,
-  84,   0,  33,   0,  37,  41,   0,   0,  27,  26,
- 101,  95,  99,   0, 350,  31,  32,  23,   0,   0,
-   0,  93,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,  98,  97,   0,  87,  88,  89,  90,
-  91,  92,  94,  43,  28,   0,  30,   0,   0,   0,
-   0,   0,   0,  46,  47,   0,  34,   0,  35,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,  38,   0,   0,   0,
-   0,   0,   0,   0,  42,  22,  44,  29,  36,  39,
-   0,  84,   0,  33,   0,  37,  41,   0,   0,  27,
-  26,   0,   0,  99,   0,   0,  31,  32,  23, 101,
-  95, 346,   0,   0,   0,   0,   0,   0,   0,   0,
-  93,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,  98,  97,   0,  87,  88,  89,  90,  91,
-  92,  94,  43,  28,   0,  30,   0,   0,   0,   0,
-   0,   0,  46,  47,   0,  34,   0,  35,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,  38,   0,   0,   0,   0,
-   0,   0,   0,  42,  22,  44,  29,  36,  39,   0,
-  84,   0,  33,   0,  37,  41,   0,   0,  27,  26,
- 101,  95,  99,   0, 322,  31,  32,  23,   0,   0,
-   0,  93,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,  98,  97,   0,  87,  88,  89,  90,
-  91,  92,  94,  43,  28,   0,  30,   0,   0,   0,
-   0,   0,   0,  46,  47,   0,  34,   0,  35,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,  38,   0,   0,   0,
-   0,   0,   0,   0,  42,  22,  44,  29,  36,  39,
-   0,  84,   0,  33,   0,  37,  41,   0,   0,  27,
-  26, 101,  95,  99,   0, 319,  31,  32,  23,   0,
-   0,   0,  93,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,  98,  97,   0,  87,  88,  89,
-  90,  91,  92,  94,  43,  28,   0,  30,   0,   0,
-   0,   0,   0,   0,  46,  47,   0,  34,   0,  35,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,  38,   0,   0,
-   0,   0,   0,   0,   0,  42,  22,  44,  29,  36,
-  39,   0,  84,   0,  33,   0,  37,  41,   0,   0,
-  27,  26, 101,  95,  99,   0, 278,  31,  32,  23,
-   0,   0,   0,  93,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,  98,  97,   0,  87,  88,
-  89,  90,  91,  92,  94,  43,  28,   0,  30,   0,
-   0,   0,   0,   0,   0,  46,  47,   0,  34,   0,
-  35,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,  38,   0,
-   0,   0,   0,   0,   0,   0,  42,  22,  44,  29,
-  36,  39,   0,  84,   0,  33,   0,  37,  41,   0,
-   0,  27,  26,   0, 190,  99, 101,  95,  31,  32,
-  23,   0,   0,   0,   0,   0,   0,  93,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,  98,
-  97,   0,  87,  88,  89,  90,  91,  92,  94,  43,
-  28,   0,  30,   0,   0,   0,   0,   0,   0,  46,
-  47,   0,  34,   0,  35,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,  38,   0,   0,   0,   0,   0,   0,   0,
-  42,  22,  44,  29,  36,  39,   0,  84,   0,  33,
-   0,  37,  41,   0,   0,  27,  26, 101,  95,  99,
-   0, 192,  31,  32,  23,   0,   0,   0,  93,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-  98,  97,   0,  87,  88,  89,  90,  91,  92,  94,
-  43,  28,   0,  30,   0,   0,   0,   0,   0,   0,
-  46,  47,   0,  34,   0,  35,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,  38,   0,   0,   0,   0,   0,   0,
-   0,  42,  22,  44,  29,  36,  39,   0,  84,   0,
-  33,   0,  37,  41,   0,   0,  27,  26, 101,  95,
-  99,   0,   0,  31,  32,  23,   0,   0,   0,  93,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,  98,  97,   0,  87,  88,  89,  90,  91,  92,
-  94,  43,  28,   0,  30,   0,   0,   0,   0,   0,
-   0,  46,  47,   0,  34,   0,  35,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,  38,   0,   0,   0,   0,   0,
-   0,   0,  42,  22,  44,  29,  36,  39,   0,  84,
- 250,  33,   0,  37,  41,   0,   0,  27,  26, 101,
-  95,  99,   0,   0,  31,  32,  23,   0,   0,   0,
-  93,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,  98,  97,   0,  87,  88,  89,  90,  91,
-  92,  94,  43,  28,   0,  30,   0,   0,   0,   0,
-   0,   0,  46,  47,   0,  34,   0,  35,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,  38,   0,   0,   0,   0,
-   0,   0,   0,  42,  22,  44,  29,  36,  39,   0,
-  84,   0,  33,   0,  37,  41,   0,   0,  27,  26,
- 101,  95,  99,   0,   0,  31,  32,  23,   0,   0,
-   0,  93,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,  98,   0,   0,  87,  88,  89,  90,
-  91,  92,  94,  43,  28,   0,  30,   0,   0,   0,
-   0,   0,   0,  46,  47,   0,  34,   0,  35,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,  38,   0,   0,   0,
-   0,   0,   0,   0,  42,  22,  44,  29,  36,  39,
- 101,  95,   0,  33,   0,  37,  41,   0,   0,  27,
-  26,  93,   0,  99,   0,   0,  31,  32,  23,   0,
-   0,   0,   0,   0,   0,   0,  87,  88,  89,  90,
-  91,  92,  94,  43,  28,   0,  30,   0,   0,   0,
-   0,   0,   0,  46,  47,   0,  34,   0,  35,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,  38,   0,   0,   0,
-   0, 101,   0,   0,  42,  22,  44,  29,  36,  39,
-   0,   0, 240,  33,   0,  37,  41,   0,   0,  27,
-  26,   0,   0,  99,  98,  97,  31,  32,  23,   0,
-   0,   0,   0, 241,  43,  28,   0,  30,   0,   0,
-   0,   0,   0,   0,  46,  47,   0,  34,   0,  35,
-   0,   0,   0,   0,   0,   0,   0,  75,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,  38,  18,   0,
-   0,  45,   0,   0,   0,  42,  22,  44,  29,  36,
-  39,   0, 237, 315,  33,   0,  37,  41,   0,   0,
-  27,  26,   0,   0,  99,   0,   0,  31,  32,  23,
-   0,  43,  28,   0,  30,   0,  73,   0,   0,   0,
-   0,  46,  47,   0,  34,   0,  35,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,  77,  78,  38,   0,   0,   0,   0, 101,
-   0,   0,  42,  22,  44,  29,  36,  39,   0,   0,
- 240,  33,   0,  37,  41,   0,   0,  27,  26,   0,
-   0,  25,  98,  97,  31,  32,  23,   0,   0,   0,
-   0, 241,  43,  28,   0,  30,   0,   0,   0,   0,
-   0,   0,  46,  47,   0,  34,   0,  35,   0,   0,
-   0,   0,  12,  13,   0,   0,  16,  18,   0,   0,
-  45,   0,   0,   0,   0,  38,   0,   0,   0,   0,
-   0,   0,   0,  42,  22,  44,  29,  36,  39,   0,
- 237,   0,  33,   0,  37,  41,   0,   0,  27,  26,
-  43,  28,  99,  30,   0,  31,  32,  23,   0,  14,
-  46,  47,   0,  34,   0,  35,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,  38,   0,   0, 101,   0,   0,   0,
-   0,  42,  22,  44,  29,  36,  39, 240,   0,   0,
-  33,   0,  37,  41,   0,   0,  27,  26,   0,  98,
-  25,   0,   0,  31,  32,  23,   0,   0, 241,  43,
-  28,   0,  30,   0,   0,   0,   0,   0,   0,  46,
-  47,   0,  34,   0,  35,   0,   0,   0,   0,   0,
-   0, 137,   0,   0,  18,   0, 142,  45,   0,   0,
-   0,   0,  38,   0,   0,   0,   0,   0,   0,   0,
-  42,  22,  44,  29,  36,  39,   0,   0,   0,  33,
-   0,  37,  41,   0,   0,  27,  26,  43,  28,  99,
-  30,   0,  31,  32,  23,   0,   0,  46,  47,   0,
-  34,   0,  35,   0,   0,   0,   0,   0,   0, 253,
-   0,   0,  18,   0,   0,  45,   0,   0,   0,   0,
-  38,   0,   0,   0,   0,   0,   0,   0,  42,  22,
-  44,  29,  36,  39,   0,   0,   0,  33,   0,  37,
-  41,   0,   0,  27,  26,  43,  28,  25,  30,   0,
-  31,  32,  23,   0,   0,  46,  47,   0,  34,   0,
-  35,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,  38,   0,
-   0, 101,   0,   0,   0,   0,  42,  22,  44,  29,
-  36,  39, 240,   0,   0,  33,   0,  37,  41,   0,
-   0,  27,  26,   0,   0,  25,   0,   0,  31,  32,
-  23,   0,   0, 241,  43,  28,   0,  30,   0,   0,
-   0,   0,   0,   0,  46,  47,   0,  34,   0,  35,
-   0,   0,   0,   0,   0,   0, 174,   0,   0, 283,
-   0,   0,  45,   0,   0,   0,   0,  38,   0,   0,
-   0,   0,   0,   0,   0,  42,  22,  44,  29,  36,
-  39,   0,   0,   0,  33,   0,  37,  41,   0,   0,
-  27,  26,  43,  28,  99,  30,   0,  31,  32,  23,
-   0,   0,  46,  47,   0,  34,   0,  35,   0,   0,
-   0,   0,   0,   0, 172,   0,   0, 283,   0,   0,
-  45,   0,   0,   0,   0,  38,   0,   0,   0,   0,
-   0,   0,   0,  42,  22,  44,  29,  36,  39,   0,
-   0,   0,  33,   0,  37,  41,   0,   0,  27,  26,
-  43,  28,  25,  30,   0,  31,  32,  23,   0,   0,
-  46,  47,   0,  34,   0,  35,   0,   0,   0,   0,
-   0,   0, 253,   0,   0, 283,   0,   0,  45,   0,
-   0,   0,   0,  38,   0,   0,   0,   0,   0,   0,
-   0,  42,  22,  44,  29,  36,  39,   0,   0,   0,
-  33,   0,  37,  41,   0,   0,  27,  26,  43,  28,
-  25,  30,   0,  31,  32,  23,   0,   0,  46,  47,
-   0,  34,   0,  35,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,  18,   0,   0,  45, 204,   0,   0,
-   0,  38,   0,   0,   0,   0,   0,   0,   0,  42,
-  22,  44,  29,  36,  39,   0,   0,   0,  33,   0,
-  37,  41,   0,   0,  27,  26,  43,  28,  25,  30,
-   0,  31,  32,  23,   0,   0,  46,  47,   0,  34,
-   0,  35,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,  18,   0,   0,  45, 202,   0,   0,   0,  38,
-   0,   0,   0,   0,   0,   0,   0,  42,  22,  44,
-  29,  36,  39,   0,   0,   0,  33,   0,  37,  41,
-   0,   0,  27,  26,  43,  28,  25,  30,   0,  31,
-  32,  23,   0,   0,  46,  47,   0,  34,   0,  35,
-   0,   0,   0,   0,   0,   0, 174,   0,   0,  18,
-   0,   0,  45,   0,   0,   0,   0,  38,   0,   0,
-   0,   0,   0,   0,   0,  42,  22,  44,  29,  36,
-  39,   0,   0,   0,  33,   0,  37,  41,   0,   0,
-  27,  26,  43,  28,  25,  30,   0,  31,  32,  23,
-   0,   0,  46,  47,   0,  34,   0,  35,   0,   0,
-   0,   0,   0,   0, 172,   0,   0,  18,   0,   0,
-  45,   0,   0,   0,   0,  38,   0,   0,   0,   0,
-   0,   0,   0,  42,  22,  44,  29,  36,  39,   0,
-   0,   0,  33,   0,  37,  41,   0,   0,  27,  26,
-  43,  28,  25,  30,   0,  31,  32,  23,   0,   0,
-  46,  47,   0,  34,   0,  35,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,  18,   0,   0,  45,   0,
-   0,   0,   0,  38,   0,   0,   0,   0,   0,   0,
-   0,  42,  22,  44,  29,  36,  39,   0,   0,   0,
-  33,   0,  37,  41,   0,   0,  27,  26,  43,  28,
-  25,  30,   0,  31,  32,  23,   0,   0,  46,  47,
-   0,  34,   0,  35,   0,   0,   0,   0,   0,   0,
-   0,   0,   0, 283,   0,   0,  45,   0,   0,   0,
-   0,  38,   0,   0,   0,   0,   0,   0,   0,  42,
-  22,  44,  29,  36,  39,   0,   0,   0,  33,   0,
-  37,  41,   0,   0,  27,  26,  43,  28,  25,  30,
-   0,  31,  32,  23,   0,   0,  46,  47,   0,  34,
-   0,  35,   0,   0,   0,   0,   0,   0,   0,   0,
-   0, 101,   0,   0,   0,   0,   0,   0,   0,  38,
-   0,   0,   0,   0,   0,   0,   0,  42,  22,  44,
-  29,  36,  39,   0,   0,   0,  33,   0,  37,  41,
-   0,   0,  27,  26,  43,  28,  25,  30,   0,  31,
-  32,  23,   0,   0,  46,  47,   0,  34,   0,  35,
-   0,   0,   0,   0,   0,   0,   0,   0, 193, 161,
-   0,   0,  45,   0,   0,   0,   0,  38,   0,   0,
-   0,   0,   0,   0,   0,  42,  22,  44,  29,  36,
-  39,   0,   0,   0,  33,   0,  37,  41,   0,   0,
-  27,  26,  43,  28,  99,  30,   0,  31,  32,  23,
-   0,   0,  46,  47,   0,  34,   0,  35,   0,   0,
-   0,   0,   0,   0,   0,   0,   0, 101,   0,   0,
-  45,   0,   0,   0,   0,  38,   0,   0,   0,   0,
-   0,   0,   0,  42,  22,  44,  29,  36,  39,   0,
-   0,   0,  33,   0,  37,  41,   0,   0,  27,  26,
-  43,  28,  25,  30,   0,  31,  32,  23,   0,   0,
-  46,  47,   0,  34,   0,  35,   0,   0,   0,   0,
-   0,   0,   0,   0,   0, 101,   0,   0,   0,   0,
-   0,   0,   0,  38,   0,   0,   0,   0,   0,   0,
-   0,  42,  22,  44,  29,  36,  39,   0,   0,   0,
-  33,   0,  37,  41,   0,   0,  27,  26,  43,  28,
-  25,  30,   0,  31,  32,  23,   0,   0,  46,  47,
-   0,  34,   0,  35,   0,   0,   0,   0,   0,   0,
-   0,   0,   0, 101,   0,   0,   0,   0,   0,   0,
-   0,  38,   0,   0,   0,   0,   0,   0,   0,  42,
-  22,  44,  29,  36,  39,   0,   0,   0,  33,   0,
-  37,  41,   0,   0,  27,  26,  43,  28,  99,  30,
-   0,  31,  32,  23,   0,   0,  46,  47,   0,  34,
-   0,  35,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,  38,
-   0,   0,   0,   0,   0,   0,   0,  42,  22,  44,
-  29,  36,  39,   0,   0,   0,   0,   0,  37,  41,
-   0,   0,  27,  26,   0,   0,  99,   0,   0,  31,
-  32,  23
-};
-static	const	short	yypact[] =
-{
- 154,-1000,-1000,-1000,3264, 180,-1000,-1000, 158,-1000,
- 189, 863, 181, 181, -51,2826,-1000, -30,3982,-1000,
-  25,  51,-1000,4272,-1000,4214,4272,4272, 186, 185,
-4272, -40, -40, -33, 184, 183,-1000, 179, 178,-1000,
- 176, 170,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-3264, 863, 195,-1000,1341,-1000, 155, 155, 202,3391,
--1000,1409, 863, 155, 155,3391, 155,-1000, 195,-1000,
- 162, 146,4156,  -4,2826,-1000, 139,-1000,-1000, 863,
- 863, 123,-1000,-1000,3982,3924,3866,3982,3982,3982,
-3982,3982,3982,3982,  -4, -71,  25,-1000,-1000,4272,
- -80,3982,3982,-1000,-1000, 144,1814,4098,4272,4272,
-4272,4272,4272,3982,-1000,-1000, -91, -91, -91,3808,
-3750,  25,-1000,-1000,  14,4272,3982,3982,3982,3982,
-3982,3982, -58,-1000,1273,3982, 198,-1000,-1000,-1000,
--1000, 198, 195,-1000,-1000,1409,1713,-1000, -35,1205,
--1000,-1000,1713,-1000,-1000,1409,-1000,3135,3982, 100,
- 192,3982,3206, -47,-1000,  25,  45,3982,1137,1069,
- -50,2735,-1000,2917,-1000,2997,4330,4330,4330,4330,
-4330,4330,-1000,4330,-1000, -40,2644,2826,   8,3449,
--1000,3449,-1000,4272, -91,  27,  27, -91, -91, -91,
-  83,2826,-1000, 140,-1000, 133,4272,  25,2553,2553,
-2553, 132, 192,2553,2553,  90,-1000, 181,-1000,-1000,
--1000,-1000,1001,-1000, 196,-1000,-1000,-1000, 105,  32,
--1000,2459,4272,4272,4272,3692, 129,4040,3634,3576,
-4040,  -4,  25,4040,3982,2459,-1000,-1000, 106,-1000,
-3982,-1000,  -4,-1000,2826,2826,  25,3449,-1000,-1000,
--1000,  25,3449,3449,  50,-1000,3449,3449,3449,-1000,
- 863, -78,-1000,-1000,-1000, 156,  -4, 194,-1000,  25,
-  25,  25,3206,3982,   7,3068,3333,3518,-1000,4330,
--1000,3206,  75, 194, 194,  34,2826,-1000,2826,2368,
-  87,  85,2277,  70,1611,1510, 635, 931, 109,3982,
- 195,  52,-1000,  65,  -4,4040,-1000, 181,-1000,-1000,
--1000,-1000,-1000,3449,-1000,-1000,   4,-1000,   4,3449,
--1000,-1000,3982,2186,3135, 194,   7,-1000,3206, 863,
-2087,  82,  72,  57,1996,1905, 195,  52,1409, 793,
--1000,-1000,-1000,-1000,-1000, 155,3135, 194,-1000,-1000,
--1000,  52,1409, 194,-1000,1409,-1000
-};
-static	const	short	yypgo[] =
-{
-   0, 265, 505, 227,   5, 264,   4, 263, 242, 251,
-   9,  46, 262,  11,   2,   3, 223,  38,   0, 185,
- 260, 253, 250, 248, 247, 245, 243,   1, 237, 213,
-   7, 231,   8, 401,  19,  15, 116,  98, 230, 229,
- 228, 226, 224, 221, 220, 219, 218, 217, 216
-};
-static	const	short	yyr1[] =
-{
-   0,  40,  40,  36,  36,  37,  37,  33,  33,  26,
-  26,  24,  24,  41,  22,  42,  22,  43,  22,  20,
-  20,  23,  30,  30,  34,  34,  35,  35,  29,  29,
-  15,  15,   1,   1,  10,  11,  11,  11,  11,  11,
-  11,  11,  44,  11,  12,  12,   6,   6,   3,   3,
-   3,   3,   3,   3,   3,   3,   3,   3,   3,   2,
-   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
-   2,   2,   2,   2,   2,   2,   2,   2,   4,   4,
-   5,   5,   7,   7,   7,  39,  39,  28,  28,  28,
-  28,  31,  31,   9,   9,  45,  13,  32,  32,  14,
-  14,  14,  14,  14,  14,  14,  14,  27,  27,  16,
-  16,  46,  47,  16,  16,  16,  16,  16,  16,  16,
-  16,  16,  16,  16,  16,  48,  16,  16,  17,  17,
-  38,  38,   8,   8,   8,   8,   8,   8,   8,   8,
-   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,
-   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,
-   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,
-   8,   8,   8,   8,  18,  18,  18,  18,  21,  21,
-  21,  19,  19,  19,  25
-};
-static	const	short	yyr2[] =
-{
-   0,   1,   1,   1,   2,   1,   2,   1,   2,   1,
-   2,   1,   2,   0,  12,   0,  10,   0,   8,   1,
-   1,   4,   1,   2,   1,   2,   0,   1,   0,   1,
-   0,   1,   1,   3,   1,   1,   4,   4,   7,   3,
-   4,   4,   0,   9,   1,   3,   1,   3,   3,   5,
-   3,   3,   3,   3,   3,   5,   2,   1,   1,   3,
-   5,   3,   3,   3,   3,   3,   3,   3,   3,   3,
-   3,   3,   5,   4,   3,   2,   1,   1,   3,   3,
-   1,   3,   0,   1,   3,   1,   1,   1,   1,   2,
-   2,   1,   2,   1,   2,   0,   4,   1,   2,   4,
-   4,   4,   2,   5,   2,   1,   1,   1,   2,   2,
-   2,   0,   0,   9,   3,   2,   1,   4,   2,   3,
-   2,   2,   3,   2,   2,   0,   3,   2,   1,   2,
-   1,   1,   4,   3,   3,   3,   3,   3,   3,   2,
-   2,   2,   3,   4,   1,   3,   4,   2,   2,   2,
-   2,   2,   4,   3,   2,   1,   6,   6,   3,   6,
-   6,   1,   8,   8,   6,   4,   1,   6,   6,   8,
-   8,   8,   6,   1,   1,   4,   1,   2,   0,   1,
-   3,   1,   1,   1,   4
-};
-static	const	short	yychk[] =
-{
--1000, -40,  -1,   2, -29, -28,  10,  15, -12, -11,
- -10, -30,   8,   9,  55,  -2,  12, -18,  13,  -9,
-  -8, -19,  88, 111, -13, 106, 103, 102,  47,  90,
-  49, 109, 110,  96,  59,  61,  91,  98,  79,  92,
- -38,  99,  87,  46,  89,  16,  56,  57,  10,  15,
- -29, -30,  11,  10, -17, -16,  48,  50, -26,  53,
- -22, -23, -30,  62,  63,  97, -14, -25,  15,  52,
-  54,  58, -39,  51,  -2,   2, 100,  77,  78, -30,
- -30, -20,  87,  90,  94, -37, -36,  39,  40,  41,
-  42,  43,  44,  24,  45,  14,  -8,  37,  36, 106,
- -18,  13,  70, 109, 110,  -4,  -2,  16, 102, 103,
- 104, 105, 108,  19,  -8,  -9,  -8,  -8,  -8,  13,
-  13,  -8, -18, -18, -18,  43,  13,  13,  13,  13,
-  13,  13, -45, -11, -17, -35, -34,  10,  18, -16,
- -27, -34,  15, -27,  10, -46,  -2, -27, -16, -17,
- -27, -27,  -2, -27, -27, -48, -35,  13,  13,  -7,
-  -5,  13,  -3, -18,  -9,  -8, -19,  13, -17, -17,
-  13,  -2,  10,  -2,  10,  -2,  -2,  -2,  -2,  -2,
-  -2,  -2, -13,  -2, -19,  96,  -2,  -2,  17, -33,
-  11, -33,  17,  70,  -8,  -8,  -8,  -8,  -8,  -8,
-  -6,  -2,  17,  -6,  17,  -6,  43,  -8,  -2,  -2,
-  -2,  -6, -13,  -2,  -2,  93,  18, -10,  10, -35,
- -16, -27, -24,  80, -31,  18, -27, -16, -15, -19,
- -14,  -2,  14,  38,  41, -33,  -4,  94, -37, -36,
-  24,  45,  -8,  70,  19,  -2,  18,  18, -21,  87,
-  95, -18,  45,  10,  -2,  -2,  -8, -33,  20,  17,
-  17,  -8, -33, -33, -33,  17, -33, -33, -33,  16,
- -30, -47,  10, -16,  10,  15,  45, -32,  17,  -8,
-  -8,  -8,  -3,  13,  17,  -3,  -3,  -3, -13,  -3,
- -19,  -3,  -6, -32, -32, -33,  -2, -19,  -2,  -2,
- -13, -13,  -2, -19,  -2,  -2,  -2, -17, 100, -35,
-  15, -19,  10,  -4,  45,  95,  20, -44,  87,  17,
-  17,  17,  17, -33,  17,  17, -33,  17, -33, -33,
-  17,  18,  13,  -2, -35, -32,  17, -19,  -3, -30,
-  -2, -13, -18, -18,  -2,  -2,  15, -15, -43, -17,
-  17,  17,  17,  17,  17,  17, -35, -32, -16,  18,
- -27, -15, -42, -32, -16, -41, -16
-};
-static	const	short	yydef[] =
-{
-  -2,  -2,   1,   2,  32,  29,  87,  88,  28,  44,
-  35,   0,   0,   0,   0,  34,  22, 173,   0,  76,
-  77, 174, 176,   0,  93,   0,   0,   0, 144,   0,
-   0,   0,   0, 155,   0,   0, 161,   0,   0, 166,
-   0,   0, 181, 182, 183,  95, 130, 131,  89,  90,
-  33,   0,  26,  23,   0, 128,   0,   0, 111,   0,
- 116,   0,   0,   0,   0,   0,   0, 125,  26,   9,
-   0,   0,  82,   0, 105, 106,   0,  85,  86,   0,
-   0,   0,  19,  20,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,  75,   5,   3,   0,
- 173,   0,   0, 150, 151,   0,   0,   0,   0,   0,
-   0,   0,   0,   0, 177,  94, 141, 139, 140,   0,
-   0, 147, 148, 149, 154,   0,   0,   0,   0,   0,
-   0,   0,   0,  45,   0,   0,  27,  24,  39, 129,
- 109, 107,  26, 110,  10,   0,   0, 115, 118,   0,
- 120, 121,   0, 123, 124,   0, 127,  -2,   0, 102,
-  83,   0,  80, 173,  57,  58, 104,   0,   0,   0,
- 178,   0,   6,  61,   4,  62,  -2,  -2,  -2,  -2,
-  -2,  -2,  69,  -2,  71,  74,   0,  59,   0,   0,
-   7,   0, 158,   0, 136, 133, 134, 135, 137, 138,
-   0,  46, 142,   0, 145,   0,   0, 153,   0,   0,
-   0,   0,  93,   0,   0,   0,  36,  37,  25, 108,
- 112, 114,   0,  11, 119,  91, 122, 126,   0, 174,
-  31,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,  56,   0,   0,   0,  40,  41,   0, 179,
-   0,  73,   0,   8,  79,  78, 132,   0, 175, 143,
- 146, 152,   0,   0,   0, 165,   0,   0,   0,  96,
-   0,   0,  12, 117,  92,  26,   0,  21,  97,  99,
- 100, 101,  81,   0,  84,   0,  50,  51,  52,  -2,
-  54,  48,   0, 184,  42,   0,  60,  72,  47,   0,
-  93,  93,   0,   0,   0,   0,   0,   0,   0,   0,
-  26,   0,  98,   0,   0,   0, 103,   0, 180, 156,
- 157, 159, 160,   0, 164, 167,   0, 168,   0,   0,
- 172,  38,   0,   0,  -2,  17,   0,  55,  49,   0,
-   0,  93,   0,   0,   0,   0,  26,   0,   0,   0,
- 162, 163, 169, 170, 171,   0,  -2,  15,  18,  43,
- 113,   0,   0,  13,  16,   0,  14
-};
-static	const	short	yytok1[] =
-{
-   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0, 105,   0,   0,
-  13,  17, 104, 102,  11, 103,   0,  16,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,  95,  15,
-   0,   0,   0,  94,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,  19,   0,  20,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-   0,   0,   0,  12,  14,  18
-};
-static	const	short	yytok2[] =
-{
-   2,   3,   4,   5,   6,   7,   8,   9,  10,  21,
-  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
-  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,
-  42,  43,  44,  45,  46,  47,  48,  49,  50,  51,
-  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,
-  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,
-  72,  73,  74,  75,  76,  77,  78,  79,  80,  81,
-  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,
-  92,  93,  96,  97,  98,  99, 100, 101, 106, 107,
- 108, 109, 110, 111, 112
-};
-static	const	long	yytok3[] =
-{
-   0
-};
-#define YYFLAG 		-1000
-#define YYERROR		goto yyerrlab
-#define YYACCEPT	return(0)
-#define YYABORT		return(1)
-#define	yyclearin	yychar = -1
-#define	yyerrok		yyerrflag = 0
-
-#ifdef	yydebug
-#include	"y.debug"
-#else
-#define	yydebug		0
-static	const	char*	yytoknames[1];		/* for debugging */
-static	const	char*	yystates[1];		/* for debugging */
-#endif
-
-/*	parser for yacc output	*/
-#ifdef YYARG
-#define	yynerrs		yyarg->yynerrs
-#define	yyerrflag	yyarg->yyerrflag
-#define yyval		yyarg->yyval
-#define yylval		yyarg->yylval
-#else
-int	yynerrs = 0;		/* number of errors */
-int	yyerrflag = 0;		/* error recovery flag */
-#endif
-
-static const char*
-yytokname(int yyc)
-{
-	static char x[10];
-
-	if(yyc > 0 && yyc <= sizeof(yytoknames)/sizeof(yytoknames[0]))
-	if(yytoknames[yyc-1])
-		return yytoknames[yyc-1];
-	sprintf(x, "<%d>", yyc);
-	return x;
-}
-
-static const char*
-yystatname(int yys)
-{
-	static char x[10];
-
-	if(yys >= 0 && yys < sizeof(yystates)/sizeof(yystates[0]))
-	if(yystates[yys])
-		return yystates[yys];
-	sprintf(x, "<%d>\n", yys);
-	return x;
-}
-
-static long
-#ifdef YYARG
-yylex1(struct Yyarg *yyarg)
-#else
-yylex1(void)
-#endif
-{
-	long yychar;
-	const long *t3p;
-	int c;
-
-#ifdef YYARG	
-	yychar = yylex(yyarg);
-#else
-	yychar = yylex();
-#endif
-	if(yychar <= 0) {
-		c = yytok1[0];
-		goto out;
-	}
-	if(yychar < sizeof(yytok1)/sizeof(yytok1[0])) {
-		c = yytok1[yychar];
-		goto out;
-	}
-	if(yychar >= YYPRIVATE)
-		if(yychar < YYPRIVATE+sizeof(yytok2)/sizeof(yytok2[0])) {
-			c = yytok2[yychar-YYPRIVATE];
-			goto out;
-		}
-	for(t3p=yytok3;; t3p+=2) {
-		c = t3p[0];
-		if(c == yychar) {
-			c = t3p[1];
-			goto out;
-		}
-		if(c == 0)
-			break;
-	}
-	c = 0;
-
-out:
-	if(c == 0)
-		c = yytok2[1];	/* unknown char */
-	if(yydebug >= 3)
-		printf("lex %.4lX %s\n", yychar, yytokname(c));
-	return c;
-}
-
-int
-#ifdef YYARG
-yyparse(struct Yyarg *yyarg)
-#else
-yyparse(void)
-#endif
-{
-	struct
-	{
-		YYSTYPE	yyv;
-		int	yys;
-	} yys[YYMAXDEPTH], *yyp, *yypt;
-	const short *yyxi;
-	int yyj, yym, yystate, yyn, yyg;
-	long yychar;
-#ifndef YYARG
-	YYSTYPE save1, save2;
-	int save3, save4;
-
-	save1 = yylval;
-	save2 = yyval;
-	save3 = yynerrs;
-	save4 = yyerrflag;
-#endif
-
-	yystate = 0;
-	yychar = -1;
-	yynerrs = 0;
-	yyerrflag = 0;
-	yyp = &yys[-1];
-	goto yystack;
-
-ret0:
-	yyn = 0;
-	goto ret;
-
-ret1:
-	yyn = 1;
-	goto ret;
-
-ret:
-#ifndef YYARG
-	yylval = save1;
-	yyval = save2;
-	yynerrs = save3;
-	yyerrflag = save4;
-#endif
-	return yyn;
-
-yystack:
-	/* put a state and value onto the stack */
-	if(yydebug >= 4)
-		printf("char %s in %s", yytokname(yychar), yystatname(yystate));
-
-	yyp++;
-	if(yyp >= &yys[YYMAXDEPTH]) {
-		yyerror("yacc stack overflow");
-		goto ret1;
-	}
-	yyp->yys = yystate;
-	yyp->yyv = yyval;
-
-yynewstate:
-	yyn = yypact[yystate];
-	if(yyn <= YYFLAG)
-		goto yydefault; /* simple state */
-	if(yychar < 0)
-#ifdef YYARG
-		yychar = yylex1(yyarg);
-#else
-		yychar = yylex1();
-#endif
-	yyn += yychar;
-	if(yyn < 0 || yyn >= YYLAST)
-		goto yydefault;
-	yyn = yyact[yyn];
-	if(yychk[yyn] == yychar) { /* valid shift */
-		yychar = -1;
-		yyval = yylval;
-		yystate = yyn;
-		if(yyerrflag > 0)
-			yyerrflag--;
-		goto yystack;
-	}
-
-yydefault:
-	/* default state action */
-	yyn = yydef[yystate];
-	if(yyn == -2) {
-		if(yychar < 0)
-#ifdef YYARG
-		yychar = yylex1(yyarg);
-#else
-		yychar = yylex1();
-#endif
-
-		/* look through exception table */
-		for(yyxi=yyexca;; yyxi+=2)
-			if(yyxi[0] == -1 && yyxi[1] == yystate)
-				break;
-		for(yyxi += 2;; yyxi += 2) {
-			yyn = yyxi[0];
-			if(yyn < 0 || yyn == yychar)
-				break;
-		}
-		yyn = yyxi[1];
-		if(yyn < 0)
-			goto ret0;
-	}
-	if(yyn == 0) {
-		/* error ... attempt to resume parsing */
-		switch(yyerrflag) {
-		case 0:   /* brand new error */
-			yyerror("syntax error");
-			if(yydebug >= 1) {
-				printf("%s", yystatname(yystate));
-				printf("saw %s\n", yytokname(yychar));
-			}
-			goto yyerrlab;
-		yyerrlab:
-			yynerrs++;
-
-		case 1:
-		case 2: /* incompletely recovered error ... try again */
-			yyerrflag = 3;
-
-			/* find a state where "error" is a legal shift action */
-			while(yyp >= yys) {
-				yyn = yypact[yyp->yys] + YYERRCODE;
-				if(yyn >= 0 && yyn < YYLAST) {
-					yystate = yyact[yyn];  /* simulate a shift of "error" */
-					if(yychk[yystate] == YYERRCODE)
-						goto yystack;
-				}
-
-				/* the current yyp has no shift onn "error", pop stack */
-				if(yydebug >= 2)
-					printf("error recovery pops state %d, uncovers %d\n",
-						yyp->yys, (yyp-1)->yys );
-				yyp--;
-			}
-			/* there is no state on the stack with an error shift ... abort */
-			goto ret1;
-
-		case 3:  /* no shift yet; clobber input char */
-			if(yydebug >= YYEOFCODE)
-				printf("error recovery discards %s\n", yytokname(yychar));
-			if(yychar == YYEOFCODE)
-				goto ret1;
-			yychar = -1;
-			goto yynewstate;   /* try again in the same state */
-		}
-	}
-
-	/* reduction by production yyn */
-	if(yydebug >= 2)
-		printf("reduce %d in:\n\t%s", yyn, yystatname(yystate));
-
-	yypt = yyp;
-	yyp -= yyr2[yyn];
-	yyval = (yyp+1)->yyv;
-	yym = yyn;
-
-	/* consult goto table to find next state */
-	yyn = yyr1[yyn];
-	yyg = yypgo[yyn];
-	yyj = yyg + yyp->yys + 1;
-
-	if(yyj >= YYLAST || yychk[yystate=yyact[yyj]] != -yyn)
-		yystate = yyact[yyg];
-	switch(yym) {
-		
-case 1:
-#line	98	"/n/fs/fac/bwk/awk/awkgram.y"
-{ if (errorflag==0)
-			winner = (Node *)stat3(PROGRAM, beginloc, yypt[-0].yyv.p, endloc); } break;
-case 2:
-#line	100	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyclearin; bracecheck(); SYNTAX("bailing out"); } break;
-case 13:
-#line	124	"/n/fs/fac/bwk/awk/awkgram.y"
-{inloop++;} break;
-case 14:
-#line	125	"/n/fs/fac/bwk/awk/awkgram.y"
-{ --inloop; yyval.p = stat4(FOR, yypt[-9].yyv.p, notnull(yypt[-6].yyv.p), yypt[-3].yyv.p, yypt[-0].yyv.p); } break;
-case 15:
-#line	126	"/n/fs/fac/bwk/awk/awkgram.y"
-{inloop++;} break;
-case 16:
-#line	127	"/n/fs/fac/bwk/awk/awkgram.y"
-{ --inloop; yyval.p = stat4(FOR, yypt[-7].yyv.p, NIL, yypt[-3].yyv.p, yypt[-0].yyv.p); } break;
-case 17:
-#line	128	"/n/fs/fac/bwk/awk/awkgram.y"
-{inloop++;} break;
-case 18:
-#line	129	"/n/fs/fac/bwk/awk/awkgram.y"
-{ --inloop; yyval.p = stat3(IN, yypt[-5].yyv.p, makearr(yypt[-3].yyv.p), yypt[-0].yyv.p); } break;
-case 19:
-#line	133	"/n/fs/fac/bwk/awk/awkgram.y"
-{ setfname(yypt[-0].yyv.cp); } break;
-case 20:
-#line	134	"/n/fs/fac/bwk/awk/awkgram.y"
-{ setfname(yypt[-0].yyv.cp); } break;
-case 21:
-#line	138	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = notnull(yypt[-1].yyv.p); } break;
-case 26:
-#line	150	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.i = 0; } break;
-case 28:
-#line	155	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.i = 0; } break;
-case 30:
-#line	161	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = 0; } break;
-case 32:
-#line	166	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = 0; } break;
-case 33:
-#line	167	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = yypt[-1].yyv.p; } break;
-case 34:
-#line	171	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = notnull(yypt[-0].yyv.p); } break;
-case 35:
-#line	175	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat2(PASTAT, yypt[-0].yyv.p, stat2(PRINT, rectonode(), NIL)); } break;
-case 36:
-#line	176	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat2(PASTAT, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
-case 37:
-#line	177	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = pa2stat(yypt[-3].yyv.p, yypt[-0].yyv.p, stat2(PRINT, rectonode(), NIL)); } break;
-case 38:
-#line	178	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = pa2stat(yypt[-6].yyv.p, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
-case 39:
-#line	179	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat2(PASTAT, NIL, yypt[-1].yyv.p); } break;
-case 40:
-#line	181	"/n/fs/fac/bwk/awk/awkgram.y"
-{ beginloc = linkum(beginloc, yypt[-1].yyv.p); yyval.p = 0; } break;
-case 41:
-#line	183	"/n/fs/fac/bwk/awk/awkgram.y"
-{ endloc = linkum(endloc, yypt[-1].yyv.p); yyval.p = 0; } break;
-case 42:
-#line	184	"/n/fs/fac/bwk/awk/awkgram.y"
-{infunc++;} break;
-case 43:
-#line	185	"/n/fs/fac/bwk/awk/awkgram.y"
-{ infunc--; curfname=0; defn((Cell *)yypt[-7].yyv.p, yypt[-5].yyv.p, yypt[-1].yyv.p); yyval.p = 0; } break;
-case 45:
-#line	190	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 47:
-#line	195	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 48:
-#line	199	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 49:
-#line	201	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op3(CONDEXPR, notnull(yypt[-4].yyv.p), yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 50:
-#line	203	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(BOR, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break;
-case 51:
-#line	205	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(AND, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break;
-case 52:
-#line	206	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op3(yypt[-1].yyv.i, NIL, yypt[-2].yyv.p, (Node*)makedfa(yypt[-0].yyv.s, 0)); } break;
-case 53:
-#line	208	"/n/fs/fac/bwk/awk/awkgram.y"
-{ if (constnode(yypt[-0].yyv.p))
-			yyval.p = op3(yypt[-1].yyv.i, NIL, yypt[-2].yyv.p, (Node*)makedfa(strnode(yypt[-0].yyv.p), 0));
-		  else
-			yyval.p = op3(yypt[-1].yyv.i, (Node *)1, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 54:
-#line	212	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(INTEST, yypt[-2].yyv.p, makearr(yypt[-0].yyv.p)); } break;
-case 55:
-#line	213	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(INTEST, yypt[-3].yyv.p, makearr(yypt[-0].yyv.p)); } break;
-case 56:
-#line	214	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(CAT, yypt[-1].yyv.p, yypt[-0].yyv.p); } break;
-case 59:
-#line	220	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 60:
-#line	222	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op3(CONDEXPR, notnull(yypt[-4].yyv.p), yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 61:
-#line	224	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(BOR, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break;
-case 62:
-#line	226	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(AND, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break;
-case 63:
-#line	227	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 64:
-#line	228	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 65:
-#line	229	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 66:
-#line	230	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 67:
-#line	231	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 68:
-#line	232	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 69:
-#line	233	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op3(yypt[-1].yyv.i, NIL, yypt[-2].yyv.p, (Node*)makedfa(yypt[-0].yyv.s, 0)); } break;
-case 70:
-#line	235	"/n/fs/fac/bwk/awk/awkgram.y"
-{ if (constnode(yypt[-0].yyv.p))
-			yyval.p = op3(yypt[-1].yyv.i, NIL, yypt[-2].yyv.p, (Node*)makedfa(strnode(yypt[-0].yyv.p), 0));
-		  else
-			yyval.p = op3(yypt[-1].yyv.i, (Node *)1, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 71:
-#line	239	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(INTEST, yypt[-2].yyv.p, makearr(yypt[-0].yyv.p)); } break;
-case 72:
-#line	240	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(INTEST, yypt[-3].yyv.p, makearr(yypt[-0].yyv.p)); } break;
-case 73:
-#line	241	"/n/fs/fac/bwk/awk/awkgram.y"
-{ 
-			if (safe) SYNTAX("cmd | getline is unsafe");
-			else yyval.p = op3(GETLINE, yypt[-0].yyv.p, itonp(yypt[-2].yyv.i), yypt[-3].yyv.p); } break;
-case 74:
-#line	244	"/n/fs/fac/bwk/awk/awkgram.y"
-{ 
-			if (safe) SYNTAX("cmd | getline is unsafe");
-			else yyval.p = op3(GETLINE, (Node*)0, itonp(yypt[-1].yyv.i), yypt[-2].yyv.p); } break;
-case 75:
-#line	247	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(CAT, yypt[-1].yyv.p, yypt[-0].yyv.p); } break;
-case 78:
-#line	253	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 79:
-#line	254	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 81:
-#line	259	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 82:
-#line	263	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = rectonode(); } break;
-case 84:
-#line	265	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = yypt[-1].yyv.p; } break;
-case 93:
-#line	282	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op3(MATCH, NIL, rectonode(), (Node*)makedfa(yypt[-0].yyv.s, 0)); } break;
-case 94:
-#line	283	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(NOT, notnull(yypt[-0].yyv.p)); } break;
-case 95:
-#line	287	"/n/fs/fac/bwk/awk/awkgram.y"
-{startreg();} break;
-case 96:
-#line	287	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.s = yypt[-1].yyv.s; } break;
-case 99:
-#line	295	"/n/fs/fac/bwk/awk/awkgram.y"
-{ 
-			if (safe) SYNTAX("print | is unsafe");
-			else yyval.p = stat3(yypt[-3].yyv.i, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
-case 100:
-#line	298	"/n/fs/fac/bwk/awk/awkgram.y"
-{
-			if (safe) SYNTAX("print >> is unsafe");
-			else yyval.p = stat3(yypt[-3].yyv.i, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
-case 101:
-#line	301	"/n/fs/fac/bwk/awk/awkgram.y"
-{
-			if (safe) SYNTAX("print > is unsafe");
-			else yyval.p = stat3(yypt[-3].yyv.i, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
-case 102:
-#line	304	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat3(yypt[-1].yyv.i, yypt[-0].yyv.p, NIL, NIL); } break;
-case 103:
-#line	305	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat2(DELETE, makearr(yypt[-3].yyv.p), yypt[-1].yyv.p); } break;
-case 104:
-#line	306	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat2(DELETE, makearr(yypt[-0].yyv.p), 0); } break;
-case 105:
-#line	307	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = exptostat(yypt[-0].yyv.p); } break;
-case 106:
-#line	308	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyclearin; SYNTAX("illegal statement"); } break;
-case 109:
-#line	317	"/n/fs/fac/bwk/awk/awkgram.y"
-{ if (!inloop) SYNTAX("break illegal outside of loops");
-				  yyval.p = stat1(BREAK, NIL); } break;
-case 110:
-#line	319	"/n/fs/fac/bwk/awk/awkgram.y"
-{  if (!inloop) SYNTAX("continue illegal outside of loops");
-				  yyval.p = stat1(CONTINUE, NIL); } break;
-case 111:
-#line	321	"/n/fs/fac/bwk/awk/awkgram.y"
-{inloop++;} break;
-case 112:
-#line	321	"/n/fs/fac/bwk/awk/awkgram.y"
-{--inloop;} break;
-case 113:
-#line	322	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat2(DO, yypt[-6].yyv.p, notnull(yypt[-2].yyv.p)); } break;
-case 114:
-#line	323	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat1(EXIT, yypt[-1].yyv.p); } break;
-case 115:
-#line	324	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat1(EXIT, NIL); } break;
-case 117:
-#line	326	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat3(IF, yypt[-3].yyv.p, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 118:
-#line	327	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat3(IF, yypt[-1].yyv.p, yypt[-0].yyv.p, NIL); } break;
-case 119:
-#line	328	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = yypt[-1].yyv.p; } break;
-case 120:
-#line	329	"/n/fs/fac/bwk/awk/awkgram.y"
-{ if (infunc)
-				SYNTAX("next is illegal inside a function");
-			  yyval.p = stat1(NEXT, NIL); } break;
-case 121:
-#line	332	"/n/fs/fac/bwk/awk/awkgram.y"
-{ if (infunc)
-				SYNTAX("nextfile is illegal inside a function");
-			  yyval.p = stat1(NEXTFILE, NIL); } break;
-case 122:
-#line	335	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat1(RETURN, yypt[-1].yyv.p); } break;
-case 123:
-#line	336	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = stat1(RETURN, NIL); } break;
-case 125:
-#line	338	"/n/fs/fac/bwk/awk/awkgram.y"
-{inloop++;} break;
-case 126:
-#line	338	"/n/fs/fac/bwk/awk/awkgram.y"
-{ --inloop; yyval.p = stat2(WHILE, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 127:
-#line	339	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = 0; } break;
-case 129:
-#line	344	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = linkum(yypt[-1].yyv.p, yypt[-0].yyv.p); } break;
-case 132:
-#line	352	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(DIVEQ, yypt[-3].yyv.p, yypt[-0].yyv.p); } break;
-case 133:
-#line	353	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(ADD, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 134:
-#line	354	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(MINUS, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 135:
-#line	355	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(MULT, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 136:
-#line	356	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(DIVIDE, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 137:
-#line	357	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(MOD, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 138:
-#line	358	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(POWER, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
-case 139:
-#line	359	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(UMINUS, yypt[-0].yyv.p); } break;
-case 140:
-#line	360	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = yypt[-0].yyv.p; } break;
-case 141:
-#line	361	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(NOT, notnull(yypt[-0].yyv.p)); } break;
-case 142:
-#line	362	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(BLTIN, itonp(yypt[-2].yyv.i), rectonode()); } break;
-case 143:
-#line	363	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(BLTIN, itonp(yypt[-3].yyv.i), yypt[-1].yyv.p); } break;
-case 144:
-#line	364	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(BLTIN, itonp(yypt[-0].yyv.i), rectonode()); } break;
-case 145:
-#line	365	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(CALL, celltonode(yypt[-2].yyv.cp,CVAR), NIL); } break;
-case 146:
-#line	366	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(CALL, celltonode(yypt[-3].yyv.cp,CVAR), yypt[-1].yyv.p); } break;
-case 147:
-#line	367	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(CLOSE, yypt[-0].yyv.p); } break;
-case 148:
-#line	368	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(PREDECR, yypt[-0].yyv.p); } break;
-case 149:
-#line	369	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(PREINCR, yypt[-0].yyv.p); } break;
-case 150:
-#line	370	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(POSTDECR, yypt[-1].yyv.p); } break;
-case 151:
-#line	371	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(POSTINCR, yypt[-1].yyv.p); } break;
-case 152:
-#line	372	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op3(GETLINE, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
-case 153:
-#line	373	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op3(GETLINE, NIL, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
-case 154:
-#line	374	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op3(GETLINE, yypt[-0].yyv.p, NIL, NIL); } break;
-case 155:
-#line	375	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op3(GETLINE, NIL, NIL, NIL); } break;
-case 156:
-#line	377	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(INDEX, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
-case 157:
-#line	379	"/n/fs/fac/bwk/awk/awkgram.y"
-{ SYNTAX("index() doesn't permit regular expressions");
-		  yyval.p = op2(INDEX, yypt[-3].yyv.p, (Node*)yypt[-1].yyv.s); } break;
-case 158:
-#line	381	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = yypt[-1].yyv.p; } break;
-case 159:
-#line	383	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op3(MATCHFCN, NIL, yypt[-3].yyv.p, (Node*)makedfa(yypt[-1].yyv.s, 1)); } break;
-case 160:
-#line	385	"/n/fs/fac/bwk/awk/awkgram.y"
-{ if (constnode(yypt[-1].yyv.p))
-			yyval.p = op3(MATCHFCN, NIL, yypt[-3].yyv.p, (Node*)makedfa(strnode(yypt[-1].yyv.p), 1));
-		  else
-			yyval.p = op3(MATCHFCN, (Node *)1, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
-case 161:
-#line	389	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = celltonode(yypt[-0].yyv.cp, CCON); } break;
-case 162:
-#line	391	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op4(SPLIT, yypt[-5].yyv.p, makearr(yypt[-3].yyv.p), yypt[-1].yyv.p, (Node*)STRING); } break;
-case 163:
-#line	393	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op4(SPLIT, yypt[-5].yyv.p, makearr(yypt[-3].yyv.p), (Node*)makedfa(yypt[-1].yyv.s, 1), (Node *)REGEXPR); } break;
-case 164:
-#line	395	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op4(SPLIT, yypt[-3].yyv.p, makearr(yypt[-1].yyv.p), NIL, (Node*)STRING); } break;
-case 165:
-#line	396	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(yypt[-3].yyv.i, yypt[-1].yyv.p); } break;
-case 166:
-#line	397	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = celltonode(yypt[-0].yyv.cp, CCON); } break;
-case 167:
-#line	399	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op4(yypt[-5].yyv.i, NIL, (Node*)makedfa(yypt[-3].yyv.s, 1), yypt[-1].yyv.p, rectonode()); } break;
-case 168:
-#line	401	"/n/fs/fac/bwk/awk/awkgram.y"
-{ if (constnode(yypt[-3].yyv.p))
-			yyval.p = op4(yypt[-5].yyv.i, NIL, (Node*)makedfa(strnode(yypt[-3].yyv.p), 1), yypt[-1].yyv.p, rectonode());
-		  else
-			yyval.p = op4(yypt[-5].yyv.i, (Node *)1, yypt[-3].yyv.p, yypt[-1].yyv.p, rectonode()); } break;
-case 169:
-#line	406	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op4(yypt[-7].yyv.i, NIL, (Node*)makedfa(yypt[-5].yyv.s, 1), yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
-case 170:
-#line	408	"/n/fs/fac/bwk/awk/awkgram.y"
-{ if (constnode(yypt[-5].yyv.p))
-			yyval.p = op4(yypt[-7].yyv.i, NIL, (Node*)makedfa(strnode(yypt[-5].yyv.p), 1), yypt[-3].yyv.p, yypt[-1].yyv.p);
-		  else
-			yyval.p = op4(yypt[-7].yyv.i, (Node *)1, yypt[-5].yyv.p, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
-case 171:
-#line	413	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op3(SUBSTR, yypt[-5].yyv.p, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
-case 172:
-#line	415	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op3(SUBSTR, yypt[-3].yyv.p, yypt[-1].yyv.p, NIL); } break;
-case 175:
-#line	421	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op2(ARRAY, makearr(yypt[-3].yyv.p), yypt[-1].yyv.p); } break;
-case 176:
-#line	422	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(INDIRECT, celltonode(yypt[-0].yyv.cp, CVAR)); } break;
-case 177:
-#line	423	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(INDIRECT, yypt[-0].yyv.p); } break;
-case 178:
-#line	427	"/n/fs/fac/bwk/awk/awkgram.y"
-{ arglist = yyval.p = 0; } break;
-case 179:
-#line	428	"/n/fs/fac/bwk/awk/awkgram.y"
-{ arglist = yyval.p = celltonode(yypt[-0].yyv.cp,CVAR); } break;
-case 180:
-#line	429	"/n/fs/fac/bwk/awk/awkgram.y"
-{
-			checkdup(yypt[-2].yyv.p, yypt[-0].yyv.cp);
-			arglist = yyval.p = linkum(yypt[-2].yyv.p,celltonode(yypt[-0].yyv.cp,CVAR)); } break;
-case 181:
-#line	435	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = celltonode(yypt[-0].yyv.cp, CVAR); } break;
-case 182:
-#line	436	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(ARG, itonp(yypt[-0].yyv.i)); } break;
-case 183:
-#line	437	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = op1(VARNF, (Node *) yypt[-0].yyv.cp); } break;
-case 184:
-#line	442	"/n/fs/fac/bwk/awk/awkgram.y"
-{ yyval.p = notnull(yypt[-1].yyv.p); } break;
-	}
-	goto yystack;  /* stack new state and value */
-}
diff --git a/ytabh.bak b/ytabh.bak
deleted file mode 100644
index 8a366ba..0000000
--- a/ytabh.bak
+++ /dev/null
@@ -1,101 +0,0 @@
-
-typedef union  {
-	Node	*p;
-	Cell	*cp;
-	int	i;
-	char	*s;
-}	YYSTYPE;
-extern	YYSTYPE	yylval;
-#define	FIRSTTOKEN	57346
-#define	PROGRAM	57347
-#define	PASTAT	57348
-#define	PASTAT2	57349
-#define	XBEGIN	57350
-#define	XEND	57351
-#define	NL	57352
-#define	ARRAY	57353
-#define	MATCH	57354
-#define	NOTMATCH	57355
-#define	MATCHOP	57356
-#define	FINAL	57357
-#define	DOT	57358
-#define	ALL	57359
-#define	CCL	57360
-#define	NCCL	57361
-#define	CHAR	57362
-#define	OR	57363
-#define	STAR	57364
-#define	QUEST	57365
-#define	PLUS	57366
-#define	EMPTYRE	57367
-#define	AND	57368
-#define	BOR	57369
-#define	APPEND	57370
-#define	EQ	57371
-#define	GE	57372
-#define	GT	57373
-#define	LE	57374
-#define	LT	57375
-#define	NE	57376
-#define	IN	57377
-#define	ARG	57378
-#define	BLTIN	57379
-#define	BREAK	57380
-#define	CLOSE	57381
-#define	CONTINUE	57382
-#define	DELETE	57383
-#define	DO	57384
-#define	EXIT	57385
-#define	FOR	57386
-#define	FUNC	57387
-#define	SUB	57388
-#define	GSUB	57389
-#define	IF	57390
-#define	INDEX	57391
-#define	LSUBSTR	57392
-#define	MATCHFCN	57393
-#define	NEXT	57394
-#define	NEXTFILE	57395
-#define	ADD	57396
-#define	MINUS	57397
-#define	MULT	57398
-#define	DIVIDE	57399
-#define	MOD	57400
-#define	ASSIGN	57401
-#define	ASGNOP	57402
-#define	ADDEQ	57403
-#define	SUBEQ	57404
-#define	MULTEQ	57405
-#define	DIVEQ	57406
-#define	MODEQ	57407
-#define	POWEQ	57408
-#define	PRINT	57409
-#define	PRINTF	57410
-#define	SPRINTF	57411
-#define	ELSE	57412
-#define	INTEST	57413
-#define	CONDEXPR	57414
-#define	POSTINCR	57415
-#define	PREINCR	57416
-#define	POSTDECR	57417
-#define	PREDECR	57418
-#define	VAR	57419
-#define	IVAR	57420
-#define	VARNF	57421
-#define	CALL	57422
-#define	NUMBER	57423
-#define	STRING	57424
-#define	REGEXPR	57425
-#define	GETLINE	57426
-#define	RETURN	57427
-#define	SPLIT	57428
-#define	SUBSTR	57429
-#define	WHILE	57430
-#define	CAT	57431
-#define	NOT	57432
-#define	UMINUS	57433
-#define	POWER	57434
-#define	DECR	57435
-#define	INCR	57436
-#define	INDIRECT	57437
-#define	LASTTOKEN	57438