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