Plan 9 from Bell Labs’s /usr/web/sources/contrib/quanstro/root/sys/src/cmd/awk/awkgram.c

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.



#line	26	"/sys/src/cmd/awk/awkgram.y"
#include <stdio.h>
#include <string.h>
#include "awk.h"

#define	makedfa(a,b)	compre(a)

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	43	"/sys/src/cmd/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	447	"/sys/src/cmd/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;
		}
	}
}
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, 333,
	17, 30,
	-2, 0,
-1, 355,
	17, 30,
	-2, 0,
};
#define	YYNPROD	185
#define	YYPRIVATE 57344
#define	YYLAST	4474
short	yyact[] =
{
  17, 277, 138,  66, 243, 228, 125,  54,  24,  43,
 103, 104, 200, 112,  43, 308, 100, 139, 185, 155,
 215, 253, 253, 249, 100, 102, 100, 100, 100, 223,
 105, 100, 122, 123, 124,  82, 107,  10,  83, 314,
 162,  43, 253, 103, 104,   9, 107, 252, 206, 269,
  42,  22,  44, 244, 190,  42,  22,  44,  43, 134,
 142, 113, 146, 316, 103, 104, 149, 150, 152, 153,
 148, 278, 190, 163,  23, 100, 352, 113,  43,  23,
  62, 258,  42, 351,  44,  11, 156, 168, 169,  85,
 135,  51, 350,  79,  80, 321, 133,  86, 318,  42,
 100,  44, 182, 276, 320, 275, 331, 100, 100, 100,
 100, 100, 100, 100, 170, 167,  16, 232, 158,  42,
  22,  44, 108, 109, 110, 111, 100, 157, 112, 131,
 190,  11, 203, 205, 110, 111, 335, 130, 112, 212,
 129, 233, 211,  23, 234, 190, 100, 190, 221, 190,
 190, 324, 100, 278, 226, 284, 265, 128, 156, 190,
 219, 230, 190, 100, 190, 260, 141, 127, 259, 190,
 188, 140, 100, 126, 100, 120, 100, 100, 100, 100,
 100, 100, 100,   3, 100, 141, 251, 100, 100, 119,
 310,   6, 236,   6, 100,  48,   7, 312,   7, 141,
  49,  19, 100,  52,  16, 274, 218, 100, 143, 100,
 100, 100,   4, 154, 100, 100, 217, 271, 144, 132,
 317,  50, 347, 361, 364, 270,   1, 115,  72,  40,
 224,   5, 100, 100, 100, 100, 163,  58, 163, 163,
 163, 163,  20,  67, 163, 222, 100, 293,  61, 288,
 294,  60, 238, 248,  81, 100, 100, 292,  96,   8,
 239, 159, 160,   2,   0,   0, 114,   0, 116, 117,
 118, 300, 301, 121, 164,   0, 282,   0, 285, 286,
 287, 289,   0, 100, 291,   0, 100, 100, 100,   0,
 100,   0, 100, 156,   0, 309,   0, 100,   0, 100,
 100,   0,   0, 100,   0, 100, 100, 100,   0,   0,
   0,   0,   0, 334, 313, 165, 163,  96,   0,   0,
   0,   0,   0,   0,   0,   0,   0, 341, 156, 342,
 333,   0, 340, 100,   0,   0,   0, 230, 100, 346,
 100,   0, 116,   0, 100, 100, 348,   0, 356,  96,
 194, 195, 196, 197, 198, 199, 337, 359,   0, 230,
   0, 360, 362, 156,   0, 355,   0,   0, 207,   0,
   0,   0, 238,   0,   0, 238, 238, 238,   0, 238,
 239, 238,   0, 239, 239, 239,   0, 239,  96, 239,
   0,   0,  21,   0,  96,   0,   0,   0, 338,   0,
   0,   0,   0,   0, 257, 242,   0,   0,  55,   0,
   0,   0,   0,   0,  96,   0,  96,   0,  96,  96,
  96,  96,  96,  96,  96,   0,  96, 238,   0,  96,
  96,   0,   0,   0,   0, 239, 256, 164,   0, 164,
 164, 164, 164,   0,  96, 164,   0,   0,   0, 261,
   0,  96,  96,  96,   0,   0,  96,  96,   0,   0,
   0,   0,   0, 137,   0,   0, 166,   0,   0,   0,
 147,   0,   0,   0,  96, 279, 280, 281, 165,   0,
 165, 165, 165, 165,   0,   0, 165, 184,  96,   0,
   0,   0,   0,   0,   0,   0,   0,  96,  96,   0,
   0,   0,   0,   0,   0,   0,   0,   0,  74,   0,
 189, 191,   0,  15,   0,   0,   0, 164,   0,   0,
   0,   0,   0,   0,   0, 242,   0, 106, 242, 242,
 242,   0, 242,   0, 242,   0,   0,   0,   0,  96,
   0,  96,  96, 137,   0,  96,   0,  96,  96,  96,
 229,   0,   0, 220,   0,   0,   0, 137, 165,  15,
   0,  15,   0, 227,   0, 235,   0,   0, 145,   0,
   0,   0,   0,   0, 151,  96,   0, 137, 137,   0,
 242,   0,  96,   0,   0,   0,  96,  96,   0,   0,
   0,   0,   0, 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, 273,   0,   0, 290, 208, 209, 210, 201, 213,
 214, 189,   0,   0,   0, 297,   0,   0, 101,   0,
   0,   0,   0, 295,   0,   0,   0, 303,   0, 240,
   0,   0,   0,   0,   0,   0,   0, 231,   0, 311,
 106,  98,  97,   0,   0,   0, 245,   0,   0, 137,
 241,  43,  28,   0,  30,   0,   0,   0,   0,   0,
   0,  46,  47,   0,  34,   0,  35,   0, 254,   0,
 255,   0,   0,   0,   0,   0,   0, 336, 323, 326,
 328, 329,   0,   0,  38,   0,   0,   0, 189,   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,   0,   0,
   0,   0,   0, 201,   0,   0, 357, 137,   0, 296,
   0,   0,   0,   0,   0,   0, 298,   0,   0,   0,
 363, 299, 302, 365,   0, 304, 305, 306,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0, 106,   0,   0,   0,   0,  75,   0,   0,
   0,   0,   0,   0,   0,   0,   0,  16,  18,   0,
  68,  45,   0, 358,   0,   0,   0,   0, 332,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0, 339,   0,   0,   0,   0,   0, 343,   0,
 344,  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, 307,  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, 136,  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, 330,
   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,
 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, 141,   0,   0, 101,
  95, 140,   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, 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, 353,  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, 349,  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, 345,   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,  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,   0,   0,  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, 141,   0,   0,  18,   0, 140,  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
};
short	yypact[] =
{
 181,-1000,-1000,-1000,3296, 185,-1000,-1000, 183,-1000,
 192, 865, 104, 104, -52,2929,-1000, -45,4014,-1000,
  20,  42,-1000,4304,-1000,4246,4304,4304, 176, 162,
4304, -32, -32, -37, 160, 154,-1000, 144, 127,-1000,
 124, 116,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
3296, 865,4014,-1000,1343,-1000, 156, 156, 198,3423,
-1000,1411, 865, 156, 156,3423, 156,-1000, 189,-1000,
 114, 105,4188,  -5,2929,-1000, 102,-1000,-1000, 865,
 865, 101,-1000,-1000,4014,3956,3898,4014,4014,4014,
4014,4014,4014,4014,  -5, -78,  20,-1000,-1000,4304,
 -99,4014,4014,-1000,-1000, 153,1917,4130,4304,4304,
4304,4304,4304,4014,-1000,-1000, -95, -95, -95,3840,
3782,  20,-1000,-1000,   5,4304,4014,4014,4014,4014,
4014,4014, -73,-1000,1275, 104,-1000,-1000,-1000, 196,
 189,-1000,-1000,-1000,1411,1816,-1000, -51,1207,-1000,
-1000,1816,-1000,-1000,1411,-1000, 196,3167,4014, 103,
 158,4014,3238, -66,-1000,  20,  34,4014,1139,1071,
 -64,2838,-1000,3020,-1000,3100,4362,4362,4362,4362,
4362,4362,-1000,4362,-1000, -32,2747,2929,   2,3481,
-1000,3481,-1000,4304, -95,  30,  30, -95, -95, -95,
  61,2929,-1000, 151,-1000, 148,4304,  20,2656,2656,
2656, 139, 158,2656,2656,  33,-1000, 865,-1000,-1000,
-1000,-1000,1003,-1000, 195,-1000,-1000,-1000,  90,  58,
-1000,2562,4304,4304,4304,3724, 138,4072,3666,3608,
4072,  -5,  20,4072,4014,2562,-1000,-1000, 136,-1000,
4014,-1000,  -5,-1000,2929,2929,  20,3481,-1000,-1000,
-1000,  20,3481,3481,  12,-1000,3481,3481,3481,-1000,
 933, -85,-1000,-1000,-1000, 175,  -5, 187,-1000,  20,
  20,  20,3238,4014,  -6, 635,3365,3550,-1000,4362,
-1000,3238,  43, 187, 187,  11,2929,-1000,2929,2471,
  87,  78,2380, 134,1714,1613,1512,-1000,  93,4014,
 189,  54,-1000, 119,  -5,4072,-1000, 104,-1000,-1000,
-1000,-1000,-1000,3481,-1000,-1000,  32,-1000,  32,3481,
-1000,4014,2289,3167, 187,  -6,-1000,3238, 865,2190,
  75,  66,  59,2099,2008, 189,  54,1411, 795,-1000,
-1000,-1000,-1000,-1000, 156,3167, 187,-1000,-1000,-1000,
  54,1411, 187,-1000,1411,-1000
};
short	yypgo[] =
{
   0, 263, 508,  40,  30, 262,  12, 261, 242, 201,
  37,  45, 259,   8,   3,   5, 408,   7,   0, 392,
 254, 253, 251, 248, 245, 243, 237,   2, 231, 212,
  80, 230,   1, 404,  17,  19,  97,  89, 229, 228,
 226, 224, 223, 222, 220, 219, 218, 217, 213
};
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
};
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,   3,   6,   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
};
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, -10,  18, -16, -27, -34,
  15,  10, -27,  10, -46,  -2, -27, -16, -17, -27,
 -27,  -2, -27, -27, -48, -35, -34,  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, -30,  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,
 -17, -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,  18, 100, -35,
  15, -19,  10,  -4,  45,  95,  20, -44,  87,  17,
  17,  17,  17, -33,  17,  17, -33,  17, -33, -33,
  17,  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
};
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,   0,  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,  37,  39, 129, 109, 107,
  26,  24, 110,  10,   0,   0, 115, 118,   0, 120,
 121,   0, 123, 124,   0, 127,  27,  -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,   0,  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,  38,   0,   0,
  26,   0,  98,   0,   0,   0, 103,   0, 180, 156,
 157, 159, 160,   0, 164, 167,   0, 168,   0,   0,
 172,   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
};
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
};
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
};
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
char*	yytoknames[1];		/* for debugging */
char*	yystates[1];		/* for debugging */
#endif

