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