xref: /minix/external/historical/nawk/dist/ytab.c (revision 84d9c625)
1 
2 #line	26	"/n/fs/fac/bwk/awk/awkgram.y"
3 #include <stdio.h>
4 #include <string.h>
5 #include "awk.h"
6 
7 void checkdup(Node *list, Cell *item);
yywrap(void)8 int yywrap(void) { return(1); }
9 
10 Node	*beginloc = 0;
11 Node	*endloc = 0;
12 int	infunc	= 0;	/* = 1 if in arglist or body of func */
13 int	inloop	= 0;	/* = 1 if in while, for, do */
14 char	*curfname = 0;	/* current function name */
15 Node	*arglist = 0;	/* list of args for current function */
16 
17 #line	41	"/n/fs/fac/bwk/awk/awkgram.y"
18 typedef union  {
19 	Node	*p;
20 	Cell	*cp;
21 	int	i;
22 	char	*s;
23 } YYSTYPE;
24 extern	int	yyerrflag;
25 #ifndef	YYMAXDEPTH
26 #define	YYMAXDEPTH	150
27 #endif
28 YYSTYPE	yylval;
29 YYSTYPE	yyval;
30 #define	FIRSTTOKEN	57346
31 #define	PROGRAM	57347
32 #define	PASTAT	57348
33 #define	PASTAT2	57349
34 #define	XBEGIN	57350
35 #define	XEND	57351
36 #define	NL	57352
37 #define	ARRAY	57353
38 #define	MATCH	57354
39 #define	NOTMATCH	57355
40 #define	MATCHOP	57356
41 #define	FINAL	57357
42 #define	DOT	57358
43 #define	ALL	57359
44 #define	CCL	57360
45 #define	NCCL	57361
46 #define	CHAR	57362
47 #define	OR	57363
48 #define	STAR	57364
49 #define	QUEST	57365
50 #define	PLUS	57366
51 #define	EMPTYRE	57367
52 #define	AND	57368
53 #define	BOR	57369
54 #define	APPEND	57370
55 #define	EQ	57371
56 #define	GE	57372
57 #define	GT	57373
58 #define	LE	57374
59 #define	LT	57375
60 #define	NE	57376
61 #define	IN	57377
62 #define	ARG	57378
63 #define	BLTIN	57379
64 #define	BREAK	57380
65 #define	CLOSE	57381
66 #define	CONTINUE	57382
67 #define	DELETE	57383
68 #define	DO	57384
69 #define	EXIT	57385
70 #define	FOR	57386
71 #define	FUNC	57387
72 #define	SUB	57388
73 #define	GSUB	57389
74 #define	IF	57390
75 #define	INDEX	57391
76 #define	LSUBSTR	57392
77 #define	MATCHFCN	57393
78 #define	NEXT	57394
79 #define	NEXTFILE	57395
80 #define	ADD	57396
81 #define	MINUS	57397
82 #define	MULT	57398
83 #define	DIVIDE	57399
84 #define	MOD	57400
85 #define	ASSIGN	57401
86 #define	ASGNOP	57402
87 #define	ADDEQ	57403
88 #define	SUBEQ	57404
89 #define	MULTEQ	57405
90 #define	DIVEQ	57406
91 #define	MODEQ	57407
92 #define	POWEQ	57408
93 #define	PRINT	57409
94 #define	PRINTF	57410
95 #define	SPRINTF	57411
96 #define	ELSE	57412
97 #define	INTEST	57413
98 #define	CONDEXPR	57414
99 #define	POSTINCR	57415
100 #define	PREINCR	57416
101 #define	POSTDECR	57417
102 #define	PREDECR	57418
103 #define	VAR	57419
104 #define	IVAR	57420
105 #define	VARNF	57421
106 #define	CALL	57422
107 #define	NUMBER	57423
108 #define	STRING	57424
109 #define	REGEXPR	57425
110 #define	GETLINE	57426
111 #define	RETURN	57427
112 #define	SPLIT	57428
113 #define	SUBSTR	57429
114 #define	WHILE	57430
115 #define	CAT	57431
116 #define	NOT	57432
117 #define	UMINUS	57433
118 #define	POWER	57434
119 #define	DECR	57435
120 #define	INCR	57436
121 #define	INDIRECT	57437
122 #define	LASTTOKEN	57438
123 #define YYEOFCODE 1
124 #define YYERRCODE 2
125 
126 #line	445	"/n/fs/fac/bwk/awk/awkgram.y"
127 
128 
setfname(Cell * p)129 void setfname(Cell *p)
130 {
131 	if (isarr(p))
132 		SYNTAX("%s is an array, not a function", p->nval);
133 	else if (isfcn(p))
134 		SYNTAX("you can't define function %s more than once", p->nval);
135 	curfname = p->nval;
136 }
137 
constnode(Node * p)138 int constnode(Node *p)
139 {
140 	return isvalue(p) && ((Cell *) (p->narg[0]))->csub == CCON;
141 }
142 
strnode(Node * p)143 char *strnode(Node *p)
144 {
145 	return ((Cell *)(p->narg[0]))->sval;
146 }
147 
notnull(Node * n)148 Node *notnull(Node *n)
149 {
150 	switch (n->nobj) {
151 	case LE: case LT: case EQ: case NE: case GT: case GE:
152 	case BOR: case AND: case NOT:
153 		return n;
154 	default:
155 		return op2(NE, n, nullnode);
156 	}
157 }
158 
checkdup(Node * vl,Cell * cp)159 void checkdup(Node *vl, Cell *cp)	/* check if name already in list */
160 {
161 	char *s = cp->nval;
162 	for ( ; vl; vl = vl->nnext) {
163 		if (strcmp(s, ((Cell *)(vl->narg[0]))->nval) == 0) {
164 			SYNTAX("duplicate argument %s", s);
165 			break;
166 		}
167 	}
168 }
169 static	const	short	yyexca[] =
170 {-1, 0,
171 	1, 28,
172 	8, 28,
173 	9, 28,
174 	12, 28,
175 	13, 28,
176 	16, 28,
177 	46, 28,
178 	47, 28,
179 	49, 28,
180 	55, 28,
181 	56, 28,
182 	57, 28,
183 	59, 28,
184 	61, 28,
185 	79, 28,
186 	87, 28,
187 	88, 28,
188 	89, 28,
189 	90, 28,
190 	91, 28,
191 	92, 28,
192 	96, 28,
193 	98, 28,
194 	99, 28,
195 	102, 28,
196 	103, 28,
197 	106, 28,
198 	109, 28,
199 	110, 28,
200 	111, 28,
201 	-2, 0,
202 -1, 1,
203 	1, -1,
204 	-2, 0,
205 -1, 157,
206 	15, 30,
207 	-2, 0,
208 -1, 176,
209 	14, 0,
210 	24, 0,
211 	39, 0,
212 	40, 0,
213 	41, 0,
214 	42, 0,
215 	43, 0,
216 	44, 0,
217 	45, 0,
218 	-2, 63,
219 -1, 177,
220 	14, 0,
221 	24, 0,
222 	39, 0,
223 	40, 0,
224 	41, 0,
225 	42, 0,
226 	43, 0,
227 	44, 0,
228 	45, 0,
229 	-2, 64,
230 -1, 178,
231 	14, 0,
232 	24, 0,
233 	39, 0,
234 	40, 0,
235 	41, 0,
236 	42, 0,
237 	43, 0,
238 	44, 0,
239 	45, 0,
240 	-2, 65,
241 -1, 179,
242 	14, 0,
243 	24, 0,
244 	39, 0,
245 	40, 0,
246 	41, 0,
247 	42, 0,
248 	43, 0,
249 	44, 0,
250 	45, 0,
251 	-2, 66,
252 -1, 180,
253 	14, 0,
254 	24, 0,
255 	39, 0,
256 	40, 0,
257 	41, 0,
258 	42, 0,
259 	43, 0,
260 	44, 0,
261 	45, 0,
262 	-2, 67,
263 -1, 181,
264 	14, 0,
265 	24, 0,
266 	39, 0,
267 	40, 0,
268 	41, 0,
269 	42, 0,
270 	43, 0,
271 	44, 0,
272 	45, 0,
273 	-2, 68,
274 -1, 183,
275 	14, 0,
276 	24, 0,
277 	39, 0,
278 	40, 0,
279 	41, 0,
280 	42, 0,
281 	43, 0,
282 	44, 0,
283 	45, 0,
284 	-2, 70,
285 -1, 289,
286 	24, 0,
287 	45, 0,
288 	-2, 53,
289 -1, 334,
290 	17, 30,
291 	-2, 0,
292 -1, 356,
293 	17, 30,
294 	-2, 0,
295 };
296 #define	YYNPROD	185
297 #define	YYPRIVATE 57344
298 #define	YYLAST	4442
299 static	const	short	yyact[] =
300 {
301   17, 140,  66, 228, 200, 105,  43,  62, 277,  10,
302  125,  24,  11,  43, 253, 135, 100, 112,  51, 141,
303   79,  80, 308, 243, 100, 185, 100, 100, 100, 103,
304  104, 100, 122, 123, 124, 215,  82, 249,  54,  83,
305  102, 107,  43, 107, 253, 223,   9,  42,  22,  44,
306   43, 113, 314, 252,  42,  22,  44, 206,  11, 143,
307  253, 147, 103, 104, 244, 150, 151, 153, 154, 278,
308  113,  23, 136, 163, 353, 100, 190, 276,  23, 103,
309  104, 190, 336,  42, 156,  44, 190, 324, 136, 352,
310  134,  42,  22,  44, 190, 316,  43, 133,  85, 351,
311  100, 149, 321, 258, 320, 182, 269, 100, 100, 100,
312  100, 100, 100, 100, 232,  23,  86, 190, 168, 169,
313  275, 318, 332, 278, 203, 205, 100, 108, 109, 110,
314  111, 110, 111, 112, 211, 112, 170,  42, 233,  44,
315  190, 234, 212, 190, 190, 217, 284, 100, 221, 265,
316  260, 190, 167, 100, 226, 190,   3, 259, 219, 158,
317  230, 188, 136, 100,   6, 137, 137, 236,   6,   7,
318  142, 310, 100,   7, 100, 157, 100, 100, 100, 100,
319  100, 100, 100, 131, 100,  21, 251, 100, 100, 130,
320   48, 129, 128,  16, 100,  49, 127, 126, 120, 119,
321   52,  16, 100, 190, 312, 137, 274, 100, 218, 100,
322  100, 100, 144,   4, 100, 100, 155, 271, 145, 132,
323  317, 348,  50,  55, 362, 270, 365, 162,   1,  72,
324   40, 224, 100, 100, 100, 100, 163,   5, 163, 163,
325  163, 163,  20,  58, 163,  67, 100, 222,  61, 292,
326   60,  19, 288, 248, 293, 100, 100, 294,  96, 166,
327   81, 238,   8, 159, 160,   2, 114,   0, 116, 117,
328  118,   0,   0, 121, 300, 301,   0, 115, 139, 239,
329  184,   0,   0, 100,   0, 148, 100, 100, 100, 313,
330  100, 309, 100,   0,   0, 136,   0, 100,   0, 100,
331  100,   0,   0, 100,   0, 100, 100, 100,   0, 307,
332    0,   0,   0,   0,   0, 165, 163,  96,   0,   0,
333  335,   0,   0,   0, 164, 339, 334, 342,   0, 343,
334  136,   0,   0,   0, 100, 341,   0, 230, 347, 100,
335    0, 100, 116, 229,   0, 100, 100,   0,   0,  96,
336  194, 195, 196, 197, 198, 199, 357, 360, 139, 230,
337  361,   0, 356,   0,   0,   0, 136,   0, 207, 220,
338  363,   0,   0, 139,   0,   0,   0,   0, 349, 227,
339    0, 238,   0,   0, 238, 238, 238,   0, 238,  96,
340  238,   0, 139, 139,   0,  96,   0,   0,   0, 239,
341    0, 257, 239, 239, 239, 242, 239,   0, 239,   0,
342    0,   0,   0,   0,  96,   0,  96,   0,  96,  96,
343   96,  96,  96,  96,  96,   0,  96, 290,   0,  96,
344   96,   0,   0,   0,   0,   0, 256, 238, 297,   0,
345    0,   0,   0,   0,  96,   0, 273,   0,   0, 261,
346  303,  96,  96,  96,   0, 239,  96,  96,   0,   0,
347    0,   0, 311, 282,   0, 285, 286, 287, 289,   0,
348    0, 291,   0,   0,  96, 279, 280, 281, 165,   0,
349  165, 165, 165, 165,   0,   0, 165, 164,  96, 164,
350  164, 164, 164,   0,   0, 164,   0,  96,  96,   0,
351  337,   0,   0,   0,   0,  74,   0, 189, 191,   0,
352   15,   0,   0,   0,   0,   0,   0,   0,   0,   0,
353    0,   0,   0,   0, 106, 242,   0,   0, 242, 242,
354  242, 139, 242,   0, 242,   0,   0,   0,   0,  96,
355    0,  96,  96, 338,   0,  96,   0,  96,  96,  96,
356    0,   0,   0,   0,   0,   0,  15,   0, 165,   0,
357    0,   0, 235,   0,   0, 146,   0, 164,   0,   0,
358    0, 152, 358, 139,   0,   0,  96,   0,   0,   0,
359    0, 242,   0,  96,   0,   0, 364,  96,  96, 366,
360  171, 173, 175, 176, 177, 178, 179, 180, 181, 183,
361    0,   0,   0,   0,   0,   0,   0, 186, 187,   0,
362  262, 263, 264,   0, 266, 267, 268,   0,   0, 201,
363    0,   0,   0,   0,   0, 201, 201,   0,   0,   0,
364    0,   0, 208, 209, 210, 201, 213, 214, 189,   0,
365    0,  15,   0,   0,   0,   0, 190,   0, 101,  95,
366  295,   0, 330,   0,   0,   0,   0,   0,   0,  93,
367    0,   0,   0,   0, 231,   0,   0, 106,   0,   0,
368    0,  98,  97, 245,  87,  88,  89,  90,  91,  92,
369   94,  43,  28,   0,  30,   0,   0,   0,   0,   0,
370    0,  46,  47,   0,  34, 254,  35, 255,   0,   0,
371    0,   0,   0,   0,   0, 323, 326, 328, 329,   0,
372    0,   0,   0,   0,  38, 189,   0,   0,   0,   0,
373    0,   0,  42,  22,  44,  29,  36,  39,   0,  84,
374    0,  33,   0,  37,  41,   0,   0,  27,  26,   0,
375    0,  99,   0,   0,  31,  32,  23,   0,   0,   0,
376  201,   0,   0,   0,   0,   0, 296,   0,   0,   0,
377    0,   0,   0, 298,   0,   0,   0,   0, 299, 302,
378    0,   0, 304, 305, 306,   0,   0,   0,   0,   0,
379    0,   0,   0,   0,   0,   0,   0,   0,   0, 106,
380    0,   0,   0,   0,   0,  75,   0,   0,   0,   0,
381    0,   0,   0,   0,   0,  16,  18,   0,  68,  45,
382    0, 359,   0,   0,   0, 333,   0,   0,   0,   0,
383    0,   0,   0,   0,   0,   0,   0,   0,   0, 340,
384    0,   0,   0,   0,   0, 344,   0,   0, 345,  43,
385   28,  56,  30,  57,  73,  69,  59,  70,   0,  46,
386   47,  71,  34,   0,  35,  63,  64,   0,   0,   0,
387    0,   0,   0,   0,   0,  75,   0,   0,   0,   0,
388   77,  78,  38,  53,   0,  16,  18,   0,  68,  45,
389   42,  22,  44,  29,  36,  39,   0,   0,   0,  33,
390   65,  37,  41,  76,   0,  27,  26,   0,   0,  25,
391    0,   0,  31,  32,  23,   0,   0,   0,   0,  43,
392   28,  56,  30,  57,  73,  69,  59,  70,   0,  46,
393   47,  71,  34,   0,  35,  63,  64,   0,   0,   0,
394    0,   0,   0,  75,   0,   0,   0,   0,   0,   0,
395   77,  78,  38,  16,  18,   0,  68,  45,   0, 331,
396   42,  22,  44,  29,  36,  39,   0,   0,   0,  33,
397   65,  37,  41,  76,   0,  27,  26,   0,   0,  25,
398    0,   0,  31,  32,  23,   0,   0,  43,  28,  56,
399   30,  57,  73,  69,  59,  70,   0,  46,  47,  71,
400   34,   0,  35,  63,  64,   0,   0,   0,   0,   0,
401    0,   0,   0,  75,   0,   0,   0,   0,  77,  78,
402   38, 272,   0,  16,  18,   0,  68,  45,  42,  22,
403   44,  29,  36,  39,   0,   0,   0,  33,  65,  37,
404   41,  76,   0,  27,  26,   0,   0,  25,   0,   0,
405   31,  32,  23,   0,   0,   0,   0,  43,  28,  56,
406   30,  57,  73,  69,  59,  70,   0,  46,  47,  71,
407   34,   0,  35,  63,  64,   0,   0,   0,   0,   0,
408    0,  75,   0,   0,   0,   0,   0,   0,  77,  78,
409   38,  16,  18,   0,  68,  45,   0, 247,  42,  22,
410   44,  29,  36,  39,   0,   0,   0,  33,  65,  37,
411   41,  76,   0,  27,  26,   0,   0,  25,   0,   0,
412   31,  32,  23,   0,   0,  43,  28,  56,  30,  57,
413   73,  69,  59,  70,   0,  46,  47,  71,  34,   0,
414   35,  63,  64,   0,   0,   0,   0,   0,   0,  75,
415    0,   0,   0,   0,   0,   0,  77,  78,  38,  16,
416   18,   0,  68,  45,   0, 246,  42,  22,  44,  29,
417   36,  39,   0,   0,   0,  33,  65,  37,  41,  76,
418    0,  27,  26,   0,   0,  25,   0,   0,  31,  32,
419   23,   0,   0,  43,  28,  56,  30,  57,  73,  69,
420   59,  70,   0,  46,  47,  71,  34,   0,  35,  63,
421   64,   0,   0,   0,   0,   0,   0,  75,   0,   0,
422    0,   0,   0,   0,  77,  78,  38,  16,  18,   0,
423   68,  45,   0, 225,  42,  22,  44,  29,  36,  39,
424    0,   0,   0,  33,  65,  37,  41,  76,   0,  27,
425   26,   0,   0,  25,   0,   0,  31,  32,  23,   0,
426    0,  43,  28,  56,  30,  57,  73,  69,  59,  70,
427    0,  46,  47,  71,  34,   0,  35,  63,  64,   0,
428    0,   0,   0,   0,   0,  75,   0,   0,   0,   0,
429    0,   0,  77,  78,  38,  16,  18,   0,  68,  45,
430    0, 216,  42,  22,  44,  29,  36,  39,   0,   0,
431    0,  33,  65,  37,  41,  76,   0,  27,  26,   0,
432    0,  25,   0,   0,  31,  32,  23,   0,   0,  43,
433   28,  56,  30,  57,  73,  69,  59,  70,   0,  46,
434   47,  71,  34,   0,  35,  63,  64,   0,   0,   0,
435    0,   0,   0,  75,   0,   0,   0,   0,   0,   0,
436   77,  78,  38,  16,  18,   0,  68,  45,   0, 138,
437   42,  22,  44,  29,  36,  39,   0,   0,   0,  33,
438   65,  37,  41,  76,   0,  27,  26,   0,   0,  25,
439    0,   0,  31,  32,  23,   0,   0,  43,  28,  56,
440   30,  57,  73,  69,  59,  70,   0,  46,  47,  71,
441   34,   0,  35,  63,  64,   0,   0,   0,   0,   0,
442    0,  75,   0,   0,   0,   0,   0,   0,  77,  78,
443   38,  16,  18,   0,  68,  45,   0,   0,  42,  22,
444   44,  29,  36,  39,   0,   0,   0,  33,  65,  37,
445   41,  76,   0,  27,  26,   0,   0,  25,   0,   0,
446   31,  32,  23,   0,   0,  43,  28,  56,  30,  57,
447   73,  69,  59,  70,   0,  46,  47,  71,  34,   0,
448   35,  63,  64,   0,   0,   0,   0,   0,   0,   0,
449    0,   0,   0,   0,   0,   0,  77,  78,  38,   0,
450    0,   0,   0,   0,   0,   0,  42,  22,  44,  29,
451   36,  39,   0,   0,   0,  33,  65,  37,  41,  76,
452    0,  27,  26,   0,   0,  25,   0,   0,  31,  32,
453   23, 190,   0, 101,  95,   0,   0, 327,   0,   0,
454    0,   0,   0,   0,  93,   0,   0,   0,   0,   0,
455    0,   0,   0,   0,   0,   0,  98,  97,   0,  87,
456   88,  89,  90,  91,  92,  94,  43,  28,   0,  30,
457    0,   0,   0,   0,   0,   0,  46,  47,   0,  34,
458    0,  35,   0,   0,   0,   0,   0,   0,   0,   0,
459    0,   0,   0,   0,   0,   0,   0,   0,   0,  38,
460    0,   0,   0,   0,   0,   0,   0,  42,  22,  44,
461   29,  36,  39,   0,  84,   0,  33,   0,  37,  41,
462    0,   0,  27,  26,   0,   0,  99,   0,   0,  31,
463   32,  23, 190,   0, 101,  95,   0,   0, 325,   0,
464    0,   0,   0,   0,   0,  93,   0,   0,   0,   0,
465    0,   0,   0,   0,   0,   0,   0,  98,  97,   0,
466   87,  88,  89,  90,  91,  92,  94,  43,  28,   0,
467   30,   0,   0,   0,   0,   0,   0,  46,  47,   0,
468   34,   0,  35,   0,   0,   0,   0,   0,   0,   0,
469    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
470   38,   0,   0,   0,   0,   0,   0,   0,  42,  22,
471   44,  29,  36,  39,   0,  84,   0,  33,   0,  37,
472   41,   0,   0,  27,  26,   0,   0,  99,   0,   0,
473   31,  32,  23, 137,   0,   0, 101,  95, 142,   0,
474    0,   0,   0,   0,   0,   0,   0,  93,   0,   0,
475    0,   0,   0,   0,   0,   0,   0,   0,   0,  98,
476   97,   0,  87,  88,  89,  90,  91,  92,  94,  43,
477   28,   0,  30,   0,   0,   0,   0,   0,   0,  46,
478   47,   0,  34,   0,  35,   0,   0,   0,   0,   0,
479    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
480    0,   0,  38,   0,   0,   0,   0,   0,   0,   0,
481   42,  22,  44,  29,  36,  39,   0,  84,   0,  33,
482    0,  37,  41,   0,   0,  27,  26,   0,   0,  99,
483    0,   0,  31,  32,  23, 190,   0, 101,  95,   0,
484    0, 192,   0,   0,   0,   0,   0,   0,  93,   0,
485    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
486   98,  97,   0,  87,  88,  89,  90,  91,  92,  94,
487   43,  28,   0,  30,   0,   0,   0,   0,   0,   0,
488   46,  47,   0,  34,   0,  35,   0,   0,   0,   0,
489    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
490    0,   0,   0,  38,   0,   0,   0,   0,   0,   0,
491    0,  42,  22,  44,  29,  36,  39,   0,  84,   0,
492   33,   0,  37,  41,   0,   0,  27,  26, 101,  95,
493   99,   0, 355,  31,  32,  23,   0,   0,   0,  93,
494    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
495    0,  98,  97,   0,  87,  88,  89,  90,  91,  92,
496   94,  43,  28,   0,  30,   0,   0,   0,   0,   0,
497    0,  46,  47,   0,  34,   0,  35,   0,   0,   0,
498    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
499    0,   0,   0,   0,  38,   0,   0,   0,   0,   0,
500    0,   0,  42,  22,  44,  29,  36,  39,   0,  84,
501    0,  33,   0,  37,  41,   0,   0,  27,  26, 101,
502   95,  99,   0, 354,  31,  32,  23,   0,   0,   0,
503   93,   0,   0,   0,   0,   0,   0,   0,   0,   0,
504    0,   0,  98,  97,   0,  87,  88,  89,  90,  91,
505   92,  94,  43,  28,   0,  30,   0,   0,   0,   0,
506    0,   0,  46,  47,   0,  34,   0,  35,   0,   0,
507    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
508    0,   0,   0,   0,   0,  38,   0,   0,   0,   0,
509    0,   0,   0,  42,  22,  44,  29,  36,  39,   0,
510   84,   0,  33,   0,  37,  41,   0,   0,  27,  26,
511  101,  95,  99,   0, 350,  31,  32,  23,   0,   0,
512    0,  93,   0,   0,   0,   0,   0,   0,   0,   0,
513    0,   0,   0,  98,  97,   0,  87,  88,  89,  90,
514   91,  92,  94,  43,  28,   0,  30,   0,   0,   0,
515    0,   0,   0,  46,  47,   0,  34,   0,  35,   0,
516    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
517    0,   0,   0,   0,   0,   0,  38,   0,   0,   0,
518    0,   0,   0,   0,  42,  22,  44,  29,  36,  39,
519    0,  84,   0,  33,   0,  37,  41,   0,   0,  27,
520   26,   0,   0,  99,   0,   0,  31,  32,  23, 101,
521   95, 346,   0,   0,   0,   0,   0,   0,   0,   0,
522   93,   0,   0,   0,   0,   0,   0,   0,   0,   0,
523    0,   0,  98,  97,   0,  87,  88,  89,  90,  91,
524   92,  94,  43,  28,   0,  30,   0,   0,   0,   0,
525    0,   0,  46,  47,   0,  34,   0,  35,   0,   0,
526    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
527    0,   0,   0,   0,   0,  38,   0,   0,   0,   0,
528    0,   0,   0,  42,  22,  44,  29,  36,  39,   0,
529   84,   0,  33,   0,  37,  41,   0,   0,  27,  26,
530  101,  95,  99,   0, 322,  31,  32,  23,   0,   0,
531    0,  93,   0,   0,   0,   0,   0,   0,   0,   0,
532    0,   0,   0,  98,  97,   0,  87,  88,  89,  90,
533   91,  92,  94,  43,  28,   0,  30,   0,   0,   0,
534    0,   0,   0,  46,  47,   0,  34,   0,  35,   0,
535    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
536    0,   0,   0,   0,   0,   0,  38,   0,   0,   0,
537    0,   0,   0,   0,  42,  22,  44,  29,  36,  39,
538    0,  84,   0,  33,   0,  37,  41,   0,   0,  27,
539   26, 101,  95,  99,   0, 319,  31,  32,  23,   0,
540    0,   0,  93,   0,   0,   0,   0,   0,   0,   0,
541    0,   0,   0,   0,  98,  97,   0,  87,  88,  89,
542   90,  91,  92,  94,  43,  28,   0,  30,   0,   0,
543    0,   0,   0,   0,  46,  47,   0,  34,   0,  35,
544    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
545    0,   0,   0,   0,   0,   0,   0,  38,   0,   0,
546    0,   0,   0,   0,   0,  42,  22,  44,  29,  36,
547   39,   0,  84,   0,  33,   0,  37,  41,   0,   0,
548   27,  26, 101,  95,  99,   0, 278,  31,  32,  23,
549    0,   0,   0,  93,   0,   0,   0,   0,   0,   0,
550    0,   0,   0,   0,   0,  98,  97,   0,  87,  88,
551   89,  90,  91,  92,  94,  43,  28,   0,  30,   0,
552    0,   0,   0,   0,   0,  46,  47,   0,  34,   0,
553   35,   0,   0,   0,   0,   0,   0,   0,   0,   0,
554    0,   0,   0,   0,   0,   0,   0,   0,  38,   0,
555    0,   0,   0,   0,   0,   0,  42,  22,  44,  29,
556   36,  39,   0,  84,   0,  33,   0,  37,  41,   0,
557    0,  27,  26,   0, 190,  99, 101,  95,  31,  32,
558   23,   0,   0,   0,   0,   0,   0,  93,   0,   0,
559    0,   0,   0,   0,   0,   0,   0,   0,   0,  98,
560   97,   0,  87,  88,  89,  90,  91,  92,  94,  43,
561   28,   0,  30,   0,   0,   0,   0,   0,   0,  46,
562   47,   0,  34,   0,  35,   0,   0,   0,   0,   0,
563    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
564    0,   0,  38,   0,   0,   0,   0,   0,   0,   0,
565   42,  22,  44,  29,  36,  39,   0,  84,   0,  33,
566    0,  37,  41,   0,   0,  27,  26, 101,  95,  99,
567    0, 192,  31,  32,  23,   0,   0,   0,  93,   0,
568    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
569   98,  97,   0,  87,  88,  89,  90,  91,  92,  94,
570   43,  28,   0,  30,   0,   0,   0,   0,   0,   0,
571   46,  47,   0,  34,   0,  35,   0,   0,   0,   0,
572    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
573    0,   0,   0,  38,   0,   0,   0,   0,   0,   0,
574    0,  42,  22,  44,  29,  36,  39,   0,  84,   0,
575   33,   0,  37,  41,   0,   0,  27,  26, 101,  95,
576   99,   0,   0,  31,  32,  23,   0,   0,   0,  93,
577    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
578    0,  98,  97,   0,  87,  88,  89,  90,  91,  92,
579   94,  43,  28,   0,  30,   0,   0,   0,   0,   0,
580    0,  46,  47,   0,  34,   0,  35,   0,   0,   0,
581    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
582    0,   0,   0,   0,  38,   0,   0,   0,   0,   0,
583    0,   0,  42,  22,  44,  29,  36,  39,   0,  84,
584  250,  33,   0,  37,  41,   0,   0,  27,  26, 101,
585   95,  99,   0,   0,  31,  32,  23,   0,   0,   0,
586   93,   0,   0,   0,   0,   0,   0,   0,   0,   0,
587    0,   0,  98,  97,   0,  87,  88,  89,  90,  91,
588   92,  94,  43,  28,   0,  30,   0,   0,   0,   0,
589    0,   0,  46,  47,   0,  34,   0,  35,   0,   0,
590    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
591    0,   0,   0,   0,   0,  38,   0,   0,   0,   0,
592    0,   0,   0,  42,  22,  44,  29,  36,  39,   0,
593   84,   0,  33,   0,  37,  41,   0,   0,  27,  26,
594  101,  95,  99,   0,   0,  31,  32,  23,   0,   0,
595    0,  93,   0,   0,   0,   0,   0,   0,   0,   0,
596    0,   0,   0,  98,   0,   0,  87,  88,  89,  90,
597   91,  92,  94,  43,  28,   0,  30,   0,   0,   0,
598    0,   0,   0,  46,  47,   0,  34,   0,  35,   0,
599    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
600    0,   0,   0,   0,   0,   0,  38,   0,   0,   0,
601    0,   0,   0,   0,  42,  22,  44,  29,  36,  39,
602  101,  95,   0,  33,   0,  37,  41,   0,   0,  27,
603   26,  93,   0,  99,   0,   0,  31,  32,  23,   0,
604    0,   0,   0,   0,   0,   0,  87,  88,  89,  90,
605   91,  92,  94,  43,  28,   0,  30,   0,   0,   0,
606    0,   0,   0,  46,  47,   0,  34,   0,  35,   0,
607    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
608    0,   0,   0,   0,   0,   0,  38,   0,   0,   0,
609    0, 101,   0,   0,  42,  22,  44,  29,  36,  39,
610    0,   0, 240,  33,   0,  37,  41,   0,   0,  27,
611   26,   0,   0,  99,  98,  97,  31,  32,  23,   0,
612    0,   0,   0, 241,  43,  28,   0,  30,   0,   0,
613    0,   0,   0,   0,  46,  47,   0,  34,   0,  35,
614    0,   0,   0,   0,   0,   0,   0,  75,   0,   0,
615    0,   0,   0,   0,   0,   0,   0,  38,  18,   0,
616    0,  45,   0,   0,   0,  42,  22,  44,  29,  36,
617   39,   0, 237, 315,  33,   0,  37,  41,   0,   0,
618   27,  26,   0,   0,  99,   0,   0,  31,  32,  23,
619    0,  43,  28,   0,  30,   0,  73,   0,   0,   0,
620    0,  46,  47,   0,  34,   0,  35,   0,   0,   0,
621    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
622    0,   0,  77,  78,  38,   0,   0,   0,   0, 101,
623    0,   0,  42,  22,  44,  29,  36,  39,   0,   0,
624  240,  33,   0,  37,  41,   0,   0,  27,  26,   0,
625    0,  25,  98,  97,  31,  32,  23,   0,   0,   0,
626    0, 241,  43,  28,   0,  30,   0,   0,   0,   0,
627    0,   0,  46,  47,   0,  34,   0,  35,   0,   0,
628    0,   0,  12,  13,   0,   0,  16,  18,   0,   0,
629   45,   0,   0,   0,   0,  38,   0,   0,   0,   0,
630    0,   0,   0,  42,  22,  44,  29,  36,  39,   0,
631  237,   0,  33,   0,  37,  41,   0,   0,  27,  26,
632   43,  28,  99,  30,   0,  31,  32,  23,   0,  14,
633   46,  47,   0,  34,   0,  35,   0,   0,   0,   0,
634    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
635    0,   0,   0,  38,   0,   0, 101,   0,   0,   0,
636    0,  42,  22,  44,  29,  36,  39, 240,   0,   0,
637   33,   0,  37,  41,   0,   0,  27,  26,   0,  98,
638   25,   0,   0,  31,  32,  23,   0,   0, 241,  43,
639   28,   0,  30,   0,   0,   0,   0,   0,   0,  46,
640   47,   0,  34,   0,  35,   0,   0,   0,   0,   0,
641    0, 137,   0,   0,  18,   0, 142,  45,   0,   0,
642    0,   0,  38,   0,   0,   0,   0,   0,   0,   0,
643   42,  22,  44,  29,  36,  39,   0,   0,   0,  33,
644    0,  37,  41,   0,   0,  27,  26,  43,  28,  99,
645   30,   0,  31,  32,  23,   0,   0,  46,  47,   0,
646   34,   0,  35,   0,   0,   0,   0,   0,   0, 253,
647    0,   0,  18,   0,   0,  45,   0,   0,   0,   0,
648   38,   0,   0,   0,   0,   0,   0,   0,  42,  22,
649   44,  29,  36,  39,   0,   0,   0,  33,   0,  37,
650   41,   0,   0,  27,  26,  43,  28,  25,  30,   0,
651   31,  32,  23,   0,   0,  46,  47,   0,  34,   0,
652   35,   0,   0,   0,   0,   0,   0,   0,   0,   0,
653    0,   0,   0,   0,   0,   0,   0,   0,  38,   0,
654    0, 101,   0,   0,   0,   0,  42,  22,  44,  29,
655   36,  39, 240,   0,   0,  33,   0,  37,  41,   0,
656    0,  27,  26,   0,   0,  25,   0,   0,  31,  32,
657   23,   0,   0, 241,  43,  28,   0,  30,   0,   0,
658    0,   0,   0,   0,  46,  47,   0,  34,   0,  35,
659    0,   0,   0,   0,   0,   0, 174,   0,   0, 283,
660    0,   0,  45,   0,   0,   0,   0,  38,   0,   0,
661    0,   0,   0,   0,   0,  42,  22,  44,  29,  36,
662   39,   0,   0,   0,  33,   0,  37,  41,   0,   0,
663   27,  26,  43,  28,  99,  30,   0,  31,  32,  23,
664    0,   0,  46,  47,   0,  34,   0,  35,   0,   0,
665    0,   0,   0,   0, 172,   0,   0, 283,   0,   0,
666   45,   0,   0,   0,   0,  38,   0,   0,   0,   0,
667    0,   0,   0,  42,  22,  44,  29,  36,  39,   0,
668    0,   0,  33,   0,  37,  41,   0,   0,  27,  26,
669   43,  28,  25,  30,   0,  31,  32,  23,   0,   0,
670   46,  47,   0,  34,   0,  35,   0,   0,   0,   0,
671    0,   0, 253,   0,   0, 283,   0,   0,  45,   0,
672    0,   0,   0,  38,   0,   0,   0,   0,   0,   0,
673    0,  42,  22,  44,  29,  36,  39,   0,   0,   0,
674   33,   0,  37,  41,   0,   0,  27,  26,  43,  28,
675   25,  30,   0,  31,  32,  23,   0,   0,  46,  47,
676    0,  34,   0,  35,   0,   0,   0,   0,   0,   0,
677    0,   0,   0,  18,   0,   0,  45, 204,   0,   0,
678    0,  38,   0,   0,   0,   0,   0,   0,   0,  42,
679   22,  44,  29,  36,  39,   0,   0,   0,  33,   0,
680   37,  41,   0,   0,  27,  26,  43,  28,  25,  30,
681    0,  31,  32,  23,   0,   0,  46,  47,   0,  34,
682    0,  35,   0,   0,   0,   0,   0,   0,   0,   0,
683    0,  18,   0,   0,  45, 202,   0,   0,   0,  38,
684    0,   0,   0,   0,   0,   0,   0,  42,  22,  44,
685   29,  36,  39,   0,   0,   0,  33,   0,  37,  41,
686    0,   0,  27,  26,  43,  28,  25,  30,   0,  31,
687   32,  23,   0,   0,  46,  47,   0,  34,   0,  35,
688    0,   0,   0,   0,   0,   0, 174,   0,   0,  18,
689    0,   0,  45,   0,   0,   0,   0,  38,   0,   0,
690    0,   0,   0,   0,   0,  42,  22,  44,  29,  36,
691   39,   0,   0,   0,  33,   0,  37,  41,   0,   0,
692   27,  26,  43,  28,  25,  30,   0,  31,  32,  23,
693    0,   0,  46,  47,   0,  34,   0,  35,   0,   0,
694    0,   0,   0,   0, 172,   0,   0,  18,   0,   0,
695   45,   0,   0,   0,   0,  38,   0,   0,   0,   0,
696    0,   0,   0,  42,  22,  44,  29,  36,  39,   0,
697    0,   0,  33,   0,  37,  41,   0,   0,  27,  26,
698   43,  28,  25,  30,   0,  31,  32,  23,   0,   0,
699   46,  47,   0,  34,   0,  35,   0,   0,   0,   0,
700    0,   0,   0,   0,   0,  18,   0,   0,  45,   0,
701    0,   0,   0,  38,   0,   0,   0,   0,   0,   0,
702    0,  42,  22,  44,  29,  36,  39,   0,   0,   0,
703   33,   0,  37,  41,   0,   0,  27,  26,  43,  28,
704   25,  30,   0,  31,  32,  23,   0,   0,  46,  47,
705    0,  34,   0,  35,   0,   0,   0,   0,   0,   0,
706    0,   0,   0, 283,   0,   0,  45,   0,   0,   0,
707    0,  38,   0,   0,   0,   0,   0,   0,   0,  42,
708   22,  44,  29,  36,  39,   0,   0,   0,  33,   0,
709   37,  41,   0,   0,  27,  26,  43,  28,  25,  30,
710    0,  31,  32,  23,   0,   0,  46,  47,   0,  34,
711    0,  35,   0,   0,   0,   0,   0,   0,   0,   0,
712    0, 101,   0,   0,   0,   0,   0,   0,   0,  38,
713    0,   0,   0,   0,   0,   0,   0,  42,  22,  44,
714   29,  36,  39,   0,   0,   0,  33,   0,  37,  41,
715    0,   0,  27,  26,  43,  28,  25,  30,   0,  31,
716   32,  23,   0,   0,  46,  47,   0,  34,   0,  35,
717    0,   0,   0,   0,   0,   0,   0,   0, 193, 161,
718    0,   0,  45,   0,   0,   0,   0,  38,   0,   0,
719    0,   0,   0,   0,   0,  42,  22,  44,  29,  36,
720   39,   0,   0,   0,  33,   0,  37,  41,   0,   0,
721   27,  26,  43,  28,  99,  30,   0,  31,  32,  23,
722    0,   0,  46,  47,   0,  34,   0,  35,   0,   0,
723    0,   0,   0,   0,   0,   0,   0, 101,   0,   0,
724   45,   0,   0,   0,   0,  38,   0,   0,   0,   0,
725    0,   0,   0,  42,  22,  44,  29,  36,  39,   0,
726    0,   0,  33,   0,  37,  41,   0,   0,  27,  26,
727   43,  28,  25,  30,   0,  31,  32,  23,   0,   0,
728   46,  47,   0,  34,   0,  35,   0,   0,   0,   0,
729    0,   0,   0,   0,   0, 101,   0,   0,   0,   0,
730    0,   0,   0,  38,   0,   0,   0,   0,   0,   0,
731    0,  42,  22,  44,  29,  36,  39,   0,   0,   0,
732   33,   0,  37,  41,   0,   0,  27,  26,  43,  28,
733   25,  30,   0,  31,  32,  23,   0,   0,  46,  47,
734    0,  34,   0,  35,   0,   0,   0,   0,   0,   0,
735    0,   0,   0, 101,   0,   0,   0,   0,   0,   0,
736    0,  38,   0,   0,   0,   0,   0,   0,   0,  42,
737   22,  44,  29,  36,  39,   0,   0,   0,  33,   0,
738   37,  41,   0,   0,  27,  26,  43,  28,  99,  30,
739    0,  31,  32,  23,   0,   0,  46,  47,   0,  34,
740    0,  35,   0,   0,   0,   0,   0,   0,   0,   0,
741    0,   0,   0,   0,   0,   0,   0,   0,   0,  38,
742    0,   0,   0,   0,   0,   0,   0,  42,  22,  44,
743   29,  36,  39,   0,   0,   0,   0,   0,  37,  41,
744    0,   0,  27,  26,   0,   0,  99,   0,   0,  31,
745   32,  23
746 };
747 static	const	short	yypact[] =
748 {
749  154,-1000,-1000,-1000,3264, 180,-1000,-1000, 158,-1000,
750  189, 863, 181, 181, -51,2826,-1000, -30,3982,-1000,
751   25,  51,-1000,4272,-1000,4214,4272,4272, 186, 185,
752 4272, -40, -40, -33, 184, 183,-1000, 179, 178,-1000,
753  176, 170,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
754 3264, 863, 195,-1000,1341,-1000, 155, 155, 202,3391,
755 -1000,1409, 863, 155, 155,3391, 155,-1000, 195,-1000,
756  162, 146,4156,  -4,2826,-1000, 139,-1000,-1000, 863,
757  863, 123,-1000,-1000,3982,3924,3866,3982,3982,3982,
758 3982,3982,3982,3982,  -4, -71,  25,-1000,-1000,4272,
759  -80,3982,3982,-1000,-1000, 144,1814,4098,4272,4272,
760 4272,4272,4272,3982,-1000,-1000, -91, -91, -91,3808,
761 3750,  25,-1000,-1000,  14,4272,3982,3982,3982,3982,
762 3982,3982, -58,-1000,1273,3982, 198,-1000,-1000,-1000,
763 -1000, 198, 195,-1000,-1000,1409,1713,-1000, -35,1205,
764 -1000,-1000,1713,-1000,-1000,1409,-1000,3135,3982, 100,
765  192,3982,3206, -47,-1000,  25,  45,3982,1137,1069,
766  -50,2735,-1000,2917,-1000,2997,4330,4330,4330,4330,
767 4330,4330,-1000,4330,-1000, -40,2644,2826,   8,3449,
768 -1000,3449,-1000,4272, -91,  27,  27, -91, -91, -91,
769   83,2826,-1000, 140,-1000, 133,4272,  25,2553,2553,
770 2553, 132, 192,2553,2553,  90,-1000, 181,-1000,-1000,
771 -1000,-1000,1001,-1000, 196,-1000,-1000,-1000, 105,  32,
772 -1000,2459,4272,4272,4272,3692, 129,4040,3634,3576,
773 4040,  -4,  25,4040,3982,2459,-1000,-1000, 106,-1000,
774 3982,-1000,  -4,-1000,2826,2826,  25,3449,-1000,-1000,
775 -1000,  25,3449,3449,  50,-1000,3449,3449,3449,-1000,
776  863, -78,-1000,-1000,-1000, 156,  -4, 194,-1000,  25,
777   25,  25,3206,3982,   7,3068,3333,3518,-1000,4330,
778 -1000,3206,  75, 194, 194,  34,2826,-1000,2826,2368,
779   87,  85,2277,  70,1611,1510, 635, 931, 109,3982,
780  195,  52,-1000,  65,  -4,4040,-1000, 181,-1000,-1000,
781 -1000,-1000,-1000,3449,-1000,-1000,   4,-1000,   4,3449,
782 -1000,-1000,3982,2186,3135, 194,   7,-1000,3206, 863,
783 2087,  82,  72,  57,1996,1905, 195,  52,1409, 793,
784 -1000,-1000,-1000,-1000,-1000, 155,3135, 194,-1000,-1000,
785 -1000,  52,1409, 194,-1000,1409,-1000
786 };
787 static	const	short	yypgo[] =
788 {
789    0, 265, 505, 227,   5, 264,   4, 263, 242, 251,
790    9,  46, 262,  11,   2,   3, 223,  38,   0, 185,
791  260, 253, 250, 248, 247, 245, 243,   1, 237, 213,
792    7, 231,   8, 401,  19,  15, 116,  98, 230, 229,
793  228, 226, 224, 221, 220, 219, 218, 217, 216
794 };
795 static	const	short	yyr1[] =
796 {
797    0,  40,  40,  36,  36,  37,  37,  33,  33,  26,
798   26,  24,  24,  41,  22,  42,  22,  43,  22,  20,
799   20,  23,  30,  30,  34,  34,  35,  35,  29,  29,
800   15,  15,   1,   1,  10,  11,  11,  11,  11,  11,
801   11,  11,  44,  11,  12,  12,   6,   6,   3,   3,
802    3,   3,   3,   3,   3,   3,   3,   3,   3,   2,
803    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
804    2,   2,   2,   2,   2,   2,   2,   2,   4,   4,
805    5,   5,   7,   7,   7,  39,  39,  28,  28,  28,
806   28,  31,  31,   9,   9,  45,  13,  32,  32,  14,
807   14,  14,  14,  14,  14,  14,  14,  27,  27,  16,
808   16,  46,  47,  16,  16,  16,  16,  16,  16,  16,
809   16,  16,  16,  16,  16,  48,  16,  16,  17,  17,
810   38,  38,   8,   8,   8,   8,   8,   8,   8,   8,
811    8,   8,   8,   8,   8,   8,   8,   8,   8,   8,
812    8,   8,   8,   8,   8,   8,   8,   8,   8,   8,
813    8,   8,   8,   8,   8,   8,   8,   8,   8,   8,
814    8,   8,   8,   8,  18,  18,  18,  18,  21,  21,
815   21,  19,  19,  19,  25
816 };
817 static	const	short	yyr2[] =
818 {
819    0,   1,   1,   1,   2,   1,   2,   1,   2,   1,
820    2,   1,   2,   0,  12,   0,  10,   0,   8,   1,
821    1,   4,   1,   2,   1,   2,   0,   1,   0,   1,
822    0,   1,   1,   3,   1,   1,   4,   4,   7,   3,
823    4,   4,   0,   9,   1,   3,   1,   3,   3,   5,
824    3,   3,   3,   3,   3,   5,   2,   1,   1,   3,
825    5,   3,   3,   3,   3,   3,   3,   3,   3,   3,
826    3,   3,   5,   4,   3,   2,   1,   1,   3,   3,
827    1,   3,   0,   1,   3,   1,   1,   1,   1,   2,
828    2,   1,   2,   1,   2,   0,   4,   1,   2,   4,
829    4,   4,   2,   5,   2,   1,   1,   1,   2,   2,
830    2,   0,   0,   9,   3,   2,   1,   4,   2,   3,
831    2,   2,   3,   2,   2,   0,   3,   2,   1,   2,
832    1,   1,   4,   3,   3,   3,   3,   3,   3,   2,
833    2,   2,   3,   4,   1,   3,   4,   2,   2,   2,
834    2,   2,   4,   3,   2,   1,   6,   6,   3,   6,
835    6,   1,   8,   8,   6,   4,   1,   6,   6,   8,
836    8,   8,   6,   1,   1,   4,   1,   2,   0,   1,
837    3,   1,   1,   1,   4
838 };
839 static	const	short	yychk[] =
840 {
841 -1000, -40,  -1,   2, -29, -28,  10,  15, -12, -11,
842  -10, -30,   8,   9,  55,  -2,  12, -18,  13,  -9,
843   -8, -19,  88, 111, -13, 106, 103, 102,  47,  90,
844   49, 109, 110,  96,  59,  61,  91,  98,  79,  92,
845  -38,  99,  87,  46,  89,  16,  56,  57,  10,  15,
846  -29, -30,  11,  10, -17, -16,  48,  50, -26,  53,
847  -22, -23, -30,  62,  63,  97, -14, -25,  15,  52,
848   54,  58, -39,  51,  -2,   2, 100,  77,  78, -30,
849  -30, -20,  87,  90,  94, -37, -36,  39,  40,  41,
850   42,  43,  44,  24,  45,  14,  -8,  37,  36, 106,
851  -18,  13,  70, 109, 110,  -4,  -2,  16, 102, 103,
852  104, 105, 108,  19,  -8,  -9,  -8,  -8,  -8,  13,
853   13,  -8, -18, -18, -18,  43,  13,  13,  13,  13,
854   13,  13, -45, -11, -17, -35, -34,  10,  18, -16,
855  -27, -34,  15, -27,  10, -46,  -2, -27, -16, -17,
856  -27, -27,  -2, -27, -27, -48, -35,  13,  13,  -7,
857   -5,  13,  -3, -18,  -9,  -8, -19,  13, -17, -17,
858   13,  -2,  10,  -2,  10,  -2,  -2,  -2,  -2,  -2,
859   -2,  -2, -13,  -2, -19,  96,  -2,  -2,  17, -33,
860   11, -33,  17,  70,  -8,  -8,  -8,  -8,  -8,  -8,
861   -6,  -2,  17,  -6,  17,  -6,  43,  -8,  -2,  -2,
862   -2,  -6, -13,  -2,  -2,  93,  18, -10,  10, -35,
863  -16, -27, -24,  80, -31,  18, -27, -16, -15, -19,
864  -14,  -2,  14,  38,  41, -33,  -4,  94, -37, -36,
865   24,  45,  -8,  70,  19,  -2,  18,  18, -21,  87,
866   95, -18,  45,  10,  -2,  -2,  -8, -33,  20,  17,
867   17,  -8, -33, -33, -33,  17, -33, -33, -33,  16,
868  -30, -47,  10, -16,  10,  15,  45, -32,  17,  -8,
869   -8,  -8,  -3,  13,  17,  -3,  -3,  -3, -13,  -3,
870  -19,  -3,  -6, -32, -32, -33,  -2, -19,  -2,  -2,
871  -13, -13,  -2, -19,  -2,  -2,  -2, -17, 100, -35,
872   15, -19,  10,  -4,  45,  95,  20, -44,  87,  17,
873   17,  17,  17, -33,  17,  17, -33,  17, -33, -33,
874   17,  18,  13,  -2, -35, -32,  17, -19,  -3, -30,
875   -2, -13, -18, -18,  -2,  -2,  15, -15, -43, -17,
876   17,  17,  17,  17,  17,  17, -35, -32, -16,  18,
877  -27, -15, -42, -32, -16, -41, -16
878 };
879 static	const	short	yydef[] =
880 {
881   -2,  -2,   1,   2,  32,  29,  87,  88,  28,  44,
882   35,   0,   0,   0,   0,  34,  22, 173,   0,  76,
883   77, 174, 176,   0,  93,   0,   0,   0, 144,   0,
884    0,   0,   0, 155,   0,   0, 161,   0,   0, 166,
885    0,   0, 181, 182, 183,  95, 130, 131,  89,  90,
886   33,   0,  26,  23,   0, 128,   0,   0, 111,   0,
887  116,   0,   0,   0,   0,   0,   0, 125,  26,   9,
888    0,   0,  82,   0, 105, 106,   0,  85,  86,   0,
889    0,   0,  19,  20,   0,   0,   0,   0,   0,   0,
890    0,   0,   0,   0,   0,   0,  75,   5,   3,   0,
891  173,   0,   0, 150, 151,   0,   0,   0,   0,   0,
892    0,   0,   0,   0, 177,  94, 141, 139, 140,   0,
893    0, 147, 148, 149, 154,   0,   0,   0,   0,   0,
894    0,   0,   0,  45,   0,   0,  27,  24,  39, 129,
895  109, 107,  26, 110,  10,   0,   0, 115, 118,   0,
896  120, 121,   0, 123, 124,   0, 127,  -2,   0, 102,
897   83,   0,  80, 173,  57,  58, 104,   0,   0,   0,
898  178,   0,   6,  61,   4,  62,  -2,  -2,  -2,  -2,
899   -2,  -2,  69,  -2,  71,  74,   0,  59,   0,   0,
900    7,   0, 158,   0, 136, 133, 134, 135, 137, 138,
901    0,  46, 142,   0, 145,   0,   0, 153,   0,   0,
902    0,   0,  93,   0,   0,   0,  36,  37,  25, 108,
903  112, 114,   0,  11, 119,  91, 122, 126,   0, 174,
904   31,   0,   0,   0,   0,   0,   0,   0,   0,   0,
905    0,   0,  56,   0,   0,   0,  40,  41,   0, 179,
906    0,  73,   0,   8,  79,  78, 132,   0, 175, 143,
907  146, 152,   0,   0,   0, 165,   0,   0,   0,  96,
908    0,   0,  12, 117,  92,  26,   0,  21,  97,  99,
909  100, 101,  81,   0,  84,   0,  50,  51,  52,  -2,
910   54,  48,   0, 184,  42,   0,  60,  72,  47,   0,
911   93,  93,   0,   0,   0,   0,   0,   0,   0,   0,
912   26,   0,  98,   0,   0,   0, 103,   0, 180, 156,
913  157, 159, 160,   0, 164, 167,   0, 168,   0,   0,
914  172,  38,   0,   0,  -2,  17,   0,  55,  49,   0,
915    0,  93,   0,   0,   0,   0,  26,   0,   0,   0,
916  162, 163, 169, 170, 171,   0,  -2,  15,  18,  43,
917  113,   0,   0,  13,  16,   0,  14
918 };
919 static	const	short	yytok1[] =
920 {
921    1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
922    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
923    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
924    0,   0,   0,   0,   0,   0,   0, 105,   0,   0,
925   13,  17, 104, 102,  11, 103,   0,  16,   0,   0,
926    0,   0,   0,   0,   0,   0,   0,   0,  95,  15,
927    0,   0,   0,  94,   0,   0,   0,   0,   0,   0,
928    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
929    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
930    0,  19,   0,  20,   0,   0,   0,   0,   0,   0,
931    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
932    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
933    0,   0,   0,  12,  14,  18
934 };
935 static	const	short	yytok2[] =
936 {
937    2,   3,   4,   5,   6,   7,   8,   9,  10,  21,
938   22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
939   32,  33,  34,  35,  36,  37,  38,  39,  40,  41,
940   42,  43,  44,  45,  46,  47,  48,  49,  50,  51,
941   52,  53,  54,  55,  56,  57,  58,  59,  60,  61,
942   62,  63,  64,  65,  66,  67,  68,  69,  70,  71,
943   72,  73,  74,  75,  76,  77,  78,  79,  80,  81,
944   82,  83,  84,  85,  86,  87,  88,  89,  90,  91,
945   92,  93,  96,  97,  98,  99, 100, 101, 106, 107,
946  108, 109, 110, 111, 112
947 };
948 static	const	long	yytok3[] =
949 {
950    0
951 };
952 #define YYFLAG 		-1000
953 #define YYERROR		goto yyerrlab
954 #define YYACCEPT	return(0)
955 #define YYABORT		return(1)
956 #define	yyclearin	yychar = -1
957 #define	yyerrok		yyerrflag = 0
958 
959 #ifdef	yydebug
960 #include	"y.debug"
961 #else
962 #define	yydebug		0
963 static	const	char*	yytoknames[1];		/* for debugging */
964 static	const	char*	yystates[1];		/* for debugging */
965 #endif
966 
967 /*	parser for yacc output	*/
968 #ifdef YYARG
969 #define	yynerrs		yyarg->yynerrs
970 #define	yyerrflag	yyarg->yyerrflag
971 #define yyval		yyarg->yyval
972 #define yylval		yyarg->yylval
973 #else
974 int	yynerrs = 0;		/* number of errors */
975 int	yyerrflag = 0;		/* error recovery flag */
976 #endif
977 
978 static const char*
yytokname(int yyc)979 yytokname(int yyc)
980 {
981 	static char x[10];
982 
983 	if(yyc > 0 && yyc <= sizeof(yytoknames)/sizeof(yytoknames[0]))
984 	if(yytoknames[yyc-1])
985 		return yytoknames[yyc-1];
986 	sprintf(x, "<%d>", yyc);
987 	return x;
988 }
989 
990 static const char*
yystatname(int yys)991 yystatname(int yys)
992 {
993 	static char x[10];
994 
995 	if(yys >= 0 && yys < sizeof(yystates)/sizeof(yystates[0]))
996 	if(yystates[yys])
997 		return yystates[yys];
998 	sprintf(x, "<%d>\n", yys);
999 	return x;
1000 }
1001 
1002 static long
1003 #ifdef YYARG
yylex1(struct Yyarg * yyarg)1004 yylex1(struct Yyarg *yyarg)
1005 #else
1006 yylex1(void)
1007 #endif
1008 {
1009 	long yychar;
1010 	const long *t3p;
1011 	int c;
1012 
1013 #ifdef YYARG
1014 	yychar = yylex(yyarg);
1015 #else
1016 	yychar = yylex();
1017 #endif
1018 	if(yychar <= 0) {
1019 		c = yytok1[0];
1020 		goto out;
1021 	}
1022 	if(yychar < sizeof(yytok1)/sizeof(yytok1[0])) {
1023 		c = yytok1[yychar];
1024 		goto out;
1025 	}
1026 	if(yychar >= YYPRIVATE)
1027 		if(yychar < YYPRIVATE+sizeof(yytok2)/sizeof(yytok2[0])) {
1028 			c = yytok2[yychar-YYPRIVATE];
1029 			goto out;
1030 		}
1031 	for(t3p=yytok3;; t3p+=2) {
1032 		c = t3p[0];
1033 		if(c == yychar) {
1034 			c = t3p[1];
1035 			goto out;
1036 		}
1037 		if(c == 0)
1038 			break;
1039 	}
1040 	c = 0;
1041 
1042 out:
1043 	if(c == 0)
1044 		c = yytok2[1];	/* unknown char */
1045 	if(yydebug >= 3)
1046 		printf("lex %.4lX %s\n", yychar, yytokname(c));
1047 	return c;
1048 }
1049 
1050 int
1051 #ifdef YYARG
yyparse(struct Yyarg * yyarg)1052 yyparse(struct Yyarg *yyarg)
1053 #else
1054 yyparse(void)
1055 #endif
1056 {
1057 	struct
1058 	{
1059 		YYSTYPE	yyv;
1060 		int	yys;
1061 	} yys[YYMAXDEPTH], *yyp, *yypt;
1062 	const short *yyxi;
1063 	int yyj, yym, yystate, yyn, yyg;
1064 	long yychar;
1065 #ifndef YYARG
1066 	YYSTYPE save1, save2;
1067 	int save3, save4;
1068 
1069 	save1 = yylval;
1070 	save2 = yyval;
1071 	save3 = yynerrs;
1072 	save4 = yyerrflag;
1073 #endif
1074 
1075 	yystate = 0;
1076 	yychar = -1;
1077 	yynerrs = 0;
1078 	yyerrflag = 0;
1079 	yyp = &yys[-1];
1080 	goto yystack;
1081 
1082 ret0:
1083 	yyn = 0;
1084 	goto ret;
1085 
1086 ret1:
1087 	yyn = 1;
1088 	goto ret;
1089 
1090 ret:
1091 #ifndef YYARG
1092 	yylval = save1;
1093 	yyval = save2;
1094 	yynerrs = save3;
1095 	yyerrflag = save4;
1096 #endif
1097 	return yyn;
1098 
1099 yystack:
1100 	/* put a state and value onto the stack */
1101 	if(yydebug >= 4)
1102 		printf("char %s in %s", yytokname(yychar), yystatname(yystate));
1103 
1104 	yyp++;
1105 	if(yyp >= &yys[YYMAXDEPTH]) {
1106 		yyerror("yacc stack overflow");
1107 		goto ret1;
1108 	}
1109 	yyp->yys = yystate;
1110 	yyp->yyv = yyval;
1111 
1112 yynewstate:
1113 	yyn = yypact[yystate];
1114 	if(yyn <= YYFLAG)
1115 		goto yydefault; /* simple state */
1116 	if(yychar < 0)
1117 #ifdef YYARG
1118 		yychar = yylex1(yyarg);
1119 #else
1120 		yychar = yylex1();
1121 #endif
1122 	yyn += yychar;
1123 	if(yyn < 0 || yyn >= YYLAST)
1124 		goto yydefault;
1125 	yyn = yyact[yyn];
1126 	if(yychk[yyn] == yychar) { /* valid shift */
1127 		yychar = -1;
1128 		yyval = yylval;
1129 		yystate = yyn;
1130 		if(yyerrflag > 0)
1131 			yyerrflag--;
1132 		goto yystack;
1133 	}
1134 
1135 yydefault:
1136 	/* default state action */
1137 	yyn = yydef[yystate];
1138 	if(yyn == -2) {
1139 		if(yychar < 0)
1140 #ifdef YYARG
1141 		yychar = yylex1(yyarg);
1142 #else
1143 		yychar = yylex1();
1144 #endif
1145 
1146 		/* look through exception table */
1147 		for(yyxi=yyexca;; yyxi+=2)
1148 			if(yyxi[0] == -1 && yyxi[1] == yystate)
1149 				break;
1150 		for(yyxi += 2;; yyxi += 2) {
1151 			yyn = yyxi[0];
1152 			if(yyn < 0 || yyn == yychar)
1153 				break;
1154 		}
1155 		yyn = yyxi[1];
1156 		if(yyn < 0)
1157 			goto ret0;
1158 	}
1159 	if(yyn == 0) {
1160 		/* error ... attempt to resume parsing */
1161 		switch(yyerrflag) {
1162 		case 0:   /* brand new error */
1163 			yyerror("syntax error");
1164 			if(yydebug >= 1) {
1165 				printf("%s", yystatname(yystate));
1166 				printf("saw %s\n", yytokname(yychar));
1167 			}
1168 			goto yyerrlab;
1169 		yyerrlab:
1170 			yynerrs++;
1171 
1172 		case 1:
1173 		case 2: /* incompletely recovered error ... try again */
1174 			yyerrflag = 3;
1175 
1176 			/* find a state where "error" is a legal shift action */
1177 			while(yyp >= yys) {
1178 				yyn = yypact[yyp->yys] + YYERRCODE;
1179 				if(yyn >= 0 && yyn < YYLAST) {
1180 					yystate = yyact[yyn];  /* simulate a shift of "error" */
1181 					if(yychk[yystate] == YYERRCODE)
1182 						goto yystack;
1183 				}
1184 
1185 				/* the current yyp has no shift onn "error", pop stack */
1186 				if(yydebug >= 2)
1187 					printf("error recovery pops state %d, uncovers %d\n",
1188 						yyp->yys, (yyp-1)->yys );
1189 				yyp--;
1190 			}
1191 			/* there is no state on the stack with an error shift ... abort */
1192 			goto ret1;
1193 
1194 		case 3:  /* no shift yet; clobber input char */
1195 			if(yydebug >= YYEOFCODE)
1196 				printf("error recovery discards %s\n", yytokname(yychar));
1197 			if(yychar == YYEOFCODE)
1198 				goto ret1;
1199 			yychar = -1;
1200 			goto yynewstate;   /* try again in the same state */
1201 		}
1202 	}
1203 
1204 	/* reduction by production yyn */
1205 	if(yydebug >= 2)
1206 		printf("reduce %d in:\n\t%s", yyn, yystatname(yystate));
1207 
1208 	yypt = yyp;
1209 	yyp -= yyr2[yyn];
1210 	yyval = (yyp+1)->yyv;
1211 	yym = yyn;
1212 
1213 	/* consult goto table to find next state */
1214 	yyn = yyr1[yyn];
1215 	yyg = yypgo[yyn];
1216 	yyj = yyg + yyp->yys + 1;
1217 
1218 	if(yyj >= YYLAST || yychk[yystate=yyact[yyj]] != -yyn)
1219 		yystate = yyact[yyg];
1220 	switch(yym) {
1221 
1222 case 1:
1223 #line	98	"/n/fs/fac/bwk/awk/awkgram.y"
1224 { if (errorflag==0)
1225 			winner = (Node *)stat3(PROGRAM, beginloc, yypt[-0].yyv.p, endloc); } break;
1226 case 2:
1227 #line	100	"/n/fs/fac/bwk/awk/awkgram.y"
1228 { yyclearin; bracecheck(); SYNTAX("bailing out"); } break;
1229 case 13:
1230 #line	124	"/n/fs/fac/bwk/awk/awkgram.y"
1231 {inloop++;} break;
1232 case 14:
1233 #line	125	"/n/fs/fac/bwk/awk/awkgram.y"
1234 { --inloop; yyval.p = stat4(FOR, yypt[-9].yyv.p, notnull(yypt[-6].yyv.p), yypt[-3].yyv.p, yypt[-0].yyv.p); } break;
1235 case 15:
1236 #line	126	"/n/fs/fac/bwk/awk/awkgram.y"
1237 {inloop++;} break;
1238 case 16:
1239 #line	127	"/n/fs/fac/bwk/awk/awkgram.y"
1240 { --inloop; yyval.p = stat4(FOR, yypt[-7].yyv.p, NIL, yypt[-3].yyv.p, yypt[-0].yyv.p); } break;
1241 case 17:
1242 #line	128	"/n/fs/fac/bwk/awk/awkgram.y"
1243 {inloop++;} break;
1244 case 18:
1245 #line	129	"/n/fs/fac/bwk/awk/awkgram.y"
1246 { --inloop; yyval.p = stat3(IN, yypt[-5].yyv.p, makearr(yypt[-3].yyv.p), yypt[-0].yyv.p); } break;
1247 case 19:
1248 #line	133	"/n/fs/fac/bwk/awk/awkgram.y"
1249 { setfname(yypt[-0].yyv.cp); } break;
1250 case 20:
1251 #line	134	"/n/fs/fac/bwk/awk/awkgram.y"
1252 { setfname(yypt[-0].yyv.cp); } break;
1253 case 21:
1254 #line	138	"/n/fs/fac/bwk/awk/awkgram.y"
1255 { yyval.p = notnull(yypt[-1].yyv.p); } break;
1256 case 26:
1257 #line	150	"/n/fs/fac/bwk/awk/awkgram.y"
1258 { yyval.i = 0; } break;
1259 case 28:
1260 #line	155	"/n/fs/fac/bwk/awk/awkgram.y"
1261 { yyval.i = 0; } break;
1262 case 30:
1263 #line	161	"/n/fs/fac/bwk/awk/awkgram.y"
1264 { yyval.p = 0; } break;
1265 case 32:
1266 #line	166	"/n/fs/fac/bwk/awk/awkgram.y"
1267 { yyval.p = 0; } break;
1268 case 33:
1269 #line	167	"/n/fs/fac/bwk/awk/awkgram.y"
1270 { yyval.p = yypt[-1].yyv.p; } break;
1271 case 34:
1272 #line	171	"/n/fs/fac/bwk/awk/awkgram.y"
1273 { yyval.p = notnull(yypt[-0].yyv.p); } break;
1274 case 35:
1275 #line	175	"/n/fs/fac/bwk/awk/awkgram.y"
1276 { yyval.p = stat2(PASTAT, yypt[-0].yyv.p, stat2(PRINT, rectonode(), NIL)); } break;
1277 case 36:
1278 #line	176	"/n/fs/fac/bwk/awk/awkgram.y"
1279 { yyval.p = stat2(PASTAT, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
1280 case 37:
1281 #line	177	"/n/fs/fac/bwk/awk/awkgram.y"
1282 { yyval.p = pa2stat(yypt[-3].yyv.p, yypt[-0].yyv.p, stat2(PRINT, rectonode(), NIL)); } break;
1283 case 38:
1284 #line	178	"/n/fs/fac/bwk/awk/awkgram.y"
1285 { yyval.p = pa2stat(yypt[-6].yyv.p, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
1286 case 39:
1287 #line	179	"/n/fs/fac/bwk/awk/awkgram.y"
1288 { yyval.p = stat2(PASTAT, NIL, yypt[-1].yyv.p); } break;
1289 case 40:
1290 #line	181	"/n/fs/fac/bwk/awk/awkgram.y"
1291 { beginloc = linkum(beginloc, yypt[-1].yyv.p); yyval.p = 0; } break;
1292 case 41:
1293 #line	183	"/n/fs/fac/bwk/awk/awkgram.y"
1294 { endloc = linkum(endloc, yypt[-1].yyv.p); yyval.p = 0; } break;
1295 case 42:
1296 #line	184	"/n/fs/fac/bwk/awk/awkgram.y"
1297 {infunc++;} break;
1298 case 43:
1299 #line	185	"/n/fs/fac/bwk/awk/awkgram.y"
1300 { infunc--; curfname=0; defn((Cell *)yypt[-7].yyv.p, yypt[-5].yyv.p, yypt[-1].yyv.p); yyval.p = 0; } break;
1301 case 45:
1302 #line	190	"/n/fs/fac/bwk/awk/awkgram.y"
1303 { yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1304 case 47:
1305 #line	195	"/n/fs/fac/bwk/awk/awkgram.y"
1306 { yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1307 case 48:
1308 #line	199	"/n/fs/fac/bwk/awk/awkgram.y"
1309 { yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1310 case 49:
1311 #line	201	"/n/fs/fac/bwk/awk/awkgram.y"
1312 { yyval.p = op3(CONDEXPR, notnull(yypt[-4].yyv.p), yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1313 case 50:
1314 #line	203	"/n/fs/fac/bwk/awk/awkgram.y"
1315 { yyval.p = op2(BOR, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break;
1316 case 51:
1317 #line	205	"/n/fs/fac/bwk/awk/awkgram.y"
1318 { yyval.p = op2(AND, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break;
1319 case 52:
1320 #line	206	"/n/fs/fac/bwk/awk/awkgram.y"
1321 { yyval.p = op3(yypt[-1].yyv.i, NIL, yypt[-2].yyv.p, (Node*)makedfa(yypt[-0].yyv.s, 0)); } break;
1322 case 53:
1323 #line	208	"/n/fs/fac/bwk/awk/awkgram.y"
1324 { if (constnode(yypt[-0].yyv.p))
1325 			yyval.p = op3(yypt[-1].yyv.i, NIL, yypt[-2].yyv.p, (Node*)makedfa(strnode(yypt[-0].yyv.p), 0));
1326 		  else
1327 			yyval.p = op3(yypt[-1].yyv.i, (Node *)1, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1328 case 54:
1329 #line	212	"/n/fs/fac/bwk/awk/awkgram.y"
1330 { yyval.p = op2(INTEST, yypt[-2].yyv.p, makearr(yypt[-0].yyv.p)); } break;
1331 case 55:
1332 #line	213	"/n/fs/fac/bwk/awk/awkgram.y"
1333 { yyval.p = op2(INTEST, yypt[-3].yyv.p, makearr(yypt[-0].yyv.p)); } break;
1334 case 56:
1335 #line	214	"/n/fs/fac/bwk/awk/awkgram.y"
1336 { yyval.p = op2(CAT, yypt[-1].yyv.p, yypt[-0].yyv.p); } break;
1337 case 59:
1338 #line	220	"/n/fs/fac/bwk/awk/awkgram.y"
1339 { yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1340 case 60:
1341 #line	222	"/n/fs/fac/bwk/awk/awkgram.y"
1342 { yyval.p = op3(CONDEXPR, notnull(yypt[-4].yyv.p), yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1343 case 61:
1344 #line	224	"/n/fs/fac/bwk/awk/awkgram.y"
1345 { yyval.p = op2(BOR, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break;
1346 case 62:
1347 #line	226	"/n/fs/fac/bwk/awk/awkgram.y"
1348 { yyval.p = op2(AND, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break;
1349 case 63:
1350 #line	227	"/n/fs/fac/bwk/awk/awkgram.y"
1351 { yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1352 case 64:
1353 #line	228	"/n/fs/fac/bwk/awk/awkgram.y"
1354 { yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1355 case 65:
1356 #line	229	"/n/fs/fac/bwk/awk/awkgram.y"
1357 { yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1358 case 66:
1359 #line	230	"/n/fs/fac/bwk/awk/awkgram.y"
1360 { yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1361 case 67:
1362 #line	231	"/n/fs/fac/bwk/awk/awkgram.y"
1363 { yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1364 case 68:
1365 #line	232	"/n/fs/fac/bwk/awk/awkgram.y"
1366 { yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1367 case 69:
1368 #line	233	"/n/fs/fac/bwk/awk/awkgram.y"
1369 { yyval.p = op3(yypt[-1].yyv.i, NIL, yypt[-2].yyv.p, (Node*)makedfa(yypt[-0].yyv.s, 0)); } break;
1370 case 70:
1371 #line	235	"/n/fs/fac/bwk/awk/awkgram.y"
1372 { if (constnode(yypt[-0].yyv.p))
1373 			yyval.p = op3(yypt[-1].yyv.i, NIL, yypt[-2].yyv.p, (Node*)makedfa(strnode(yypt[-0].yyv.p), 0));
1374 		  else
1375 			yyval.p = op3(yypt[-1].yyv.i, (Node *)1, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1376 case 71:
1377 #line	239	"/n/fs/fac/bwk/awk/awkgram.y"
1378 { yyval.p = op2(INTEST, yypt[-2].yyv.p, makearr(yypt[-0].yyv.p)); } break;
1379 case 72:
1380 #line	240	"/n/fs/fac/bwk/awk/awkgram.y"
1381 { yyval.p = op2(INTEST, yypt[-3].yyv.p, makearr(yypt[-0].yyv.p)); } break;
1382 case 73:
1383 #line	241	"/n/fs/fac/bwk/awk/awkgram.y"
1384 {
1385 			if (safe) SYNTAX("cmd | getline is unsafe");
1386 			else yyval.p = op3(GETLINE, yypt[-0].yyv.p, itonp(yypt[-2].yyv.i), yypt[-3].yyv.p); } break;
1387 case 74:
1388 #line	244	"/n/fs/fac/bwk/awk/awkgram.y"
1389 {
1390 			if (safe) SYNTAX("cmd | getline is unsafe");
1391 			else yyval.p = op3(GETLINE, (Node*)0, itonp(yypt[-1].yyv.i), yypt[-2].yyv.p); } break;
1392 case 75:
1393 #line	247	"/n/fs/fac/bwk/awk/awkgram.y"
1394 { yyval.p = op2(CAT, yypt[-1].yyv.p, yypt[-0].yyv.p); } break;
1395 case 78:
1396 #line	253	"/n/fs/fac/bwk/awk/awkgram.y"
1397 { yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1398 case 79:
1399 #line	254	"/n/fs/fac/bwk/awk/awkgram.y"
1400 { yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1401 case 81:
1402 #line	259	"/n/fs/fac/bwk/awk/awkgram.y"
1403 { yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1404 case 82:
1405 #line	263	"/n/fs/fac/bwk/awk/awkgram.y"
1406 { yyval.p = rectonode(); } break;
1407 case 84:
1408 #line	265	"/n/fs/fac/bwk/awk/awkgram.y"
1409 { yyval.p = yypt[-1].yyv.p; } break;
1410 case 93:
1411 #line	282	"/n/fs/fac/bwk/awk/awkgram.y"
1412 { yyval.p = op3(MATCH, NIL, rectonode(), (Node*)makedfa(yypt[-0].yyv.s, 0)); } break;
1413 case 94:
1414 #line	283	"/n/fs/fac/bwk/awk/awkgram.y"
1415 { yyval.p = op1(NOT, notnull(yypt[-0].yyv.p)); } break;
1416 case 95:
1417 #line	287	"/n/fs/fac/bwk/awk/awkgram.y"
1418 {startreg();} break;
1419 case 96:
1420 #line	287	"/n/fs/fac/bwk/awk/awkgram.y"
1421 { yyval.s = yypt[-1].yyv.s; } break;
1422 case 99:
1423 #line	295	"/n/fs/fac/bwk/awk/awkgram.y"
1424 {
1425 			if (safe) SYNTAX("print | is unsafe");
1426 			else yyval.p = stat3(yypt[-3].yyv.i, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
1427 case 100:
1428 #line	298	"/n/fs/fac/bwk/awk/awkgram.y"
1429 {
1430 			if (safe) SYNTAX("print >> is unsafe");
1431 			else yyval.p = stat3(yypt[-3].yyv.i, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
1432 case 101:
1433 #line	301	"/n/fs/fac/bwk/awk/awkgram.y"
1434 {
1435 			if (safe) SYNTAX("print > is unsafe");
1436 			else yyval.p = stat3(yypt[-3].yyv.i, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
1437 case 102:
1438 #line	304	"/n/fs/fac/bwk/awk/awkgram.y"
1439 { yyval.p = stat3(yypt[-1].yyv.i, yypt[-0].yyv.p, NIL, NIL); } break;
1440 case 103:
1441 #line	305	"/n/fs/fac/bwk/awk/awkgram.y"
1442 { yyval.p = stat2(DELETE, makearr(yypt[-3].yyv.p), yypt[-1].yyv.p); } break;
1443 case 104:
1444 #line	306	"/n/fs/fac/bwk/awk/awkgram.y"
1445 { yyval.p = stat2(DELETE, makearr(yypt[-0].yyv.p), 0); } break;
1446 case 105:
1447 #line	307	"/n/fs/fac/bwk/awk/awkgram.y"
1448 { yyval.p = exptostat(yypt[-0].yyv.p); } break;
1449 case 106:
1450 #line	308	"/n/fs/fac/bwk/awk/awkgram.y"
1451 { yyclearin; SYNTAX("illegal statement"); } break;
1452 case 109:
1453 #line	317	"/n/fs/fac/bwk/awk/awkgram.y"
1454 { if (!inloop) SYNTAX("break illegal outside of loops");
1455 				  yyval.p = stat1(BREAK, NIL); } break;
1456 case 110:
1457 #line	319	"/n/fs/fac/bwk/awk/awkgram.y"
1458 {  if (!inloop) SYNTAX("continue illegal outside of loops");
1459 				  yyval.p = stat1(CONTINUE, NIL); } break;
1460 case 111:
1461 #line	321	"/n/fs/fac/bwk/awk/awkgram.y"
1462 {inloop++;} break;
1463 case 112:
1464 #line	321	"/n/fs/fac/bwk/awk/awkgram.y"
1465 {--inloop;} break;
1466 case 113:
1467 #line	322	"/n/fs/fac/bwk/awk/awkgram.y"
1468 { yyval.p = stat2(DO, yypt[-6].yyv.p, notnull(yypt[-2].yyv.p)); } break;
1469 case 114:
1470 #line	323	"/n/fs/fac/bwk/awk/awkgram.y"
1471 { yyval.p = stat1(EXIT, yypt[-1].yyv.p); } break;
1472 case 115:
1473 #line	324	"/n/fs/fac/bwk/awk/awkgram.y"
1474 { yyval.p = stat1(EXIT, NIL); } break;
1475 case 117:
1476 #line	326	"/n/fs/fac/bwk/awk/awkgram.y"
1477 { yyval.p = stat3(IF, yypt[-3].yyv.p, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1478 case 118:
1479 #line	327	"/n/fs/fac/bwk/awk/awkgram.y"
1480 { yyval.p = stat3(IF, yypt[-1].yyv.p, yypt[-0].yyv.p, NIL); } break;
1481 case 119:
1482 #line	328	"/n/fs/fac/bwk/awk/awkgram.y"
1483 { yyval.p = yypt[-1].yyv.p; } break;
1484 case 120:
1485 #line	329	"/n/fs/fac/bwk/awk/awkgram.y"
1486 { if (infunc)
1487 				SYNTAX("next is illegal inside a function");
1488 			  yyval.p = stat1(NEXT, NIL); } break;
1489 case 121:
1490 #line	332	"/n/fs/fac/bwk/awk/awkgram.y"
1491 { if (infunc)
1492 				SYNTAX("nextfile is illegal inside a function");
1493 			  yyval.p = stat1(NEXTFILE, NIL); } break;
1494 case 122:
1495 #line	335	"/n/fs/fac/bwk/awk/awkgram.y"
1496 { yyval.p = stat1(RETURN, yypt[-1].yyv.p); } break;
1497 case 123:
1498 #line	336	"/n/fs/fac/bwk/awk/awkgram.y"
1499 { yyval.p = stat1(RETURN, NIL); } break;
1500 case 125:
1501 #line	338	"/n/fs/fac/bwk/awk/awkgram.y"
1502 {inloop++;} break;
1503 case 126:
1504 #line	338	"/n/fs/fac/bwk/awk/awkgram.y"
1505 { --inloop; yyval.p = stat2(WHILE, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1506 case 127:
1507 #line	339	"/n/fs/fac/bwk/awk/awkgram.y"
1508 { yyval.p = 0; } break;
1509 case 129:
1510 #line	344	"/n/fs/fac/bwk/awk/awkgram.y"
1511 { yyval.p = linkum(yypt[-1].yyv.p, yypt[-0].yyv.p); } break;
1512 case 132:
1513 #line	352	"/n/fs/fac/bwk/awk/awkgram.y"
1514 { yyval.p = op2(DIVEQ, yypt[-3].yyv.p, yypt[-0].yyv.p); } break;
1515 case 133:
1516 #line	353	"/n/fs/fac/bwk/awk/awkgram.y"
1517 { yyval.p = op2(ADD, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1518 case 134:
1519 #line	354	"/n/fs/fac/bwk/awk/awkgram.y"
1520 { yyval.p = op2(MINUS, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1521 case 135:
1522 #line	355	"/n/fs/fac/bwk/awk/awkgram.y"
1523 { yyval.p = op2(MULT, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1524 case 136:
1525 #line	356	"/n/fs/fac/bwk/awk/awkgram.y"
1526 { yyval.p = op2(DIVIDE, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1527 case 137:
1528 #line	357	"/n/fs/fac/bwk/awk/awkgram.y"
1529 { yyval.p = op2(MOD, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1530 case 138:
1531 #line	358	"/n/fs/fac/bwk/awk/awkgram.y"
1532 { yyval.p = op2(POWER, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
1533 case 139:
1534 #line	359	"/n/fs/fac/bwk/awk/awkgram.y"
1535 { yyval.p = op1(UMINUS, yypt[-0].yyv.p); } break;
1536 case 140:
1537 #line	360	"/n/fs/fac/bwk/awk/awkgram.y"
1538 { yyval.p = yypt[-0].yyv.p; } break;
1539 case 141:
1540 #line	361	"/n/fs/fac/bwk/awk/awkgram.y"
1541 { yyval.p = op1(NOT, notnull(yypt[-0].yyv.p)); } break;
1542 case 142:
1543 #line	362	"/n/fs/fac/bwk/awk/awkgram.y"
1544 { yyval.p = op2(BLTIN, itonp(yypt[-2].yyv.i), rectonode()); } break;
1545 case 143:
1546 #line	363	"/n/fs/fac/bwk/awk/awkgram.y"
1547 { yyval.p = op2(BLTIN, itonp(yypt[-3].yyv.i), yypt[-1].yyv.p); } break;
1548 case 144:
1549 #line	364	"/n/fs/fac/bwk/awk/awkgram.y"
1550 { yyval.p = op2(BLTIN, itonp(yypt[-0].yyv.i), rectonode()); } break;
1551 case 145:
1552 #line	365	"/n/fs/fac/bwk/awk/awkgram.y"
1553 { yyval.p = op2(CALL, celltonode(yypt[-2].yyv.cp,CVAR), NIL); } break;
1554 case 146:
1555 #line	366	"/n/fs/fac/bwk/awk/awkgram.y"
1556 { yyval.p = op2(CALL, celltonode(yypt[-3].yyv.cp,CVAR), yypt[-1].yyv.p); } break;
1557 case 147:
1558 #line	367	"/n/fs/fac/bwk/awk/awkgram.y"
1559 { yyval.p = op1(CLOSE, yypt[-0].yyv.p); } break;
1560 case 148:
1561 #line	368	"/n/fs/fac/bwk/awk/awkgram.y"
1562 { yyval.p = op1(PREDECR, yypt[-0].yyv.p); } break;
1563 case 149:
1564 #line	369	"/n/fs/fac/bwk/awk/awkgram.y"
1565 { yyval.p = op1(PREINCR, yypt[-0].yyv.p); } break;
1566 case 150:
1567 #line	370	"/n/fs/fac/bwk/awk/awkgram.y"
1568 { yyval.p = op1(POSTDECR, yypt[-1].yyv.p); } break;
1569 case 151:
1570 #line	371	"/n/fs/fac/bwk/awk/awkgram.y"
1571 { yyval.p = op1(POSTINCR, yypt[-1].yyv.p); } break;
1572 case 152:
1573 #line	372	"/n/fs/fac/bwk/awk/awkgram.y"
1574 { yyval.p = op3(GETLINE, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
1575 case 153:
1576 #line	373	"/n/fs/fac/bwk/awk/awkgram.y"
1577 { yyval.p = op3(GETLINE, NIL, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
1578 case 154:
1579 #line	374	"/n/fs/fac/bwk/awk/awkgram.y"
1580 { yyval.p = op3(GETLINE, yypt[-0].yyv.p, NIL, NIL); } break;
1581 case 155:
1582 #line	375	"/n/fs/fac/bwk/awk/awkgram.y"
1583 { yyval.p = op3(GETLINE, NIL, NIL, NIL); } break;
1584 case 156:
1585 #line	377	"/n/fs/fac/bwk/awk/awkgram.y"
1586 { yyval.p = op2(INDEX, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
1587 case 157:
1588 #line	379	"/n/fs/fac/bwk/awk/awkgram.y"
1589 { SYNTAX("index() doesn't permit regular expressions");
1590 		  yyval.p = op2(INDEX, yypt[-3].yyv.p, (Node*)yypt[-1].yyv.s); } break;
1591 case 158:
1592 #line	381	"/n/fs/fac/bwk/awk/awkgram.y"
1593 { yyval.p = yypt[-1].yyv.p; } break;
1594 case 159:
1595 #line	383	"/n/fs/fac/bwk/awk/awkgram.y"
1596 { yyval.p = op3(MATCHFCN, NIL, yypt[-3].yyv.p, (Node*)makedfa(yypt[-1].yyv.s, 1)); } break;
1597 case 160:
1598 #line	385	"/n/fs/fac/bwk/awk/awkgram.y"
1599 { if (constnode(yypt[-1].yyv.p))
1600 			yyval.p = op3(MATCHFCN, NIL, yypt[-3].yyv.p, (Node*)makedfa(strnode(yypt[-1].yyv.p), 1));
1601 		  else
1602 			yyval.p = op3(MATCHFCN, (Node *)1, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
1603 case 161:
1604 #line	389	"/n/fs/fac/bwk/awk/awkgram.y"
1605 { yyval.p = celltonode(yypt[-0].yyv.cp, CCON); } break;
1606 case 162:
1607 #line	391	"/n/fs/fac/bwk/awk/awkgram.y"
1608 { yyval.p = op4(SPLIT, yypt[-5].yyv.p, makearr(yypt[-3].yyv.p), yypt[-1].yyv.p, (Node*)STRING); } break;
1609 case 163:
1610 #line	393	"/n/fs/fac/bwk/awk/awkgram.y"
1611 { yyval.p = op4(SPLIT, yypt[-5].yyv.p, makearr(yypt[-3].yyv.p), (Node*)makedfa(yypt[-1].yyv.s, 1), (Node *)REGEXPR); } break;
1612 case 164:
1613 #line	395	"/n/fs/fac/bwk/awk/awkgram.y"
1614 { yyval.p = op4(SPLIT, yypt[-3].yyv.p, makearr(yypt[-1].yyv.p), NIL, (Node*)STRING); } break;
1615 case 165:
1616 #line	396	"/n/fs/fac/bwk/awk/awkgram.y"
1617 { yyval.p = op1(yypt[-3].yyv.i, yypt[-1].yyv.p); } break;
1618 case 166:
1619 #line	397	"/n/fs/fac/bwk/awk/awkgram.y"
1620 { yyval.p = celltonode(yypt[-0].yyv.cp, CCON); } break;
1621 case 167:
1622 #line	399	"/n/fs/fac/bwk/awk/awkgram.y"
1623 { yyval.p = op4(yypt[-5].yyv.i, NIL, (Node*)makedfa(yypt[-3].yyv.s, 1), yypt[-1].yyv.p, rectonode()); } break;
1624 case 168:
1625 #line	401	"/n/fs/fac/bwk/awk/awkgram.y"
1626 { if (constnode(yypt[-3].yyv.p))
1627 			yyval.p = op4(yypt[-5].yyv.i, NIL, (Node*)makedfa(strnode(yypt[-3].yyv.p), 1), yypt[-1].yyv.p, rectonode());
1628 		  else
1629 			yyval.p = op4(yypt[-5].yyv.i, (Node *)1, yypt[-3].yyv.p, yypt[-1].yyv.p, rectonode()); } break;
1630 case 169:
1631 #line	406	"/n/fs/fac/bwk/awk/awkgram.y"
1632 { yyval.p = op4(yypt[-7].yyv.i, NIL, (Node*)makedfa(yypt[-5].yyv.s, 1), yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
1633 case 170:
1634 #line	408	"/n/fs/fac/bwk/awk/awkgram.y"
1635 { if (constnode(yypt[-5].yyv.p))
1636 			yyval.p = op4(yypt[-7].yyv.i, NIL, (Node*)makedfa(strnode(yypt[-5].yyv.p), 1), yypt[-3].yyv.p, yypt[-1].yyv.p);
1637 		  else
1638 			yyval.p = op4(yypt[-7].yyv.i, (Node *)1, yypt[-5].yyv.p, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
1639 case 171:
1640 #line	413	"/n/fs/fac/bwk/awk/awkgram.y"
1641 { yyval.p = op3(SUBSTR, yypt[-5].yyv.p, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
1642 case 172:
1643 #line	415	"/n/fs/fac/bwk/awk/awkgram.y"
1644 { yyval.p = op3(SUBSTR, yypt[-3].yyv.p, yypt[-1].yyv.p, NIL); } break;
1645 case 175:
1646 #line	421	"/n/fs/fac/bwk/awk/awkgram.y"
1647 { yyval.p = op2(ARRAY, makearr(yypt[-3].yyv.p), yypt[-1].yyv.p); } break;
1648 case 176:
1649 #line	422	"/n/fs/fac/bwk/awk/awkgram.y"
1650 { yyval.p = op1(INDIRECT, celltonode(yypt[-0].yyv.cp, CVAR)); } break;
1651 case 177:
1652 #line	423	"/n/fs/fac/bwk/awk/awkgram.y"
1653 { yyval.p = op1(INDIRECT, yypt[-0].yyv.p); } break;
1654 case 178:
1655 #line	427	"/n/fs/fac/bwk/awk/awkgram.y"
1656 { arglist = yyval.p = 0; } break;
1657 case 179:
1658 #line	428	"/n/fs/fac/bwk/awk/awkgram.y"
1659 { arglist = yyval.p = celltonode(yypt[-0].yyv.cp,CVAR); } break;
1660 case 180:
1661 #line	429	"/n/fs/fac/bwk/awk/awkgram.y"
1662 {
1663 			checkdup(yypt[-2].yyv.p, yypt[-0].yyv.cp);
1664 			arglist = yyval.p = linkum(yypt[-2].yyv.p,celltonode(yypt[-0].yyv.cp,CVAR)); } break;
1665 case 181:
1666 #line	435	"/n/fs/fac/bwk/awk/awkgram.y"
1667 { yyval.p = celltonode(yypt[-0].yyv.cp, CVAR); } break;
1668 case 182:
1669 #line	436	"/n/fs/fac/bwk/awk/awkgram.y"
1670 { yyval.p = op1(ARG, itonp(yypt[-0].yyv.i)); } break;
1671 case 183:
1672 #line	437	"/n/fs/fac/bwk/awk/awkgram.y"
1673 { yyval.p = op1(VARNF, (Node *) yypt[-0].yyv.cp); } break;
1674 case 184:
1675 #line	442	"/n/fs/fac/bwk/awk/awkgram.y"
1676 { yyval.p = notnull(yypt[-1].yyv.p); } break;
1677 	}
1678 	goto yystack;  /* stack new state and value */
1679 }
1680