/*	parser for yacc output	*/

int	yynerrs = 0;		/* number of errors */
int	yyerrflag = 0;		/* error recovery flag */

char*
yytokname(int yyc)
{
	static char x[16];

	if(yyc > 0 && yyc <= sizeof(yytoknames)/sizeof(yytoknames[0]))
	if(yytoknames[yyc-1])
		return yytoknames[yyc-1];
	sprintf(x, "<%d>", yyc);
	return x;
}

char*
yystatname(int yys)
{
	static char x[16];

	if(yys >= 0 && yys < sizeof(yystates)/sizeof(yystates[0]))
	if(yystates[yys])
		return yystates[yys];
	sprintf(x, "<%d>\n", yys);
	return x;
}

long
yylex1(void)
{
	long yychar;
	long *t3p;
	int c;

	yychar = yylex();
	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
yyparse(void)
{
	struct
	{
		YYSTYPE	yyv;
		int	yys;
	} yys[YYMAXDEPTH], *yyp, *yypt;
	short *yyxi;
	int yyj, yym, yystate, yyn, yyg;
	YYSTYPE save1, save2;
	int save3, save4;
	long yychar;

	save1 = yylval;
	save2 = yyval;
	save3 = yynerrs;
	save4 = yyerrflag;

	yystate = 0;
	yychar = -1;
	yynerrs = 0;
	yyerrflag = 0;
	yyp = &yys[-1];
	goto yystack;

ret0:
	yyn = 0;
	goto ret;

ret1:
	yyn = 1;
	goto ret;

ret:
	yylval = save1;
	yyval = save2;
	yynerrs = save3;
	yyerrflag = save4;
	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)
		yychar = yylex1();
	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)
			yychar = yylex1();

		/* 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));
			}
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	100	"/sys/src/cmd/awk/awkgram.y"
{ if (errorflag==0)
			winner = (Node *)stat3(PROGRAM, beginloc, yypt[-0].yyv.p, endloc); } break;
case 2:
#line	102	"/sys/src/cmd/awk/awkgram.y"
{ yyclearin; bracecheck(); SYNTAX("bailing out"); } break;
case 13:
#line	126	"/sys/src/cmd/awk/awkgram.y"
{inloop++;} break;
case 14:
#line	127	"/sys/src/cmd/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	128	"/sys/src/cmd/awk/awkgram.y"
{inloop++;} break;
case 16:
#line	129	"/sys/src/cmd/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	130	"/sys/src/cmd/awk/awkgram.y"
{inloop++;} break;
case 18:
#line	131	"/sys/src/cmd/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	135	"/sys/src/cmd/awk/awkgram.y"
{ setfname(yypt[-0].yyv.cp); } break;
case 20:
#line	136	"/sys/src/cmd/awk/awkgram.y"
{ setfname(yypt[-0].yyv.cp); } break;
case 21:
#line	140	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = notnull(yypt[-1].yyv.p); } break;
case 26:
#line	152	"/sys/src/cmd/awk/awkgram.y"
{ yyval.i = 0; } break;
case 28:
#line	157	"/sys/src/cmd/awk/awkgram.y"
{ yyval.i = 0; } break;
case 30:
#line	163	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = 0; } break;
case 32:
#line	168	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = 0; } break;
case 33:
#line	169	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = yypt[-1].yyv.p; } break;
case 34:
#line	173	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = notnull(yypt[-0].yyv.p); } break;
case 35:
#line	177	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = stat2(PASTAT, yypt[-0].yyv.p, stat2(PRINT, rectonode(), NIL)); } break;
case 36:
#line	178	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = stat2(PASTAT, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
case 37:
#line	179	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = pa2stat(yypt[-2].yyv.p, yypt[-0].yyv.p, stat2(PRINT, rectonode(), NIL)); } break;
case 38:
#line	180	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = pa2stat(yypt[-5].yyv.p, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
case 39:
#line	181	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = stat2(PASTAT, NIL, yypt[-1].yyv.p); } break;
case 40:
#line	183	"/sys/src/cmd/awk/awkgram.y"
{ beginloc = linkum(beginloc, yypt[-1].yyv.p); yyval.p = 0; } break;
case 41:
#line	185	"/sys/src/cmd/awk/awkgram.y"
{ endloc = linkum(endloc, yypt[-1].yyv.p); yyval.p = 0; } break;
case 42:
#line	186	"/sys/src/cmd/awk/awkgram.y"
{infunc++;} break;
case 43:
#line	187	"/sys/src/cmd/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	192	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 47:
#line	197	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 48:
#line	201	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 49:
#line	203	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op3(CONDEXPR, notnull(yypt[-4].yyv.p), yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 50:
#line	205	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(BOR, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break;
case 51:
#line	207	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(AND, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break;
case 52:
#line	208	"/sys/src/cmd/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	210	"/sys/src/cmd/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	214	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(INTEST, yypt[-2].yyv.p, makearr(yypt[-0].yyv.p)); } break;
case 55:
#line	215	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(INTEST, yypt[-3].yyv.p, makearr(yypt[-0].yyv.p)); } break;
case 56:
#line	216	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(CAT, yypt[-1].yyv.p, yypt[-0].yyv.p); } break;
case 59:
#line	222	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 60:
#line	224	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op3(CONDEXPR, notnull(yypt[-4].yyv.p), yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 61:
#line	226	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(BOR, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break;
case 62:
#line	228	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(AND, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break;
case 63:
#line	229	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 64:
#line	230	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 65:
#line	231	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 66:
#line	232	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 67:
#line	233	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 68:
#line	234	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 69:
#line	235	"/sys/src/cmd/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	237	"/sys/src/cmd/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	241	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(INTEST, yypt[-2].yyv.p, makearr(yypt[-0].yyv.p)); } break;
case 72:
#line	242	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(INTEST, yypt[-3].yyv.p, makearr(yypt[-0].yyv.p)); } break;
case 73:
#line	243	"/sys/src/cmd/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	246	"/sys/src/cmd/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	249	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(CAT, yypt[-1].yyv.p, yypt[-0].yyv.p); } break;
case 78:
#line	255	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 79:
#line	256	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 81:
#line	261	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 82:
#line	265	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = rectonode(); } break;
case 84:
#line	267	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = yypt[-1].yyv.p; } break;
case 93:
#line	284	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op3(MATCH, NIL, rectonode(), (Node*)makedfa(yypt[-0].yyv.s, 0)); } break;
case 94:
#line	285	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op1(NOT, notnull(yypt[-0].yyv.p)); } break;
case 95:
#line	289	"/sys/src/cmd/awk/awkgram.y"
{startreg();} break;
case 96:
#line	289	"/sys/src/cmd/awk/awkgram.y"
{ yyval.s = yypt[-1].yyv.s; } break;
case 99:
#line	297	"/sys/src/cmd/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	300	"/sys/src/cmd/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	303	"/sys/src/cmd/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	306	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = stat3(yypt[-1].yyv.i, yypt[-0].yyv.p, NIL, NIL); } break;
case 103:
#line	307	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = stat2(DELETE, makearr(yypt[-3].yyv.p), yypt[-1].yyv.p); } break;
case 104:
#line	308	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = stat2(DELETE, makearr(yypt[-0].yyv.p), 0); } break;
case 105:
#line	309	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = exptostat(yypt[-0].yyv.p); } break;
case 106:
#line	310	"/sys/src/cmd/awk/awkgram.y"
{ yyclearin; SYNTAX("illegal statement"); } break;
case 109:
#line	319	"/sys/src/cmd/awk/awkgram.y"
{ if (!inloop) SYNTAX("break illegal outside of loops");
				  yyval.p = stat1(BREAK, NIL); } break;
case 110:
#line	321	"/sys/src/cmd/awk/awkgram.y"
{  if (!inloop) SYNTAX("continue illegal outside of loops");
				  yyval.p = stat1(CONTINUE, NIL); } break;
case 111:
#line	323	"/sys/src/cmd/awk/awkgram.y"
{inloop++;} break;
case 112:
#line	323	"/sys/src/cmd/awk/awkgram.y"
{--inloop;} break;
case 113:
#line	324	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = stat2(DO, yypt[-6].yyv.p, notnull(yypt[-2].yyv.p)); } break;
case 114:
#line	325	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = stat1(EXIT, yypt[-1].yyv.p); } break;
case 115:
#line	326	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = stat1(EXIT, NIL); } break;
case 117:
#line	328	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = stat3(IF, yypt[-3].yyv.p, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 118:
#line	329	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = stat3(IF, yypt[-1].yyv.p, yypt[-0].yyv.p, NIL); } break;
case 119:
#line	330	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = yypt[-1].yyv.p; } break;
case 120:
#line	331	"/sys/src/cmd/awk/awkgram.y"
{ if (infunc)
				SYNTAX("next is illegal inside a function");
			  yyval.p = stat1(NEXT, NIL); } break;
case 121:
#line	334	"/sys/src/cmd/awk/awkgram.y"
{ if (infunc)
				SYNTAX("nextfile is illegal inside a function");
			  yyval.p = stat1(NEXTFILE, NIL); } break;
case 122:
#line	337	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = stat1(RETURN, yypt[-1].yyv.p); } break;
case 123:
#line	338	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = stat1(RETURN, NIL); } break;
case 125:
#line	340	"/sys/src/cmd/awk/awkgram.y"
{inloop++;} break;
case 126:
#line	340	"/sys/src/cmd/awk/awkgram.y"
{ --inloop; yyval.p = stat2(WHILE, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 127:
#line	341	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = 0; } break;
case 129:
#line	346	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = linkum(yypt[-1].yyv.p, yypt[-0].yyv.p); } break;
case 132:
#line	354	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(DIVEQ, yypt[-3].yyv.p, yypt[-0].yyv.p); } break;
case 133:
#line	355	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(ADD, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 134:
#line	356	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(MINUS, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 135:
#line	357	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(MULT, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 136:
#line	358	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(DIVIDE, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 137:
#line	359	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(MOD, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 138:
#line	360	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(POWER, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 139:
#line	361	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op1(UMINUS, yypt[-0].yyv.p); } break;
case 140:
#line	362	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = yypt[-0].yyv.p; } break;
case 141:
#line	363	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op1(NOT, notnull(yypt[-0].yyv.p)); } break;
case 142:
#line	364	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(BLTIN, itonp(yypt[-2].yyv.i), rectonode()); } break;
case 143:
#line	365	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(BLTIN, itonp(yypt[-3].yyv.i), yypt[-1].yyv.p); } break;
case 144:
#line	366	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(BLTIN, itonp(yypt[-0].yyv.i), rectonode()); } break;
case 145:
#line	367	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(CALL, celltonode(yypt[-2].yyv.cp,CVAR), NIL); } break;
case 146:
#line	368	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(CALL, celltonode(yypt[-3].yyv.cp,CVAR), yypt[-1].yyv.p); } break;
case 147:
#line	369	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op1(CLOSE, yypt[-0].yyv.p); } break;
case 148:
#line	370	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op1(PREDECR, yypt[-0].yyv.p); } break;
case 149:
#line	371	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op1(PREINCR, yypt[-0].yyv.p); } break;
case 150:
#line	372	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op1(POSTDECR, yypt[-1].yyv.p); } break;
case 151:
#line	373	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op1(POSTINCR, yypt[-1].yyv.p); } break;
case 152:
#line	374	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op3(GETLINE, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
case 153:
#line	375	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op3(GETLINE, NIL, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
case 154:
#line	376	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op3(GETLINE, yypt[-0].yyv.p, NIL, NIL); } break;
case 155:
#line	377	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op3(GETLINE, NIL, NIL, NIL); } break;
case 156:
#line	379	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(INDEX, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
case 157:
#line	381	"/sys/src/cmd/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	383	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = yypt[-1].yyv.p; } break;
case 159:
#line	385	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op3(MATCHFCN, NIL, yypt[-3].yyv.p, (Node*)makedfa(yypt[-1].yyv.s, 1)); } break;
case 160:
#line	387	"/sys/src/cmd/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	391	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = celltonode(yypt[-0].yyv.cp, CCON); } break;
case 162:
#line	393	"/sys/src/cmd/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	395	"/sys/src/cmd/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	397	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op4(SPLIT, yypt[-3].yyv.p, makearr(yypt[-1].yyv.p), NIL, (Node*)STRING); } break;
case 165:
#line	398	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op1(yypt[-3].yyv.i, yypt[-1].yyv.p); } break;
case 166:
#line	399	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = celltonode(yypt[-0].yyv.cp, CCON); } break;
case 167:
#line	401	"/sys/src/cmd/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	403	"/sys/src/cmd/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	408	"/sys/src/cmd/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	410	"/sys/src/cmd/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	415	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op3(SUBSTR, yypt[-5].yyv.p, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
case 172:
#line	417	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op3(SUBSTR, yypt[-3].yyv.p, yypt[-1].yyv.p, NIL); } break;
case 175:
#line	423	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op2(ARRAY, makearr(yypt[-3].yyv.p), yypt[-1].yyv.p); } break;
case 176:
#line	424	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op1(INDIRECT, celltonode(yypt[-0].yyv.cp, CVAR)); } break;
case 177:
#line	425	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op1(INDIRECT, yypt[-0].yyv.p); } break;
case 178:
#line	429	"/sys/src/cmd/awk/awkgram.y"
{ arglist = yyval.p = 0; } break;
case 179:
#line	430	"/sys/src/cmd/awk/awkgram.y"
{ arglist = yyval.p = celltonode(yypt[-0].yyv.cp,CVAR); } break;
case 180:
#line	431	"/sys/src/cmd/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	437	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = celltonode(yypt[-0].yyv.cp, CVAR); } break;
case 182:
#line	438	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op1(ARG, itonp(yypt[-0].yyv.i)); } break;
case 183:
#line	439	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = op1(VARNF, (Node *) yypt[-0].yyv.cp); } break;
case 184:
#line	444	"/sys/src/cmd/awk/awkgram.y"
{ yyval.p = notnull(yypt[-1].yyv.p); } break;
	}
	goto yystack;  /* stack new state and value */
}

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].