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