1 
2 # line 2 "awk.g.y"
3 /*
4  * CDDL HEADER START
5  *
6  * The contents of this file are subject to the terms of the
7  * Common Development and Distribution License, Version 1.0 only
8  * (the "License").  You may not use this file except in compliance
9  * with the License.
10  *
11  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
12  * or http://www.opensolaris.org/os/licensing.
13  * See the License for the specific language governing permissions
14  * and limitations under the License.
15  *
16  * When distributing Covered Code, include this CDDL HEADER in each
17  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
18  * If applicable, add the following below this CDDL HEADER, with the
19  * fields enclosed by brackets "[]" replaced with your own identifying
20  * information: Portions Copyright [yyyy] [name of copyright owner]
21  *
22  * CDDL HEADER END
23  */
24 
25 # line 33 "awk.g.y"
26 #ident	"%Z%%M%	%I%	%E% SMI"	/* SVr4.0 2.10	*/
27 
28 # line 37 "awk.g.y"
29 #include "awk.h"
30 int yywrap(void) { return(1); }
31 #ifndef	DEBUG
32 #	define	PUTS(x)
33 #endif
34 Node	*beginloc = 0, *endloc = 0;
35 int	infunc	= 0;	/* = 1 if in arglist or body of func */
36 uchar	*curfname = 0;
37 Node	*arglist = 0;	/* list of args for current function */
38 static void	setfname(Cell *);
39 static int	constnode(Node *);
40 static uchar	*strnode(Node *);
41 static Node	*notnull();
42 
43 # line 52 "awk.g.y"
44 typedef union
45 #ifdef __cplusplus
46 	YYSTYPE
47 #endif
48  {
49 	Node	*p;
50 	Cell	*cp;
51 	int	i;
52 	uchar	*s;
53 } YYSTYPE;
54 # define FIRSTTOKEN 257
55 # define PROGRAM 258
56 # define PASTAT 259
57 # define PASTAT2 260
58 # define XBEGIN 261
59 # define XEND 262
60 # define NL 263
61 # define ARRAY 264
62 # define MATCH 265
63 # define NOTMATCH 266
64 # define MATCHOP 267
65 # define FINAL 268
66 # define DOT 269
67 # define ALL 270
68 # define CCL 271
69 # define NCCL 272
70 # define CHAR 273
71 # define OR 274
72 # define STAR 275
73 # define QUEST 276
74 # define PLUS 277
75 # define AND 278
76 # define BOR 279
77 # define APPEND 280
78 # define EQ 281
79 # define GE 282
80 # define GT 283
81 # define LE 284
82 # define LT 285
83 # define NE 286
84 # define IN 287
85 # define ARG 288
86 # define BLTIN 289
87 # define BREAK 290
88 # define CLOSE 291
89 # define CONTINUE 292
90 # define DELETE 293
91 # define DO 294
92 # define EXIT 295
93 # define FOR 296
94 # define FUNC 297
95 # define SUB 298
96 # define GSUB 299
97 # define IF 300
98 # define INDEX 301
99 # define LSUBSTR 302
100 # define MATCHFCN 303
101 # define NEXT 304
102 # define ADD 305
103 # define MINUS 306
104 # define MULT 307
105 # define DIVIDE 308
106 # define MOD 309
107 # define ASSIGN 310
108 # define ASGNOP 311
109 # define ADDEQ 312
110 # define SUBEQ 313
111 # define MULTEQ 314
112 # define DIVEQ 315
113 # define MODEQ 316
114 # define POWEQ 317
115 # define PRINT 318
116 # define PRINTF 319
117 # define SPRINTF 320
118 # define ELSE 321
119 # define INTEST 322
120 # define CONDEXPR 323
121 # define POSTINCR 324
122 # define PREINCR 325
123 # define POSTDECR 326
124 # define PREDECR 327
125 # define VAR 328
126 # define IVAR 329
127 # define VARNF 330
128 # define CALL 331
129 # define NUMBER 332
130 # define STRING 333
131 # define FIELD 334
132 # define REGEXPR 335
133 # define GETLINE 336
134 # define RETURN 337
135 # define SPLIT 338
136 # define SUBSTR 339
137 # define WHILE 340
138 # define CAT 341
139 # define NOT 342
140 # define UMINUS 343
141 # define POWER 344
142 # define DECR 345
143 # define INCR 346
144 # define INDIRECT 347
145 # define LASTTOKEN 348
146 
147 #include <inttypes.h>
148 
149 #ifdef __STDC__
150 #include <stdlib.h>
151 #include <string.h>
152 #define	YYCONST	const
153 #else
154 #include <malloc.h>
155 #include <memory.h>
156 #define	YYCONST
157 #endif
158 
159 #include <values.h>
160 
161 #if defined(__cplusplus) || defined(__STDC__)
162 
163 #if defined(__cplusplus) && defined(__EXTERN_C__)
164 extern "C" {
165 #endif
166 #ifndef yyerror
167 #if defined(__cplusplus)
168 	void yyerror(YYCONST char *);
169 #endif
170 #endif
171 #ifndef yylex
172 	int yylex(void);
173 #endif
174 	int yyparse(void);
175 #if defined(__cplusplus) && defined(__EXTERN_C__)
176 }
177 #endif
178 
179 #endif
180 
181 #define yyclearin yychar = -1
182 #define yyerrok yyerrflag = 0
183 extern int yychar;
184 extern int yyerrflag;
185 YYSTYPE yylval;
186 YYSTYPE yyval;
187 typedef int yytabelem;
188 #ifndef YYMAXDEPTH
189 #define YYMAXDEPTH 150
190 #endif
191 #if YYMAXDEPTH > 0
192 int yy_yys[YYMAXDEPTH], *yys = yy_yys;
193 YYSTYPE yy_yyv[YYMAXDEPTH], *yyv = yy_yyv;
194 #else	/* user does initial allocation */
195 int *yys;
196 YYSTYPE *yyv;
197 #endif
198 static int yymaxdepth = YYMAXDEPTH;
199 # define YYERRCODE 256
200 
201 # line 435 "awk.g.y"
202 
203 
204 static void
205 setfname(Cell *p)
206 {
207 	if (isarr(p))
208 		ERROR "%s is an array, not a function", p->nval SYNTAX;
209 	else if (isfunc(p))
210 		ERROR "you can't define function %s more than once", p->nval SYNTAX;
211 	curfname = p->nval;
212 }
213 
214 
215 static int
216 constnode(Node *p)
217 {
218 	return p->ntype == NVALUE && ((Cell *) (p->narg[0]))->csub == CCON;
219 }
220 
221 static uchar *
222 strnode(Node *p)
223 {
224 	return ((Cell *)(p->narg[0]))->sval;
225 }
226 
227 static Node *
228 notnull(Node *n)
229 {
230 	switch (n->nobj) {
231 	case LE: case LT: case EQ: case NE: case GT: case GE:
232 	case BOR: case AND: case NOT:
233 		return n;
234 	default:
235 		return op2(NE, n, nullnode);
236 	}
237 }
238 static YYCONST yytabelem yyexca[] ={
239 -1, 0,
240 	0, 25,
241 	261, 25,
242 	262, 25,
243 	123, 25,
244 	40, 25,
245 	47, 25,
246 	288, 25,
247 	289, 25,
248 	297, 25,
249 	298, 25,
250 	299, 25,
251 	301, 25,
252 	303, 25,
253 	320, 25,
254 	328, 25,
255 	329, 25,
256 	330, 25,
257 	331, 25,
258 	332, 25,
259 	333, 25,
260 	334, 25,
261 	336, 25,
262 	338, 25,
263 	339, 25,
264 	43, 25,
265 	45, 25,
266 	342, 25,
267 	345, 25,
268 	346, 25,
269 	347, 25,
270 	-2, 0,
271 -1, 1,
272 	0, -1,
273 	-2, 0,
274 -1, 153,
275 	59, 27,
276 	-2, 0,
277 -1, 173,
278 	124, 0,
279 	267, 0,
280 	281, 0,
281 	282, 0,
282 	283, 0,
283 	284, 0,
284 	285, 0,
285 	286, 0,
286 	287, 0,
287 	-2, 62,
288 -1, 174,
289 	124, 0,
290 	267, 0,
291 	281, 0,
292 	282, 0,
293 	283, 0,
294 	284, 0,
295 	285, 0,
296 	286, 0,
297 	287, 0,
298 	-2, 63,
299 -1, 175,
300 	124, 0,
301 	267, 0,
302 	281, 0,
303 	282, 0,
304 	283, 0,
305 	284, 0,
306 	285, 0,
307 	286, 0,
308 	287, 0,
309 	-2, 64,
310 -1, 176,
311 	124, 0,
312 	267, 0,
313 	281, 0,
314 	282, 0,
315 	283, 0,
316 	284, 0,
317 	285, 0,
318 	286, 0,
319 	287, 0,
320 	-2, 65,
321 -1, 177,
322 	124, 0,
323 	267, 0,
324 	281, 0,
325 	282, 0,
326 	283, 0,
327 	284, 0,
328 	285, 0,
329 	286, 0,
330 	287, 0,
331 	-2, 66,
332 -1, 178,
333 	124, 0,
334 	267, 0,
335 	281, 0,
336 	282, 0,
337 	283, 0,
338 	284, 0,
339 	285, 0,
340 	286, 0,
341 	287, 0,
342 	-2, 67,
343 -1, 180,
344 	124, 0,
345 	267, 0,
346 	281, 0,
347 	282, 0,
348 	283, 0,
349 	284, 0,
350 	285, 0,
351 	286, 0,
352 	287, 0,
353 	-2, 69,
354 -1, 285,
355 	267, 0,
356 	287, 0,
357 	-2, 51,
358 -1, 307,
359 	41, 27,
360 	-2, 0,
361 -1, 329,
362 	41, 27,
363 	-2, 0,
364 	};
365 # define YYNPROD 177
366 # define YYLAST 4282
367 static YYCONST yytabelem yyact[]={
368 
369     17,   122,   251,   110,    43,   239,   111,    43,   108,   106,
370    217,   107,   182,   109,   101,   102,    98,    31,    32,    25,
371    100,   198,    54,   251,   247,   110,    98,    43,    98,    98,
372    108,   251,   119,   120,   121,   109,    65,    84,    43,   101,
373    102,   220,   112,   310,    42,    24,    44,    42,    24,    44,
374     23,   250,   203,    23,   101,   102,    43,    81,   228,   136,
375     82,   274,    53,    25,   309,     7,    25,    42,    24,    44,
376    134,     7,   159,    23,    98,    48,   133,   271,    42,   214,
377     44,   141,   137,   135,   144,   104,    25,   151,   315,   150,
378     16,    51,   242,   112,   272,   187,    42,    85,    44,   256,
379     10,   187,   187,   224,    98,     9,    98,    98,    98,    98,
380     98,    98,    98,   130,   321,   312,   275,   187,   187,   187,
381    275,   280,   348,    98,   187,   145,   263,   347,   139,   187,
382    143,   196,   346,   318,   146,   148,   149,   258,   317,    98,
383    187,   165,   166,    98,   313,   268,   167,   164,    98,    62,
384    255,   152,   131,   133,    11,   129,   154,   153,   128,    98,
385     50,   159,    78,    79,   257,   127,   126,   187,   133,    98,
386     16,    98,   125,    98,    98,    98,    98,    98,    98,    98,
387    124,    98,   123,   249,    98,    98,   118,   117,   133,   133,
388    226,   185,     4,   114,   187,   221,   234,   314,    98,    11,
389    219,    49,    58,     1,    98,    71,    98,    98,    98,   216,
390     40,    98,    98,   218,   229,     5,    66,   230,   223,    61,
391    152,    60,   246,    80,   215,   158,     8,   155,    98,    98,
392     98,    98,   159,   156,   159,   159,   159,   159,   273,    21,
393    159,    98,   270,   232,    98,     2,     0,     0,     0,   200,
394    202,     0,     0,    98,    98,    95,   235,     0,   208,     0,
395      0,     0,     3,   137,     0,   113,     0,   115,   116,     6,
396      0,     0,     0,     0,     0,     6,   267,     0,   234,    47,
397     98,   213,    98,    98,    98,     0,    98,     0,    98,     0,
398    133,     0,     0,     0,    98,     0,    98,    98,     0,     0,
399     98,     0,    98,    98,    98,   290,    98,    98,   291,     0,
400    111,   162,   159,    95,     0,     0,     0,   234,     0,   234,
401    234,   234,     0,   234,   337,   234,   338,   288,     0,     0,
402      0,     0,   111,     0,    98,     0,    98,     0,   235,     0,
403     98,     0,     0,    95,   226,    95,   190,   191,   192,   193,
404    194,   195,     0,    19,   343,     0,    28,     0,    27,     0,
405     26,     0,   204,     0,     0,   351,   226,   133,     0,     0,
406    331,   234,    67,   353,   289,     0,     0,   235,    95,   235,
407    235,   235,    95,   235,     0,   235,   240,    95,     0,     0,
408      0,     0,   342,     0,     0,     0,     0,   344,   238,   340,
409    162,     0,     0,   350,     0,     0,     0,     0,    95,     0,
410     95,   330,    95,    95,    95,    95,    95,    95,    95,     0,
411     95,     0,    19,    95,    95,    28,     0,    27,     0,    26,
412      0,   235,     0,   341,     0,     0,    16,    95,     0,     0,
413      0,    67,     0,   259,     0,    95,    95,    95,     0,     0,
414     95,    95,     0,     0,     0,     0,     0,   279,     0,   281,
415    282,   283,   285,     0,   334,   287,     0,    95,   276,   277,
416    278,   162,     0,   162,   162,   162,   162,     0,     0,   162,
417    238,     0,    19,    95,     0,    28,     0,    27,     0,    26,
418      0,     0,    95,    95,     0,     0,     0,     0,     0,     0,
419      0,    67,     0,     0,     0,    16,     0,   352,     0,     0,
420      0,     0,     0,     0,     0,     0,     0,     0,     0,   238,
421      0,   238,   238,   238,     0,   238,     0,   238,     0,     0,
422      0,     0,     0,    95,     0,    95,    95,   333,     0,    95,
423      0,    95,    95,    95,     0,    95,    95,     0,     0,     0,
424      0,   162,    19,     0,     0,    28,     0,    27,     0,    26,
425      0,     0,     0,     0,     0,    16,     0,     0,     0,    74,
426      0,    67,     0,   238,     0,    95,   309,     0,     0,    95,
427      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
428      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
429      0,    43,    29,    55,    56,    57,    72,    68,    59,    69,
430      0,    45,    46,    70,    34,    22,    35,    63,     0,     0,
431      0,     0,     0,     0,    99,     0,     0,    28,     0,    27,
432      0,    76,    77,    38,     0,    16,     0,   304,    74,     0,
433      0,    42,    24,    44,    30,    36,    39,    23,     0,    33,
434     64,    37,    41,    75,     0,    18,     0,     0,    31,    32,
435     25,     0,     0,     0,     0,     0,     0,     0,     0,     0,
436     43,    29,    55,    56,    57,    72,    68,    59,    69,     0,
437     45,    46,    70,    34,    19,    35,    63,    28,   163,    27,
438      0,    26,     0,     0,     0,     0,     0,     0,    74,     0,
439     76,    77,    38,    67,     0,    52,     0,     0,     0,   181,
440     42,    24,    44,    30,    36,    39,    23,     0,    33,    64,
441     37,    41,    75,     0,    18,     0,     0,    31,    32,    25,
442     43,    29,    55,    56,    57,    72,    68,    59,    69,     0,
443     45,    46,    70,    34,    19,    35,    63,    28,     0,    27,
444      0,    26,     0,     0,     0,     0,     0,     0,     0,     0,
445     76,    77,    38,    67,     0,     0,     0,    16,    74,   225,
446     42,    24,    44,    30,    36,    39,    23,     0,    33,    64,
447     37,    41,    75,     0,    18,     0,     0,    31,    32,    25,
448      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
449     43,    29,    55,    56,    57,    72,    68,    59,    69,     0,
450     45,    46,    70,    34,    19,    35,    63,    28,     0,    27,
451      0,    26,     0,     0,     0,     0,     0,    16,     0,   245,
452     76,    77,    38,    67,     0,     0,     0,     0,     0,     0,
453     42,    24,    44,    30,    36,    39,    23,     0,    33,    64,
454     37,    41,    75,   286,    18,     0,     0,    31,    32,    25,
455      0,     0,     0,     0,     0,     0,   294,     0,     0,     0,
456      0,     0,    43,    29,    19,     0,     0,    28,   300,    27,
457      0,    26,    45,    46,     0,    34,     0,    35,     0,   308,
458      0,     0,     0,    67,     0,     0,     0,    16,     0,   244,
459     74,     0,     0,     0,    38,     0,     0,   269,     0,     0,
460      0,     0,    42,    24,    44,    30,    36,    39,    23,     0,
461     33,     0,    37,    41,     0,     0,   332,     0,     0,    31,
462     32,    25,    43,    29,    55,    56,    57,    72,    68,    59,
463     69,     0,    45,    46,    70,    34,    19,    35,    63,    28,
464      0,    27,     0,    26,     0,     0,     0,    16,     0,   222,
465     74,     0,    76,    77,    38,   136,     0,     0,     0,     0,
466      0,     0,    42,    24,    44,    30,    36,    39,    23,     0,
467     33,    64,    37,    41,    75,     0,    18,     0,     0,    31,
468     32,    25,    43,    29,    55,    56,    57,    72,    68,    59,
469     69,     0,    45,    46,    70,    34,    19,    35,    63,    28,
470      0,    27,     0,    26,     0,     0,     0,     0,     0,     0,
471      0,     0,    76,    77,    38,    67,     0,     0,     0,     0,
472     74,     0,    42,    24,    44,    30,    36,    39,    23,     0,
473     33,    64,    37,    41,    75,     0,    18,     0,     0,    31,
474     32,    25,     0,     0,     0,     0,     0,     0,     0,     0,
475      0,     0,    43,    29,    55,    56,    57,    72,    68,    59,
476     69,     0,    45,    46,    70,    34,    19,    35,    63,    28,
477      0,    27,     0,    26,     0,     0,     0,     0,     0,    16,
478     74,   212,    76,    77,    38,    67,     0,     0,     0,     0,
479      0,     0,    42,    24,    44,    30,    36,    39,    23,     0,
480     33,    64,    37,    41,    75,     0,    18,     0,     0,    31,
481     32,    25,    43,    29,    55,    56,    57,    72,    68,    59,
482     69,     0,    45,    46,    70,    34,    19,    35,    63,    28,
483      0,    27,     0,    26,     0,     0,     0,     0,     0,     0,
484      0,     0,    76,    77,    38,    67,     0,     0,     0,    16,
485      0,   132,    42,    24,    44,    30,    36,    39,    23,   137,
486     33,    64,    37,    41,    75,     0,    18,     0,     0,    31,
487     32,    25,     0,     0,     0,     0,     0,     0,     0,     0,
488      0,     0,     0,     0,    43,    29,    19,     0,     0,    28,
489      0,    27,     0,    26,    45,    46,     0,    34,     0,    35,
490      0,     0,     0,     0,     0,    67,     0,     0,     0,    16,
491      0,     0,    74,     0,     0,     0,    38,     0,     0,     0,
492      0,     0,     0,     0,    42,    24,    44,    30,    36,    39,
493     23,     0,    33,     0,    37,    41,     0,     0,    18,     0,
494      0,    31,    32,    25,    43,    29,    55,    56,    57,    72,
495     68,    59,    69,     0,    45,    46,    70,    34,     0,    35,
496     63,     0,     0,     0,     0,     0,     0,     0,    20,    16,
497      0,     0,     0,     0,    76,    77,    38,     0,     0,     0,
498      0,     0,    74,     0,    42,    24,    44,    30,    36,    39,
499     23,     0,    33,    64,    37,    41,    75,     0,    18,     0,
500      0,    31,    32,    25,     0,     0,     0,     0,    99,   327,
501      0,    28,   187,    27,    43,    29,    55,    56,    57,    72,
502     68,    59,    69,     0,    45,    46,    70,    34,     0,    35,
503     63,    83,     0,     0,     0,     0,     0,     0,     0,     0,
504    161,     0,    74,     0,    76,    77,    38,     0,     0,   140,
505      0,     0,     0,     0,    42,    24,    44,    30,    36,    39,
506     23,   179,    33,    64,    37,    41,    75,     0,    18,     0,
507      0,    31,    32,    25,    43,    29,    55,    56,    57,    72,
508     68,    59,    69,     0,    45,    46,    70,    34,    19,    35,
509     63,    28,    94,    27,     0,    26,   209,     0,     0,     0,
510      0,     0,    74,     0,    76,    77,    38,     0,     0,     0,
511      0,     0,     0,     0,    42,    24,    44,    30,    36,    39,
512     23,     0,    33,    64,    37,    41,    75,     0,    18,   161,
513      0,    31,    32,    25,    43,    29,    55,    56,    57,    72,
514     68,    59,    69,     0,    45,    46,    70,    34,     0,    35,
515     63,     0,     0,     0,     0,     0,     0,     0,    99,   324,
516      0,    28,   187,    27,    76,    77,    38,     0,     0,     0,
517      0,    16,     0,     0,    42,    24,    44,    30,    36,    39,
518     23,    83,    33,    64,    37,    41,    75,     0,    18,     0,
519      0,    31,    32,    25,     0,     0,     0,     0,     0,     0,
520    161,     0,   161,   161,   161,   284,     0,     0,   161,     0,
521      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
522      0,     0,     0,     0,     0,     0,     0,     0,     0,   297,
523    298,     0,     0,     0,     0,    92,     0,     0,     0,     0,
524     99,   322,    94,    28,   187,    27,    97,    96,     0,    86,
525     87,    88,    89,    90,    91,    93,    43,    29,     0,     0,
526      0,     0,     0,    83,     0,     0,    45,    46,     0,    34,
527      0,    35,     0,     0,     0,     0,     0,     0,     0,     0,
528    161,     0,     0,     0,     0,     0,     0,     0,    38,   336,
529      0,     0,     0,     0,     0,     0,    42,    24,    44,    30,
530     36,    39,    23,     0,    33,     0,    37,    41,     0,    12,
531     13,     0,     0,    31,    32,    25,     0,     0,     0,     0,
532      0,     0,     0,     0,    94,    99,     0,     0,    28,     0,
533     27,     0,     0,     0,     0,     0,    43,    29,     0,     0,
534      0,     0,     0,     0,   136,    14,    45,    46,    83,    34,
535      0,    35,     0,     0,     0,     0,     0,     0,     0,     0,
536      0,     0,     0,     0,     0,     0,     0,     0,    38,     0,
537      0,     0,     0,     0,     0,     0,    42,    24,    44,    30,
538     36,    39,    23,     0,    33,    92,    37,    41,     0,     0,
539     18,     0,     0,    31,    32,    25,    97,    96,     0,    86,
540     87,    88,    89,    90,    91,    93,    43,    29,     0,    94,
541     99,   189,     0,    28,   187,    27,    45,    46,     0,    34,
542      0,    35,     0,     0,     0,     0,     0,     0,     0,     0,
543      0,     0,     0,    83,     0,     0,     0,     0,    38,     0,
544      0,     0,     0,     0,     0,     0,    42,    24,    44,    30,
545     36,    39,    23,     0,    33,     0,    37,    41,     0,     0,
546      0,     0,     0,    31,    32,    25,     0,    92,     0,     0,
547      0,     0,     0,     0,     0,     0,     0,     0,    97,    96,
548      0,    86,    87,    88,    89,    90,    91,    93,    43,    29,
549      0,     0,    99,   349,    94,    28,     0,    27,    45,    46,
550      0,    34,     0,    35,     0,     0,     0,     0,     0,     0,
551      0,     0,     0,     0,     0,    83,     0,     0,     0,     0,
552     38,     0,     0,     0,     0,     0,     0,     0,    42,    24,
553     44,    30,    36,    39,    23,     0,    33,     0,    37,    41,
554      0,     0,     0,     0,     0,    31,    32,    25,   137,     0,
555      0,     0,    92,     0,     0,     0,     0,     0,     0,     0,
556      0,     0,     0,    97,    96,     0,    86,    87,    88,    89,
557     90,    91,    93,    43,    29,     0,    94,    99,   345,     0,
558     28,     0,    27,    45,    46,     0,    34,     0,    35,     0,
559      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
560     83,     0,     0,     0,     0,    38,     0,     0,     0,     0,
561      0,     0,     0,    42,    24,    44,    30,    36,    39,    23,
562      0,    33,     0,    37,    41,     0,     0,     0,     0,     0,
563     31,    32,    25,     0,     0,     0,     0,    92,     0,     0,
564      0,     0,     0,     0,     0,     0,     0,     0,    97,    96,
565      0,    86,    87,    88,    89,    90,    91,    93,    43,    29,
566     99,    94,     0,    28,     0,    27,     0,     0,    45,    46,
567      0,    34,     0,    35,     0,     0,     0,     0,     0,   329,
568      0,     0,     0,    83,     0,     0,     0,     0,     0,     0,
569     38,     0,     0,     0,     0,     0,     0,     0,    42,    24,
570     44,    30,    36,    39,    23,     0,    33,     0,    37,    41,
571      0,     0,     0,     0,     0,    31,    32,    25,     0,    92,
572      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
573     97,    96,     0,    86,    87,    88,    89,    90,    91,    93,
574     43,    29,     0,     0,    94,     0,     0,     0,     0,     0,
575     45,    46,     0,    34,     0,    35,     0,     0,     0,     0,
576      0,     0,     0,     0,    99,   328,     0,    28,     0,    27,
577      0,     0,    38,     0,     0,     0,     0,     0,     0,     0,
578     42,    24,    44,    30,    36,    39,    23,    83,    33,     0,
579     37,    41,     0,     0,     0,     0,     0,    31,    32,    25,
580      0,     0,     0,     0,    92,     0,     0,     0,     0,     0,
581      0,     0,     0,     0,     0,    97,    96,     0,    86,    87,
582     88,    89,    90,    91,    93,    43,    29,     0,     0,     0,
583      0,     0,     0,     0,     0,    45,    46,     0,    34,     0,
584     35,    99,   319,     0,    28,     0,    27,     0,    94,     0,
585      0,     0,     0,     0,     0,     0,     0,    38,     0,     0,
586      0,     0,     0,     0,    83,    42,    24,    44,    30,    36,
587     39,    23,     0,    33,     0,    37,    41,     0,     0,     0,
588      0,     0,    31,    32,    25,     0,     0,    92,     0,     0,
589      0,     0,     0,     0,     0,     0,     0,     0,    97,    96,
590      0,    86,    87,    88,    89,    90,    91,    93,    43,    29,
591      0,    99,   316,     0,    28,     0,    27,     0,    45,    46,
592      0,    34,     0,    35,     0,    94,     0,     0,     0,     0,
593      0,     0,     0,     0,    83,     0,     0,     0,     0,     0,
594     38,     0,     0,     0,     0,     0,     0,     0,    42,    24,
595     44,    30,    36,    39,    23,     0,    33,     0,    37,    41,
596      0,     0,     0,     0,     0,    31,    32,    25,     0,     0,
597      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
598      0,    99,   275,     0,    28,     0,    27,     0,     0,     0,
599      0,    92,     0,     0,     0,    94,     0,     0,     0,     0,
600      0,     0,    97,    96,    83,    86,    87,    88,    89,    90,
601     91,    93,    43,    29,     0,     0,     0,     0,     0,     0,
602      0,     0,    45,    46,     0,    34,     0,    35,     0,     0,
603      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
604      0,     0,     0,     0,    38,     0,     0,     0,     0,     0,
605      0,     0,    42,    24,    44,    30,    36,    39,    23,     0,
606     33,     0,    37,    41,     0,    94,     0,     0,    92,    31,
607     32,    25,     0,     0,     0,     0,     0,     0,     0,    97,
608     96,     0,    86,    87,    88,    89,    90,    91,    93,    43,
609     29,    99,     0,     0,    28,   187,    27,     0,     0,    45,
610     46,     0,    34,     0,    35,     0,     0,     0,     0,     0,
611      0,     0,     0,     0,    83,     0,     0,     0,     0,     0,
612      0,    38,     0,     0,     0,     0,     0,     0,     0,    42,
613     24,    44,    30,    36,    39,    23,     0,    33,    92,    37,
614     41,     0,     0,     0,     0,     0,    31,    32,    25,    97,
615     96,     0,    86,    87,    88,    89,    90,    91,    93,    43,
616     29,    99,   189,     0,    28,     0,    27,     0,     0,    45,
617     46,     0,    34,     0,    35,    94,     0,     0,     0,     0,
618      0,     0,     0,     0,    83,     0,     0,     0,     0,     0,
619      0,    38,     0,     0,     0,     0,     0,     0,     0,    42,
620     24,    44,    30,    36,    39,    23,     0,    33,    92,    37,
621     41,     0,     0,     0,     0,     0,    31,    32,    25,    97,
622     96,     0,    86,    87,    88,    89,    90,    91,    93,    43,
623     29,    99,     0,     0,    28,     0,    27,     0,     0,    45,
624     46,     0,    34,     0,    35,    94,     0,     0,     0,   248,
625      0,     0,     0,     0,    83,     0,     0,     0,     0,     0,
626      0,    38,     0,     0,     0,     0,     0,     0,     0,    42,
627     24,    44,    30,    36,    39,    23,     0,    33,     0,    37,
628     41,     0,     0,     0,     0,     0,    31,    32,    25,     0,
629      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
630      0,     0,     0,     0,     0,     0,     0,     0,    99,     0,
631      0,    28,     0,    27,     0,    94,     0,     0,    92,     0,
632      0,     0,     0,     0,     0,     0,     0,     0,     0,    97,
633     96,    83,    86,    87,    88,    89,    90,    91,    93,    43,
634     29,     0,     0,     0,     0,     0,     0,     0,     0,    45,
635     46,     0,    34,     0,    35,     0,     0,     0,     0,     0,
636      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
637      0,    38,     0,     0,     0,     0,     0,     0,     0,    42,
638     24,    44,    30,    36,    39,    23,     0,    33,    92,    37,
639     41,     0,    94,     0,     0,     0,    31,    32,    25,    97,
640     96,     0,    86,    87,    88,    89,    90,    91,    93,    43,
641     29,    99,     0,     0,    28,     0,    27,     0,     0,    45,
642     46,     0,    34,     0,    35,     0,     0,     0,     0,     0,
643      0,     0,     0,     0,    99,     0,     0,    28,     0,    27,
644      0,    38,     0,     0,     0,     0,     0,     0,     0,    42,
645     24,    44,    30,    36,    39,    23,     0,    33,    92,    37,
646     41,     0,     0,     0,     0,     0,    31,    32,    25,    97,
647     96,     0,    86,    87,    88,    89,    90,    91,    93,    43,
648     29,     0,     0,     0,     0,     0,     0,     0,     0,    45,
649     46,     0,    34,     0,    35,    94,    19,     0,     0,    28,
650      0,    27,     0,    26,     0,     0,     0,     0,     0,     0,
651      0,    38,     0,     0,     0,     0,     0,     0,    94,    42,
652     24,    44,    30,    36,    39,    23,     0,    33,     0,    37,
653     41,     0,     0,     0,     0,    92,    31,    32,    25,     0,
654      0,     0,     0,     0,     0,     0,    97,    96,     0,    86,
655     87,    88,    89,    90,    91,    93,    43,    29,     0,     0,
656      0,     0,     0,     0,     0,     0,    45,    46,     0,    34,
657      0,    35,    99,     0,     0,    28,     0,    27,     0,     0,
658      0,     0,     0,     0,     0,     0,     0,     0,    38,     0,
659    311,     0,     0,     0,     0,   233,    42,    24,    44,    30,
660     36,    39,    23,     0,    33,     0,    37,    41,     0,     0,
661      0,     0,     0,    31,    32,    25,     0,     0,     0,     0,
662      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
663      0,     0,     0,     0,     0,     0,     0,     0,    92,     0,
664      0,     0,    99,     0,     0,    28,     0,    27,     0,    97,
665      0,     0,    86,    87,    88,    89,    90,    91,    93,    43,
666     29,    92,     0,     0,     0,   233,     0,     0,     0,    45,
667     46,     0,    34,     0,    35,    86,    87,    88,    89,    90,
668     91,    93,    43,    29,     0,     0,     0,     0,     0,     0,
669      0,    38,    45,    46,     0,    34,     0,    35,     0,    42,
670     24,    44,    30,    36,    39,    23,     0,    33,     0,    37,
671     41,     0,    74,     0,    38,     0,    31,    32,    25,     0,
672      0,     0,    42,    24,    44,    30,    36,    39,    23,     0,
673     33,     0,    37,    41,     0,     0,     0,     0,     0,    31,
674     32,    25,     0,     0,    43,    29,     0,     0,     0,    72,
675      0,     0,     0,     0,    45,    46,     0,    34,     0,    35,
676      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
677      0,     0,     0,     0,    76,    77,    38,     0,     0,     0,
678      0,     0,     0,     0,    42,    24,    44,    30,    36,    39,
679     23,     0,    33,     0,    37,    41,     0,     0,    18,   236,
680      0,    31,    32,    25,     0,     0,     0,     0,     0,     0,
681     97,    96,    99,     0,     0,    28,     0,    27,     0,   237,
682     43,    29,     0,     0,     0,     0,     0,     0,     0,     0,
683     45,    46,     0,    34,     0,    35,     0,     0,     0,     0,
684      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
685      0,     0,    38,     0,     0,     0,     0,     0,     0,     0,
686     42,    24,    44,    30,    36,    39,    23,     0,    33,   236,
687     37,    41,     0,     0,     0,     0,     0,    31,    32,    25,
688     97,    96,     0,   254,     0,     0,     0,     0,     0,   237,
689     43,    29,     0,    73,     0,     0,     0,     0,    15,     0,
690     45,    46,     0,    34,     0,    35,     0,     0,     0,     0,
691      0,     0,   103,   105,     0,     0,     0,     0,     0,     0,
692      0,     0,    38,     0,     0,     0,     0,     0,     0,     0,
693     42,    24,    44,    30,    36,    39,    23,     0,    33,     0,
694     37,    41,     0,    15,     0,    15,     0,    31,    32,    25,
695    138,     0,    19,   142,     0,    28,     0,    27,   147,    26,
696      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
697      0,     0,     0,     0,     0,     0,     0,   168,   170,   172,
698    173,   174,   175,   176,   177,   178,   180,     0,   186,   188,
699      0,     0,     0,   183,   184,     0,     0,     0,     0,     0,
700      0,     0,     0,     0,     0,     0,   197,     0,     0,     0,
701      0,   197,   197,     0,     0,     0,     0,   205,   206,   207,
702    197,   210,   211,    19,     0,     0,    28,     0,    27,     0,
703     26,     0,     0,     0,     0,     0,     0,     0,     0,   236,
704    231,     0,   307,     0,     0,     0,     0,     0,   227,     0,
705     97,   105,     0,     0,     0,     0,     0,     0,   243,   237,
706     43,    29,     0,     0,     0,     0,     0,     0,     0,     0,
707     45,    46,     0,    34,     0,    35,     0,     0,   241,     0,
708    252,    28,   253,    27,     0,    26,     0,     0,     0,   260,
709    261,   262,    38,   264,   265,   266,     0,     0,     0,     0,
710     42,    24,    44,    30,    36,    39,    23,     0,    33,     0,
711     37,    41,     0,     0,     0,     0,   186,    31,    32,    25,
712      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
713    292,     0,     0,     0,     0,   105,   197,     0,   241,     0,
714      0,    28,   293,    27,     0,    26,     0,     0,   295,     0,
715      0,     0,     0,     0,   296,   299,     0,     0,   301,   302,
716    303,     0,   305,     0,     0,     0,   306,     0,     0,     0,
717      0,     0,   186,     0,     0,   251,     0,     0,     0,     0,
718      0,     0,     0,     0,   320,   323,   325,   326,     0,     0,
719    241,     0,     0,    28,     0,    27,     0,    26,     0,     0,
720     43,    29,     0,     0,     0,     0,     0,     0,     0,     0,
721     45,    46,     0,    34,   335,    35,     0,     0,     0,     0,
722    339,     0,     0,     0,     0,     0,     0,     0,     0,     0,
723      0,     0,    38,     0,     0,     0,     0,     0,     0,     0,
724     42,    24,    44,    30,    36,    39,    23,     0,    33,     0,
725     37,    41,     0,     0,    18,     0,     0,    31,    32,    25,
726     19,   201,     0,    28,     0,    27,     0,    26,     0,     0,
727      0,    43,    29,     0,     0,     0,     0,     0,     0,     0,
728     19,    45,    46,    28,    34,    27,    35,    26,     0,     0,
729      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
730      0,   171,     0,    38,     0,     0,     0,     0,     0,     0,
731      0,    42,    24,    44,    30,    36,    39,    23,     0,    33,
732      0,    37,    41,     0,     0,    18,    43,    29,    31,    32,
733     25,     0,     0,     0,     0,     0,    45,    46,     0,    34,
734      0,    35,    19,   199,     0,    28,     0,    27,     0,    26,
735      0,     0,     0,     0,     0,     0,     0,     0,    38,     0,
736      0,   169,     0,     0,     0,     0,    42,    24,    44,    30,
737     36,    39,    23,     0,    33,     0,    37,    41,     0,     0,
738    160,     0,     0,    31,    32,    25,    43,    29,     0,     0,
739      0,     0,     0,     0,     0,     0,    45,    46,     0,    34,
740      0,    35,    19,     0,     0,    28,     0,    27,     0,    26,
741      0,     0,     0,   251,     0,     0,     0,     0,    38,     0,
742      0,     0,     0,     0,     0,     0,    42,    24,    44,    30,
743     36,    39,    23,     0,    33,     0,    37,    41,    43,    29,
744    160,     0,     0,    31,    32,    25,     0,     0,    45,    46,
745      0,    34,     0,    35,   241,     0,     0,    28,     0,    27,
746      0,    26,     0,     0,     0,     0,     0,     0,     0,     0,
747     38,     0,     0,     0,     0,     0,     0,     0,    42,    24,
748     44,    30,    36,    39,    23,     0,    33,     0,    37,    41,
749      0,     0,   160,     0,     0,    31,    32,    25,     0,     0,
750      0,     0,     0,   171,     0,     0,     0,     0,    43,    29,
751      0,     0,     0,     0,     0,     0,     0,     0,    45,    46,
752      0,    34,    99,    35,     0,    28,     0,    27,    43,    29,
753      0,     0,     0,     0,     0,     0,     0,     0,    45,    46,
754     38,    34,     0,    35,     0,     0,     0,     0,    42,    24,
755     44,    30,    36,    39,    23,     0,    33,     0,    37,    41,
756     38,     0,    18,     0,     0,    31,    32,    25,    42,    24,
757     44,    30,    36,    39,    23,     0,    33,     0,    37,    41,
758      0,     0,    18,     0,     0,    31,    32,    25,     0,    19,
759     43,    29,    28,     0,    27,     0,    26,     0,     0,     0,
760     45,    46,     0,    34,     0,    35,     0,     0,     0,   157,
761      0,     0,    28,     0,    27,     0,    26,     0,     0,     0,
762      0,     0,    38,     0,     0,   169,     0,     0,     0,     0,
763     42,    24,    44,    30,    36,    39,    23,     0,    33,     0,
764     37,    41,     0,     0,    18,     0,     0,    31,    32,    25,
765     43,    29,     0,     0,     0,     0,     0,     0,     0,     0,
766     45,    46,     0,    34,    99,    35,     0,    28,     0,    27,
767      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
768      0,     0,    38,     0,     0,     0,     0,     0,     0,     0,
769     42,    24,    44,    30,    36,    39,    23,     0,    33,     0,
770     37,    41,    43,    29,    18,     0,     0,    31,    32,    25,
771      0,     0,    45,    46,     0,    34,     0,    35,     0,     0,
772      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
773      0,     0,     0,     0,    38,     0,     0,     0,     0,     0,
774      0,     0,    42,    24,    44,    30,    36,    39,    23,   236,
775     33,     0,    37,    41,     0,     0,   160,     0,     0,    31,
776     32,    25,     0,     0,     0,     0,     0,     0,     0,   237,
777     43,    29,     0,     0,     0,     0,     0,     0,     0,     0,
778     45,    46,     0,    34,     0,    35,     0,     0,     0,     0,
779      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
780      0,     0,    38,     0,     0,     0,     0,     0,     0,     0,
781     42,    24,    44,    30,    36,    39,    23,     0,    33,     0,
782     37,    41,     0,     0,     0,     0,     0,    31,    32,    25,
783      0,     0,     0,     0,     0,     0,     0,    43,    29,     0,
784      0,     0,     0,     0,     0,     0,     0,    45,    46,     0,
785     34,     0,    35,     0,     0,     0,     0,    43,    29,     0,
786      0,     0,     0,     0,     0,     0,     0,    45,    46,    38,
787     34,     0,    35,     0,     0,     0,     0,    42,    24,    44,
788     30,    36,    39,    23,     0,    33,     0,    37,    41,    38,
789      0,    18,     0,     0,    31,    32,    25,    42,    24,    44,
790     30,    36,    39,    23,     0,    33,     0,    37,    41,     0,
791      0,   160,    43,    29,    31,    32,    25,     0,     0,     0,
792      0,     0,    45,    46,     0,    34,     0,    35,     0,     0,
793      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
794      0,     0,     0,     0,    38,     0,     0,     0,     0,     0,
795      0,     0,    42,    24,    44,    30,    36,    39,    23,     0,
796      0,     0,    37,    41,     0,     0,     0,     0,     0,    31,
797     32,    25 };
798 static YYCONST yytabelem yypact[]={
799 
800      6,-10000000,-10000000,-10000000,  1358,    16,-10000000,-10000000,    12,-10000000,
801     47,   442,   -33,   -33,  -271,  2578,-10000000,  -291,  3859,  3859,
802 -10000000,   -34,     2,-10000000,-10000000,   584,-10000000,   584,   584,   147,
803    146,  -281,  -281,  -284,   142,   140,-10000000,   132,   126,-10000000,
804    125,   118,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,  1358,
805    442,  3859,-10000000,  1036,-10000000,     0,  3859,     0,  1096,   906,
806 -10000000,  1156,   442,     0,   906,     0,  1156,  -181,-10000000,   117,
807    116,  3879,  -250,  2578,-10000000,   107,-10000000,-10000000,   442,   442,
808    106,-10000000,-10000000,  3859,  3672,  3550,  3859,  3859,  3859,  3859,
809   3859,  3859,  3859,  -250,  -324,   -34,-10000000,-10000000,  -331,  3859,
810   3859,-10000000,-10000000,  -328,   150,  1680,   584,   584,   584,   584,
811    584,   584,  3859,-10000000,  -314,  -338,  -338,  3612,  3530,-10000000,
812 -10000000,  -233,   584,  3859,  3859,  3859,  3859,  3859,  3859,-10000000,
813    966,   -33,-10000000,-10000000,-10000000,  -184,  -181,-10000000,  1595,-10000000,
814 -10000000,  -330,  1595,-10000000,  -280,   834,-10000000,  1595,-10000000,-10000000,
815 -10000000,-10000000,  -184,  2766,  3859,   -66,    58,  3859,  2912,  -306,
816   3724,-10000000,   -34,     1,  3859,   774,   704,  -304,  2501,-10000000,
817   2681,-10000000,  2704,  3934,  3934,  3934,  3934,  3934,  3934,-10000000,
818   3934,-10000000,  -281,  2431,  2578,  -236,  3222,-10000000,  3222,-10000000,
819    -12,   -12,  -338,  -338,  -338,  -338,    57,  2578,    52,-10000000,
820    123,-10000000,    96,   584,   -34,  2361,  2361,  2361,    85,    58,
821   2361,  2361,-10000000,   442,-10000000,-10000000,-10000000,   105,-10000000,   644,
822 -10000000,  -186,-10000000,-10000000,    35,   -49,-10000000,  2251,   584,   584,
823    584,  3460,    80,  3724,  3408,  3348,  3724,  -250,   -34,  3724,
824   -328,  3859,  3859,  2251,-10000000,-10000000,    75,-10000000,  3859,-10000000,
825   -250,-10000000,  2578,  2578,  3222,-10000000,-10000000,-10000000,-10000000,   -34,
826   3222,  3222,  -232,-10000000,  3222,  3222,  3222,   512,  3859,-10000000,
827 -10000000,-10000000,  3293,  -250,  -199,-10000000,   -34,   -34,   -34,  2912,
828   -244,  2842,  3082,  3792,-10000000,  3934,-10000000,  2912,    74,    51,
829   -199,  -199,  -240,  2578,-10000000,  2578,  2181,    97,    92,  2111,
830     73,  1510,  1428,  1278,-10000000,  2034,  1930,  2766,    79,-10000000,
831   -250,  3724,  -244,-10000000,   -33,-10000000,-10000000,-10000000,-10000000,-10000000,
832   3222,-10000000,-10000000,  -261,-10000000,  -261,  3222,-10000000,     0,  2766,
833     79,   313,-10000000,  2912,   442,  1847,    91,    86,    81,  1762,
834 -10000000,    79,   313,-10000000,   382,-10000000,-10000000,-10000000,-10000000,-10000000,
835    313,-10000000,-10000000,-10000000 };
836 static YYCONST yytabelem yypgo[]={
837 
838      0,   245,  3203,   225,    85,   233,   131,   227,   239,   100,
839    105,   226,  1278,    36,   103,    22,    62,     0,   615,   223,
840    222,   221,   219,   216,   215,   192,   149,    61,  3193,    83,
841     87,    97,    37,   210,   205,   203,   202,   200,   197,   195,
842    193,    70 };
843 static YYCONST yytabelem yyr1[]={
844 
845      0,    35,    35,    31,    31,    32,    32,    28,    28,    36,
846     36,    37,    37,    21,    21,    21,    19,    19,    22,    26,
847     26,    29,    29,    30,    30,    25,    25,    14,    14,     1,
848      1,     9,    10,    10,    10,    10,    10,    10,    10,    38,
849     10,    11,    11,     6,     6,     3,     3,     3,     3,     3,
850      3,     3,     3,     3,     3,     3,     3,     2,     2,     2,
851      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
852      2,     2,     2,     2,     2,     2,     2,     4,     4,     5,
853      5,     7,     7,     7,    34,    34,    24,    24,    24,    24,
854     39,    39,    40,    12,    27,    27,    13,    13,    13,    13,
855     13,    13,    13,    13,    41,    41,    15,    15,    15,    15,
856     15,    15,    15,    15,    15,    15,    15,    15,    15,    15,
857     15,    15,    16,    16,    33,    33,     8,     8,     8,     8,
858      8,     8,     8,     8,     8,     8,     8,     8,     8,     8,
859      8,     8,     8,     8,     8,     8,     8,     8,     8,     8,
860      8,     8,     8,     8,     8,     8,     8,     8,     8,     8,
861      8,     8,     8,     8,     8,    17,    17,    17,    17,    17,
862     20,    20,    20,    18,    18,    18,    23 };
863 static YYCONST yytabelem yyr2[]={
864 
865      0,     3,     3,     2,     4,     2,     4,     2,     4,     2,
866      4,     2,     4,    19,    17,    15,     3,     3,     9,     2,
867      4,     2,     4,     1,     2,     1,     2,     1,     2,     3,
868      7,     3,     3,     9,     7,    13,     7,     9,     9,     1,
869     19,     2,     7,     2,     7,     7,    11,     7,     7,     5,
870      7,     7,     7,    11,     5,     3,     2,     7,    11,     7,
871      7,     5,     7,     7,     7,     7,     7,     7,     7,     7,
872      7,    11,     9,     7,     5,     3,     2,     7,     7,     2,
873      7,     1,     2,     7,     2,     2,     2,     2,     4,     4,
874      2,     4,     1,     9,     2,     4,     9,     9,     9,     5,
875     11,     5,     3,     3,     2,     4,     5,     7,     5,    15,
876      7,     5,     2,     9,     5,     7,     5,     7,     5,     4,
877      5,     5,     2,     5,     2,     2,     7,     7,     7,     7,
878      7,     7,     5,     5,     7,     9,     3,     7,     9,     5,
879      5,     5,     5,     9,     7,     5,     3,    13,    13,     7,
880     13,    13,     3,    17,    17,    13,     9,     3,    13,    13,
881     17,    17,    17,    13,     2,     2,     9,     3,     3,     5,
882      1,     3,     7,     3,     3,     3,     9 };
883 static YYCONST yytabelem yychk[]={
884 
885 -10000000,   -35,    -1,   256,   -25,   -24,   263,    59,   -11,   -10,
886     -9,   -26,   261,   262,   297,    -2,   123,   -17,   342,    40,
887    -12,    -8,   -18,   334,   329,   347,    47,    45,    43,   289,
888    331,   345,   346,   336,   301,   303,   332,   338,   320,   333,
889    -33,   339,   328,   288,   330,   298,   299,   263,    59,   -25,
890    -26,    44,   263,   -16,   -15,   290,   291,   292,   -36,   295,
891    -21,   -22,   -26,   304,   337,   -13,   -23,    59,   294,   296,
892    300,   -34,   293,    -2,   256,   340,   318,   319,   -26,   -26,
893    -19,   328,   331,    63,   -32,   -31,   281,   282,   283,   284,
894    285,   286,   267,   287,   124,    -8,   279,   278,   -17,    40,
895    311,   345,   346,    -2,    -4,    -2,    43,    45,    42,    47,
896     37,   344,    91,    -8,   -40,    -8,    -8,    40,    40,   -17,
897    -17,   -17,   285,    40,    40,    40,    40,    40,    40,   -10,
898    -16,    -9,   125,   -15,   -41,   -29,    59,   263,    -2,   -41,
899    263,   -15,    -2,   -41,   -15,   -16,   -41,    -2,   -41,   -41,
900    -15,   -30,   -29,    40,    40,    -7,    -5,    40,    -3,   -17,
901    342,   -12,    -8,   -18,    40,   -16,   -16,    40,    -2,   263,
902     -2,   263,    -2,    -2,    -2,    -2,    -2,    -2,    -2,   -12,
903     -2,   -18,   336,    -2,    -2,    41,   -28,    44,   -28,    41,
904     -8,    -8,    -8,    -8,    -8,    -8,    -6,    -2,   335,    41,
905     -6,    41,    -6,   285,    -8,    -2,    -2,    -2,    -6,   -12,
906     -2,    -2,   125,   -26,   263,   -30,   -41,   340,   -41,   -37,
907    321,   -39,   125,   -41,   -14,   -18,   -13,    -2,   124,   280,
908    283,   -28,    -4,    63,   -32,   -31,   267,   287,    -8,   311,
909     -3,    40,    91,    -2,   125,   125,   -20,   328,    58,   -17,
910    287,   263,    -2,    -2,   -28,    93,    47,    41,    41,    -8,
911    -28,   -28,   -28,    41,   -28,   -28,   -28,   -16,    40,   263,
912    -15,   263,    59,   287,   -27,    41,    -8,    -8,    -8,    -3,
913     41,    -3,    -3,    -3,   -12,    -3,   -18,    -3,    -4,    -6,
914    -27,   -27,   -28,    -2,   -18,    -2,    -2,   -12,   -12,    -2,
915    -18,    -2,    -2,    -2,   125,    -2,    -2,    59,   -18,   263,
916    287,    58,    41,    93,   -38,   328,    41,    41,    41,    41,
917    -28,    41,    41,   -28,    41,   -28,   -28,    41,    41,    59,
918    -14,   -27,   -18,    -3,   -26,    -2,   -12,   -17,   -17,    -2,
919    -41,   -14,   -27,   -15,   -16,    41,    41,    41,    41,    41,
920    -27,   -15,   125,   -15 };
921 static YYCONST yytabelem yydef[]={
922 
923     -2,    -2,     1,     2,    29,    26,    86,    87,    25,    41,
924     32,     0,     0,     0,     0,    31,    19,   164,     0,     0,
925     75,    76,   165,   167,   168,     0,    92,     0,     0,   136,
926      0,     0,     0,   146,     0,     0,   152,     0,     0,   157,
927      0,     0,   173,   174,   175,   124,   125,    88,    89,    30,
928      0,     0,    20,     0,   122,     0,     0,     0,     0,     0,
929    112,     0,     0,     0,     0,     0,     0,    23,     9,     0,
930      0,    81,     0,   102,   103,     0,    84,    85,     0,     0,
931      0,    16,    17,     0,     0,     0,     0,     0,     0,     0,
932      0,     0,     0,     0,     0,    74,     5,     3,   164,     0,
933      0,   141,   142,    61,     0,     0,     0,     0,     0,     0,
934      0,     0,     0,   169,     0,   132,   133,     0,     0,   139,
935    140,   145,     0,     0,     0,     0,     0,     0,     0,    42,
936      0,    34,    36,   123,   106,   104,    23,    21,     0,   108,
937     10,     0,     0,   111,   114,     0,   116,     0,   118,   119,
938    120,   121,    24,    -2,     0,    99,    82,     0,    79,   164,
939      0,    55,    56,   101,     0,     0,     0,   170,     0,     6,
940     59,     4,    60,    -2,    -2,    -2,    -2,    -2,    -2,    68,
941     -2,    70,    73,     0,    57,     0,     0,     7,     0,   149,
942    126,   127,   128,   129,   130,   131,     0,    43,     0,   134,
943      0,   137,     0,     0,   144,     0,     0,     0,     0,    75,
944      0,     0,    33,     0,    22,   105,   107,     0,   110,     0,
945     11,   115,    90,   117,     0,   165,    28,     0,     0,     0,
946      0,     0,     0,     0,     0,     0,     0,     0,    54,     0,
947     49,     0,     0,     0,    37,    38,     0,   171,     0,    72,
948      0,     8,    78,    77,     0,   166,    93,   135,   138,   143,
949      0,     0,     0,   156,     0,     0,     0,     0,     0,    12,
950    113,    91,     0,     0,    18,    94,    96,    97,    98,    80,
951     83,     0,    47,    48,    50,    -2,    52,    45,     0,     0,
952    176,    39,     0,    58,    71,    44,     0,    75,    75,     0,
953      0,     0,     0,     0,    35,     0,     0,    -2,     0,    95,
954      0,     0,     0,   100,     0,   172,   147,   148,   150,   151,
955      0,   155,   158,     0,   159,     0,     0,   163,     0,    -2,
956      0,     0,    53,    46,     0,     0,    75,     0,     0,     0,
957    109,     0,     0,    15,     0,   153,   154,   160,   161,   162,
958      0,    14,    40,    13 };
959 typedef struct
960 #ifdef __cplusplus
961 	yytoktype
962 #endif
963 {
964 #ifdef __cplusplus
965 const
966 #endif
967 char *t_name; int t_val; } yytoktype;
968 #ifndef YYDEBUG
969 #	define YYDEBUG	0	/* don't allow debugging */
970 #endif
971 
972 #if YYDEBUG
973 
974 yytoktype yytoks[] =
975 {
976 	"FIRSTTOKEN",	257,
977 	"PROGRAM",	258,
978 	"PASTAT",	259,
979 	"PASTAT2",	260,
980 	"XBEGIN",	261,
981 	"XEND",	262,
982 	"NL",	263,
983 	",",	44,
984 	"{",	123,
985 	"(",	40,
986 	"|",	124,
987 	";",	59,
988 	"/",	47,
989 	")",	41,
990 	"}",	125,
991 	"[",	91,
992 	"]",	93,
993 	"ARRAY",	264,
994 	"MATCH",	265,
995 	"NOTMATCH",	266,
996 	"MATCHOP",	267,
997 	"FINAL",	268,
998 	"DOT",	269,
999 	"ALL",	270,
1000 	"CCL",	271,
1001 	"NCCL",	272,
1002 	"CHAR",	273,
1003 	"OR",	274,
1004 	"STAR",	275,
1005 	"QUEST",	276,
1006 	"PLUS",	277,
1007 	"AND",	278,
1008 	"BOR",	279,
1009 	"APPEND",	280,
1010 	"EQ",	281,
1011 	"GE",	282,
1012 	"GT",	283,
1013 	"LE",	284,
1014 	"LT",	285,
1015 	"NE",	286,
1016 	"IN",	287,
1017 	"ARG",	288,
1018 	"BLTIN",	289,
1019 	"BREAK",	290,
1020 	"CLOSE",	291,
1021 	"CONTINUE",	292,
1022 	"DELETE",	293,
1023 	"DO",	294,
1024 	"EXIT",	295,
1025 	"FOR",	296,
1026 	"FUNC",	297,
1027 	"SUB",	298,
1028 	"GSUB",	299,
1029 	"IF",	300,
1030 	"INDEX",	301,
1031 	"LSUBSTR",	302,
1032 	"MATCHFCN",	303,
1033 	"NEXT",	304,
1034 	"ADD",	305,
1035 	"MINUS",	306,
1036 	"MULT",	307,
1037 	"DIVIDE",	308,
1038 	"MOD",	309,
1039 	"ASSIGN",	310,
1040 	"ASGNOP",	311,
1041 	"ADDEQ",	312,
1042 	"SUBEQ",	313,
1043 	"MULTEQ",	314,
1044 	"DIVEQ",	315,
1045 	"MODEQ",	316,
1046 	"POWEQ",	317,
1047 	"PRINT",	318,
1048 	"PRINTF",	319,
1049 	"SPRINTF",	320,
1050 	"ELSE",	321,
1051 	"INTEST",	322,
1052 	"CONDEXPR",	323,
1053 	"POSTINCR",	324,
1054 	"PREINCR",	325,
1055 	"POSTDECR",	326,
1056 	"PREDECR",	327,
1057 	"VAR",	328,
1058 	"IVAR",	329,
1059 	"VARNF",	330,
1060 	"CALL",	331,
1061 	"NUMBER",	332,
1062 	"STRING",	333,
1063 	"FIELD",	334,
1064 	"REGEXPR",	335,
1065 	"?",	63,
1066 	":",	58,
1067 	"GETLINE",	336,
1068 	"RETURN",	337,
1069 	"SPLIT",	338,
1070 	"SUBSTR",	339,
1071 	"WHILE",	340,
1072 	"CAT",	341,
1073 	"+",	43,
1074 	"-",	45,
1075 	"*",	42,
1076 	"%",	37,
1077 	"NOT",	342,
1078 	"UMINUS",	343,
1079 	"POWER",	344,
1080 	"DECR",	345,
1081 	"INCR",	346,
1082 	"INDIRECT",	347,
1083 	"LASTTOKEN",	348,
1084 	"-unknown-",	-1	/* ends search */
1085 };
1086 
1087 #ifdef __cplusplus
1088 const
1089 #endif
1090 char * yyreds[] =
1091 {
1092 	"-no such reduction-",
1093 	"program : pas",
1094 	"program : error",
1095 	"and : AND",
1096 	"and : and NL",
1097 	"bor : BOR",
1098 	"bor : bor NL",
1099 	"comma : ','",
1100 	"comma : comma NL",
1101 	"do : DO",
1102 	"do : do NL",
1103 	"else : ELSE",
1104 	"else : else NL",
1105 	"for : FOR '(' opt_simple_stmt ';' pattern ';' opt_simple_stmt rparen stmt",
1106 	"for : FOR '(' opt_simple_stmt ';' ';' opt_simple_stmt rparen stmt",
1107 	"for : FOR '(' varname IN varname rparen stmt",
1108 	"funcname : VAR",
1109 	"funcname : CALL",
1110 	"if : IF '(' pattern rparen",
1111 	"lbrace : '{'",
1112 	"lbrace : lbrace NL",
1113 	"nl : NL",
1114 	"nl : nl NL",
1115 	"opt_nl : /* empty */",
1116 	"opt_nl : nl",
1117 	"opt_pst : /* empty */",
1118 	"opt_pst : pst",
1119 	"opt_simple_stmt : /* empty */",
1120 	"opt_simple_stmt : simple_stmt",
1121 	"pas : opt_pst",
1122 	"pas : opt_pst pa_stats opt_pst",
1123 	"pa_pat : pattern",
1124 	"pa_stat : pa_pat",
1125 	"pa_stat : pa_pat lbrace stmtlist '}'",
1126 	"pa_stat : pa_pat ',' pa_pat",
1127 	"pa_stat : pa_pat ',' pa_pat lbrace stmtlist '}'",
1128 	"pa_stat : lbrace stmtlist '}'",
1129 	"pa_stat : XBEGIN lbrace stmtlist '}'",
1130 	"pa_stat : XEND lbrace stmtlist '}'",
1131 	"pa_stat : FUNC funcname '(' varlist rparen",
1132 	"pa_stat : FUNC funcname '(' varlist rparen lbrace stmtlist '}'",
1133 	"pa_stats : pa_stat",
1134 	"pa_stats : pa_stats opt_pst pa_stat",
1135 	"patlist : pattern",
1136 	"patlist : patlist comma pattern",
1137 	"ppattern : var ASGNOP ppattern",
1138 	"ppattern : ppattern '?' ppattern ':' ppattern",
1139 	"ppattern : ppattern bor ppattern",
1140 	"ppattern : ppattern and ppattern",
1141 	"ppattern : NOT ppattern",
1142 	"ppattern : ppattern MATCHOP reg_expr",
1143 	"ppattern : ppattern MATCHOP ppattern",
1144 	"ppattern : ppattern IN varname",
1145 	"ppattern : '(' plist ')' IN varname",
1146 	"ppattern : ppattern term",
1147 	"ppattern : reg_expr",
1148 	"ppattern : term",
1149 	"pattern : var ASGNOP pattern",
1150 	"pattern : pattern '?' pattern ':' pattern",
1151 	"pattern : pattern bor pattern",
1152 	"pattern : pattern and pattern",
1153 	"pattern : NOT pattern",
1154 	"pattern : pattern EQ pattern",
1155 	"pattern : pattern GE pattern",
1156 	"pattern : pattern GT pattern",
1157 	"pattern : pattern LE pattern",
1158 	"pattern : pattern LT pattern",
1159 	"pattern : pattern NE pattern",
1160 	"pattern : pattern MATCHOP reg_expr",
1161 	"pattern : pattern MATCHOP pattern",
1162 	"pattern : pattern IN varname",
1163 	"pattern : '(' plist ')' IN varname",
1164 	"pattern : pattern '|' GETLINE var",
1165 	"pattern : pattern '|' GETLINE",
1166 	"pattern : pattern term",
1167 	"pattern : reg_expr",
1168 	"pattern : term",
1169 	"plist : pattern comma pattern",
1170 	"plist : plist comma pattern",
1171 	"pplist : ppattern",
1172 	"pplist : pplist comma ppattern",
1173 	"prarg : /* empty */",
1174 	"prarg : pplist",
1175 	"prarg : '(' plist ')'",
1176 	"print : PRINT",
1177 	"print : PRINTF",
1178 	"pst : NL",
1179 	"pst : ';'",
1180 	"pst : pst NL",
1181 	"pst : pst ';'",
1182 	"rbrace : '}'",
1183 	"rbrace : rbrace NL",
1184 	"reg_expr : '/'",
1185 	"reg_expr : '/' REGEXPR '/'",
1186 	"rparen : ')'",
1187 	"rparen : rparen NL",
1188 	"simple_stmt : print prarg '|' term",
1189 	"simple_stmt : print prarg APPEND term",
1190 	"simple_stmt : print prarg GT term",
1191 	"simple_stmt : print prarg",
1192 	"simple_stmt : DELETE varname '[' patlist ']'",
1193 	"simple_stmt : DELETE varname",
1194 	"simple_stmt : pattern",
1195 	"simple_stmt : error",
1196 	"st : nl",
1197 	"st : ';' opt_nl",
1198 	"stmt : BREAK st",
1199 	"stmt : CLOSE pattern st",
1200 	"stmt : CONTINUE st",
1201 	"stmt : do stmt WHILE '(' pattern ')' st",
1202 	"stmt : EXIT pattern st",
1203 	"stmt : EXIT st",
1204 	"stmt : for",
1205 	"stmt : if stmt else stmt",
1206 	"stmt : if stmt",
1207 	"stmt : lbrace stmtlist rbrace",
1208 	"stmt : NEXT st",
1209 	"stmt : RETURN pattern st",
1210 	"stmt : RETURN st",
1211 	"stmt : simple_stmt st",
1212 	"stmt : while stmt",
1213 	"stmt : ';' opt_nl",
1214 	"stmtlist : stmt",
1215 	"stmtlist : stmtlist stmt",
1216 	"subop : SUB",
1217 	"subop : GSUB",
1218 	"term : term '+' term",
1219 	"term : term '-' term",
1220 	"term : term '*' term",
1221 	"term : term '/' term",
1222 	"term : term '%' term",
1223 	"term : term POWER term",
1224 	"term : '-' term",
1225 	"term : '+' term",
1226 	"term : BLTIN '(' ')'",
1227 	"term : BLTIN '(' patlist ')'",
1228 	"term : BLTIN",
1229 	"term : CALL '(' ')'",
1230 	"term : CALL '(' patlist ')'",
1231 	"term : DECR var",
1232 	"term : INCR var",
1233 	"term : var DECR",
1234 	"term : var INCR",
1235 	"term : GETLINE var LT term",
1236 	"term : GETLINE LT term",
1237 	"term : GETLINE var",
1238 	"term : GETLINE",
1239 	"term : INDEX '(' pattern comma pattern ')'",
1240 	"term : INDEX '(' pattern comma reg_expr ')'",
1241 	"term : '(' pattern ')'",
1242 	"term : MATCHFCN '(' pattern comma reg_expr ')'",
1243 	"term : MATCHFCN '(' pattern comma pattern ')'",
1244 	"term : NUMBER",
1245 	"term : SPLIT '(' pattern comma varname comma pattern ')'",
1246 	"term : SPLIT '(' pattern comma varname comma reg_expr ')'",
1247 	"term : SPLIT '(' pattern comma varname ')'",
1248 	"term : SPRINTF '(' patlist ')'",
1249 	"term : STRING",
1250 	"term : subop '(' reg_expr comma pattern ')'",
1251 	"term : subop '(' pattern comma pattern ')'",
1252 	"term : subop '(' reg_expr comma pattern comma var ')'",
1253 	"term : subop '(' pattern comma pattern comma var ')'",
1254 	"term : SUBSTR '(' pattern comma pattern comma pattern ')'",
1255 	"term : SUBSTR '(' pattern comma pattern ')'",
1256 	"term : var",
1257 	"var : varname",
1258 	"var : varname '[' patlist ']'",
1259 	"var : FIELD",
1260 	"var : IVAR",
1261 	"var : INDIRECT term",
1262 	"varlist : /* empty */",
1263 	"varlist : VAR",
1264 	"varlist : varlist comma VAR",
1265 	"varname : VAR",
1266 	"varname : ARG",
1267 	"varname : VARNF",
1268 	"while : WHILE '(' pattern rparen",
1269 };
1270 #endif /* YYDEBUG */
1271 # line	1 "/usr/share/lib/ccs/yaccpar"
1272 /*
1273  * CDDL HEADER START
1274  *
1275  * The contents of this file are subject to the terms of the
1276  * Common Development and Distribution License, Version 1.0 only
1277  * (the "License").  You may not use this file except in compliance
1278  * with the License.
1279  *
1280  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1281  * or http://www.opensolaris.org/os/licensing.
1282  * See the License for the specific language governing permissions
1283  * and limitations under the License.
1284  *
1285  * When distributing Covered Code, include this CDDL HEADER in each
1286  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1287  * If applicable, add the following below this CDDL HEADER, with the
1288  * fields enclosed by brackets "[]" replaced with your own identifying
1289  * information: Portions Copyright [yyyy] [name of copyright owner]
1290  *
1291  * CDDL HEADER END
1292  */
1293 /*
1294  * Copyright 1993 Sun Microsystems, Inc.  All rights reserved.
1295  * Use is subject to license terms.
1296  */
1297 
1298 /* Copyright (c) 1988 AT&T */
1299 /* All Rights Reserved */
1300 
1301 #pragma ident	"%Z%%M%	%I%	%E% SMI"
1302 
1303 /*
1304 ** Skeleton parser driver for yacc output
1305 */
1306 
1307 /*
1308 ** yacc user known macros and defines
1309 */
1310 #define YYERROR		goto yyerrlab
1311 #define YYACCEPT	return(0)
1312 #define YYABORT		return(1)
1313 #define YYBACKUP( newtoken, newvalue )\
1314 {\
1315 	if ( yychar >= 0 || ( yyr2[ yytmp ] >> 1 ) != 1 )\
1316 	{\
1317 		yyerror( "syntax error - cannot backup" );\
1318 		goto yyerrlab;\
1319 	}\
1320 	yychar = newtoken;\
1321 	yystate = *yyps;\
1322 	yylval = newvalue;\
1323 	goto yynewstate;\
1324 }
1325 #define YYRECOVERING()	(!!yyerrflag)
1326 #define YYNEW(type)	malloc(sizeof(type) * yynewmax)
1327 #define YYCOPY(to, from, type) \
1328 	(type *) memcpy(to, (char *) from, yymaxdepth * sizeof (type))
1329 #define YYENLARGE( from, type) \
1330 	(type *) realloc((char *) from, yynewmax * sizeof(type))
1331 #ifndef YYDEBUG
1332 #	define YYDEBUG	1	/* make debugging available */
1333 #endif
1334 
1335 /*
1336 ** user known globals
1337 */
1338 int yydebug;			/* set to 1 to get debugging */
1339 
1340 /*
1341 ** driver internal defines
1342 */
1343 #define YYFLAG		(-10000000)
1344 
1345 /*
1346 ** global variables used by the parser
1347 */
1348 YYSTYPE *yypv;			/* top of value stack */
1349 int *yyps;			/* top of state stack */
1350 
1351 int yystate;			/* current state */
1352 int yytmp;			/* extra var (lasts between blocks) */
1353 
1354 int yynerrs;			/* number of errors */
1355 int yyerrflag;			/* error recovery flag */
1356 int yychar;			/* current input token number */
1357 
1358 
1359 
1360 #ifdef YYNMBCHARS
1361 #define YYLEX()		yycvtok(yylex())
1362 /*
1363 ** yycvtok - return a token if i is a wchar_t value that exceeds 255.
1364 **	If i<255, i itself is the token.  If i>255 but the neither
1365 **	of the 30th or 31st bit is on, i is already a token.
1366 */
1367 #if defined(__STDC__) || defined(__cplusplus)
1368 int yycvtok(int i)
1369 #else
1370 int yycvtok(i) int i;
1371 #endif
1372 {
1373 	int first = 0;
1374 	int last = YYNMBCHARS - 1;
1375 	int mid;
1376 	wchar_t j;
1377 
1378 	if(i&0x60000000){/*Must convert to a token. */
1379 		if( yymbchars[last].character < i ){
1380 			return i;/*Giving up*/
1381 		}
1382 		while ((last>=first)&&(first>=0)) {/*Binary search loop*/
1383 			mid = (first+last)/2;
1384 			j = yymbchars[mid].character;
1385 			if( j==i ){/*Found*/
1386 				return yymbchars[mid].tvalue;
1387 			}else if( j<i ){
1388 				first = mid + 1;
1389 			}else{
1390 				last = mid -1;
1391 			}
1392 		}
1393 		/*No entry in the table.*/
1394 		return i;/* Giving up.*/
1395 	}else{/* i is already a token. */
1396 		return i;
1397 	}
1398 }
1399 #else/*!YYNMBCHARS*/
1400 #define YYLEX()		yylex()
1401 #endif/*!YYNMBCHARS*/
1402 
1403 /*
1404 ** yyparse - return 0 if worked, 1 if syntax error not recovered from
1405 */
1406 #if defined(__STDC__) || defined(__cplusplus)
1407 int yyparse(void)
1408 #else
1409 int yyparse()
1410 #endif
1411 {
1412 	register YYSTYPE *yypvt = 0;	/* top of value stack for $vars */
1413 
1414 #if defined(__cplusplus) || defined(lint)
1415 /*
1416 	hacks to please C++ and lint - goto's inside
1417 	switch should never be executed
1418 */
1419 	static int __yaccpar_lint_hack__ = 0;
1420 	switch (__yaccpar_lint_hack__)
1421 	{
1422 		case 1: goto yyerrlab;
1423 		case 2: goto yynewstate;
1424 	}
1425 #endif
1426 
1427 	/*
1428 	** Initialize externals - yyparse may be called more than once
1429 	*/
1430 	yypv = &yyv[-1];
1431 	yyps = &yys[-1];
1432 	yystate = 0;
1433 	yytmp = 0;
1434 	yynerrs = 0;
1435 	yyerrflag = 0;
1436 	yychar = -1;
1437 
1438 #if YYMAXDEPTH <= 0
1439 	if (yymaxdepth <= 0)
1440 	{
1441 		if ((yymaxdepth = YYEXPAND(0)) <= 0)
1442 		{
1443 			yyerror("yacc initialization error");
1444 			YYABORT;
1445 		}
1446 	}
1447 #endif
1448 
1449 	{
1450 		register YYSTYPE *yy_pv;	/* top of value stack */
1451 		register int *yy_ps;		/* top of state stack */
1452 		register int yy_state;		/* current state */
1453 		register int  yy_n;		/* internal state number info */
1454 	goto yystack;	/* moved from 6 lines above to here to please C++ */
1455 
1456 		/*
1457 		** get globals into registers.
1458 		** branch to here only if YYBACKUP was called.
1459 		*/
1460 	yynewstate:
1461 		yy_pv = yypv;
1462 		yy_ps = yyps;
1463 		yy_state = yystate;
1464 		goto yy_newstate;
1465 
1466 		/*
1467 		** get globals into registers.
1468 		** either we just started, or we just finished a reduction
1469 		*/
1470 	yystack:
1471 		yy_pv = yypv;
1472 		yy_ps = yyps;
1473 		yy_state = yystate;
1474 
1475 		/*
1476 		** top of for (;;) loop while no reductions done
1477 		*/
1478 	yy_stack:
1479 		/*
1480 		** put a state and value onto the stacks
1481 		*/
1482 #if YYDEBUG
1483 		/*
1484 		** if debugging, look up token value in list of value vs.
1485 		** name pairs.  0 and negative (-1) are special values.
1486 		** Note: linear search is used since time is not a real
1487 		** consideration while debugging.
1488 		*/
1489 		if ( yydebug )
1490 		{
1491 			register int yy_i;
1492 
1493 			printf( "State %d, token ", yy_state );
1494 			if ( yychar == 0 )
1495 				printf( "end-of-file\n" );
1496 			else if ( yychar < 0 )
1497 				printf( "-none-\n" );
1498 			else
1499 			{
1500 				for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
1501 					yy_i++ )
1502 				{
1503 					if ( yytoks[yy_i].t_val == yychar )
1504 						break;
1505 				}
1506 				printf( "%s\n", yytoks[yy_i].t_name );
1507 			}
1508 		}
1509 #endif /* YYDEBUG */
1510 		if ( ++yy_ps >= &yys[ yymaxdepth ] )	/* room on stack? */
1511 		{
1512 			/*
1513 			** reallocate and recover.  Note that pointers
1514 			** have to be reset, or bad things will happen
1515 			*/
1516 			long yyps_index = (yy_ps - yys);
1517 			long yypv_index = (yy_pv - yyv);
1518 			long yypvt_index = (yypvt - yyv);
1519 			int yynewmax;
1520 #ifdef YYEXPAND
1521 			yynewmax = YYEXPAND(yymaxdepth);
1522 #else
1523 			yynewmax = 2 * yymaxdepth;	/* double table size */
1524 			if (yymaxdepth == YYMAXDEPTH)	/* first time growth */
1525 			{
1526 				char *newyys = (char *)YYNEW(int);
1527 				char *newyyv = (char *)YYNEW(YYSTYPE);
1528 				if (newyys != 0 && newyyv != 0)
1529 				{
1530 					yys = YYCOPY(newyys, yys, int);
1531 					yyv = YYCOPY(newyyv, yyv, YYSTYPE);
1532 				}
1533 				else
1534 					yynewmax = 0;	/* failed */
1535 			}
1536 			else				/* not first time */
1537 			{
1538 				yys = YYENLARGE(yys, int);
1539 				yyv = YYENLARGE(yyv, YYSTYPE);
1540 				if (yys == 0 || yyv == 0)
1541 					yynewmax = 0;	/* failed */
1542 			}
1543 #endif
1544 			if (yynewmax <= yymaxdepth)	/* tables not expanded */
1545 			{
1546 				yyerror( "yacc stack overflow" );
1547 				YYABORT;
1548 			}
1549 			yymaxdepth = yynewmax;
1550 
1551 			yy_ps = yys + yyps_index;
1552 			yy_pv = yyv + yypv_index;
1553 			yypvt = yyv + yypvt_index;
1554 		}
1555 		*yy_ps = yy_state;
1556 		*++yy_pv = yyval;
1557 
1558 		/*
1559 		** we have a new state - find out what to do
1560 		*/
1561 	yy_newstate:
1562 		if ( ( yy_n = yypact[ yy_state ] ) <= YYFLAG )
1563 			goto yydefault;		/* simple state */
1564 #if YYDEBUG
1565 		/*
1566 		** if debugging, need to mark whether new token grabbed
1567 		*/
1568 		yytmp = yychar < 0;
1569 #endif
1570 		if ( ( yychar < 0 ) && ( ( yychar = YYLEX() ) < 0 ) )
1571 			yychar = 0;		/* reached EOF */
1572 #if YYDEBUG
1573 		if ( yydebug && yytmp )
1574 		{
1575 			register int yy_i;
1576 
1577 			printf( "Received token " );
1578 			if ( yychar == 0 )
1579 				printf( "end-of-file\n" );
1580 			else if ( yychar < 0 )
1581 				printf( "-none-\n" );
1582 			else
1583 			{
1584 				for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
1585 					yy_i++ )
1586 				{
1587 					if ( yytoks[yy_i].t_val == yychar )
1588 						break;
1589 				}
1590 				printf( "%s\n", yytoks[yy_i].t_name );
1591 			}
1592 		}
1593 #endif /* YYDEBUG */
1594 		if ( ( ( yy_n += yychar ) < 0 ) || ( yy_n >= YYLAST ) )
1595 			goto yydefault;
1596 		if ( yychk[ yy_n = yyact[ yy_n ] ] == yychar )	/*valid shift*/
1597 		{
1598 			yychar = -1;
1599 			yyval = yylval;
1600 			yy_state = yy_n;
1601 			if ( yyerrflag > 0 )
1602 				yyerrflag--;
1603 			goto yy_stack;
1604 		}
1605 
1606 	yydefault:
1607 		if ( ( yy_n = yydef[ yy_state ] ) == -2 )
1608 		{
1609 #if YYDEBUG
1610 			yytmp = yychar < 0;
1611 #endif
1612 			if ( ( yychar < 0 ) && ( ( yychar = YYLEX() ) < 0 ) )
1613 				yychar = 0;		/* reached EOF */
1614 #if YYDEBUG
1615 			if ( yydebug && yytmp )
1616 			{
1617 				register int yy_i;
1618 
1619 				printf( "Received token " );
1620 				if ( yychar == 0 )
1621 					printf( "end-of-file\n" );
1622 				else if ( yychar < 0 )
1623 					printf( "-none-\n" );
1624 				else
1625 				{
1626 					for ( yy_i = 0;
1627 						yytoks[yy_i].t_val >= 0;
1628 						yy_i++ )
1629 					{
1630 						if ( yytoks[yy_i].t_val
1631 							== yychar )
1632 						{
1633 							break;
1634 						}
1635 					}
1636 					printf( "%s\n", yytoks[yy_i].t_name );
1637 				}
1638 			}
1639 #endif /* YYDEBUG */
1640 			/*
1641 			** look through exception table
1642 			*/
1643 			{
1644 				register YYCONST int *yyxi = yyexca;
1645 
1646 				while ( ( *yyxi != -1 ) ||
1647 					( yyxi[1] != yy_state ) )
1648 				{
1649 					yyxi += 2;
1650 				}
1651 				while ( ( *(yyxi += 2) >= 0 ) &&
1652 					( *yyxi != yychar ) )
1653 					;
1654 				if ( ( yy_n = yyxi[1] ) < 0 )
1655 					YYACCEPT;
1656 			}
1657 		}
1658 
1659 		/*
1660 		** check for syntax error
1661 		*/
1662 		if ( yy_n == 0 )	/* have an error */
1663 		{
1664 			/* no worry about speed here! */
1665 			switch ( yyerrflag )
1666 			{
1667 			case 0:		/* new error */
1668 				yyerror( "syntax error" );
1669 				goto skip_init;
1670 			yyerrlab:
1671 				/*
1672 				** get globals into registers.
1673 				** we have a user generated syntax type error
1674 				*/
1675 				yy_pv = yypv;
1676 				yy_ps = yyps;
1677 				yy_state = yystate;
1678 			skip_init:
1679 				yynerrs++;
1680 				/* FALLTHRU */
1681 			case 1:
1682 			case 2:		/* incompletely recovered error */
1683 					/* try again... */
1684 				yyerrflag = 3;
1685 				/*
1686 				** find state where "error" is a legal
1687 				** shift action
1688 				*/
1689 				while ( yy_ps >= yys )
1690 				{
1691 					yy_n = yypact[ *yy_ps ] + YYERRCODE;
1692 					if ( yy_n >= 0 && yy_n < YYLAST &&
1693 						yychk[yyact[yy_n]] == YYERRCODE)					{
1694 						/*
1695 						** simulate shift of "error"
1696 						*/
1697 						yy_state = yyact[ yy_n ];
1698 						goto yy_stack;
1699 					}
1700 					/*
1701 					** current state has no shift on
1702 					** "error", pop stack
1703 					*/
1704 #if YYDEBUG
1705 #	define _POP_ "Error recovery pops state %d, uncovers state %d\n"
1706 					if ( yydebug )
1707 						printf( _POP_, *yy_ps,
1708 							yy_ps[-1] );
1709 #	undef _POP_
1710 #endif
1711 					yy_ps--;
1712 					yy_pv--;
1713 				}
1714 				/*
1715 				** there is no state on stack with "error" as
1716 				** a valid shift.  give up.
1717 				*/
1718 				YYABORT;
1719 			case 3:		/* no shift yet; eat a token */
1720 #if YYDEBUG
1721 				/*
1722 				** if debugging, look up token in list of
1723 				** pairs.  0 and negative shouldn't occur,
1724 				** but since timing doesn't matter when
1725 				** debugging, it doesn't hurt to leave the
1726 				** tests here.
1727 				*/
1728 				if ( yydebug )
1729 				{
1730 					register int yy_i;
1731 
1732 					printf( "Error recovery discards " );
1733 					if ( yychar == 0 )
1734 						printf( "token end-of-file\n" );
1735 					else if ( yychar < 0 )
1736 						printf( "token -none-\n" );
1737 					else
1738 					{
1739 						for ( yy_i = 0;
1740 							yytoks[yy_i].t_val >= 0;
1741 							yy_i++ )
1742 						{
1743 							if ( yytoks[yy_i].t_val
1744 								== yychar )
1745 							{
1746 								break;
1747 							}
1748 						}
1749 						printf( "token %s\n",
1750 							yytoks[yy_i].t_name );
1751 					}
1752 				}
1753 #endif /* YYDEBUG */
1754 				if ( yychar == 0 )	/* reached EOF. quit */
1755 					YYABORT;
1756 				yychar = -1;
1757 				goto yy_newstate;
1758 			}
1759 		}/* end if ( yy_n == 0 ) */
1760 		/*
1761 		** reduction by production yy_n
1762 		** put stack tops, etc. so things right after switch
1763 		*/
1764 #if YYDEBUG
1765 		/*
1766 		** if debugging, print the string that is the user's
1767 		** specification of the reduction which is just about
1768 		** to be done.
1769 		*/
1770 		if ( yydebug )
1771 			printf( "Reduce by (%d) \"%s\"\n",
1772 				yy_n, yyreds[ yy_n ] );
1773 #endif
1774 		yytmp = yy_n;			/* value to switch over */
1775 		yypvt = yy_pv;			/* $vars top of value stack */
1776 		/*
1777 		** Look in goto table for next state
1778 		** Sorry about using yy_state here as temporary
1779 		** register variable, but why not, if it works...
1780 		** If yyr2[ yy_n ] doesn't have the low order bit
1781 		** set, then there is no action to be done for
1782 		** this reduction.  So, no saving & unsaving of
1783 		** registers done.  The only difference between the
1784 		** code just after the if and the body of the if is
1785 		** the goto yy_stack in the body.  This way the test
1786 		** can be made before the choice of what to do is needed.
1787 		*/
1788 		{
1789 			/* length of production doubled with extra bit */
1790 			register int yy_len = yyr2[ yy_n ];
1791 
1792 			if ( !( yy_len & 01 ) )
1793 			{
1794 				yy_len >>= 1;
1795 				yyval = ( yy_pv -= yy_len )[1];	/* $$ = $1 */
1796 				yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
1797 					*( yy_ps -= yy_len ) + 1;
1798 				if ( yy_state >= YYLAST ||
1799 					yychk[ yy_state =
1800 					yyact[ yy_state ] ] != -yy_n )
1801 				{
1802 					yy_state = yyact[ yypgo[ yy_n ] ];
1803 				}
1804 				goto yy_stack;
1805 			}
1806 			yy_len >>= 1;
1807 			yyval = ( yy_pv -= yy_len )[1];	/* $$ = $1 */
1808 			yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
1809 				*( yy_ps -= yy_len ) + 1;
1810 			if ( yy_state >= YYLAST ||
1811 				yychk[ yy_state = yyact[ yy_state ] ] != -yy_n )
1812 			{
1813 				yy_state = yyact[ yypgo[ yy_n ] ];
1814 			}
1815 		}
1816 					/* save until reenter driver code */
1817 		yystate = yy_state;
1818 		yyps = yy_ps;
1819 		yypv = yy_pv;
1820 	}
1821 	/*
1822 	** code supplied by user is placed in this switch
1823 	*/
1824 	switch( yytmp )
1825 	{
1826 
1827 case 1:
1828 # line 108 "awk.g.y"
1829 { if (errorflag==0)
1830 			winner = (Node *)stat3(PROGRAM, beginloc, yypvt[-0].p, endloc); } break;
1831 case 2:
1832 # line 110 "awk.g.y"
1833 { yyclearin; bracecheck(); ERROR "bailing out" SYNTAX; } break;
1834 case 13:
1835 # line 135 "awk.g.y"
1836 { yyval.p = stat4(FOR, yypvt[-6].p, notnull(yypvt[-4].p), yypvt[-2].p, yypvt[-0].p); } break;
1837 case 14:
1838 # line 137 "awk.g.y"
1839 { yyval.p = stat4(FOR, yypvt[-5].p, NIL, yypvt[-2].p, yypvt[-0].p); } break;
1840 case 15:
1841 # line 139 "awk.g.y"
1842 { yyval.p = stat3(IN, yypvt[-4].p, makearr(yypvt[-2].p), yypvt[-0].p); } break;
1843 case 16:
1844 # line 143 "awk.g.y"
1845 { setfname(yypvt[-0].cp); } break;
1846 case 17:
1847 # line 144 "awk.g.y"
1848 { setfname(yypvt[-0].cp); } break;
1849 case 18:
1850 # line 148 "awk.g.y"
1851 { yyval.p = notnull(yypvt[-1].p); } break;
1852 case 23:
1853 # line 160 "awk.g.y"
1854 { yyval.i = 0; } break;
1855 case 25:
1856 # line 165 "awk.g.y"
1857 { yyval.i = 0; } break;
1858 case 27:
1859 # line 171 "awk.g.y"
1860 { yyval.p = 0; } break;
1861 case 29:
1862 # line 176 "awk.g.y"
1863 { yyval.p = 0; } break;
1864 case 30:
1865 # line 177 "awk.g.y"
1866 { yyval.p = yypvt[-1].p; } break;
1867 case 31:
1868 # line 181 "awk.g.y"
1869 { yyval.p = notnull(yypvt[-0].p); } break;
1870 case 32:
1871 # line 185 "awk.g.y"
1872 { yyval.p = stat2(PASTAT, yypvt[-0].p, stat2(PRINT, rectonode(), NIL)); } break;
1873 case 33:
1874 # line 186 "awk.g.y"
1875 { yyval.p = stat2(PASTAT, yypvt[-3].p, yypvt[-1].p); } break;
1876 case 34:
1877 # line 187 "awk.g.y"
1878 { yyval.p = pa2stat(yypvt[-2].p, yypvt[-0].p, stat2(PRINT, rectonode(), NIL)); } break;
1879 case 35:
1880 # line 188 "awk.g.y"
1881 { yyval.p = pa2stat(yypvt[-5].p, yypvt[-3].p, yypvt[-1].p); } break;
1882 case 36:
1883 # line 189 "awk.g.y"
1884 { yyval.p = stat2(PASTAT, NIL, yypvt[-1].p); } break;
1885 case 37:
1886 # line 191 "awk.g.y"
1887 { beginloc = linkum(beginloc, yypvt[-1].p); yyval.p = 0; } break;
1888 case 38:
1889 # line 193 "awk.g.y"
1890 { endloc = linkum(endloc, yypvt[-1].p); yyval.p = 0; } break;
1891 case 39:
1892 # line 194 "awk.g.y"
1893 {infunc++;} break;
1894 case 40:
1895 # line 195 "awk.g.y"
1896 { infunc--; curfname=0; defn((Cell *)yypvt[-7].p, yypvt[-5].p, yypvt[-1].p); yyval.p = 0; } break;
1897 case 42:
1898 # line 200 "awk.g.y"
1899 { yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break;
1900 case 44:
1901 # line 205 "awk.g.y"
1902 { yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break;
1903 case 45:
1904 # line 209 "awk.g.y"
1905 { yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break;
1906 case 46:
1907 # line 211 "awk.g.y"
1908 { yyval.p = op3(CONDEXPR, notnull(yypvt[-4].p), yypvt[-2].p, yypvt[-0].p); } break;
1909 case 47:
1910 # line 213 "awk.g.y"
1911 { yyval.p = op2(BOR, notnull(yypvt[-2].p), notnull(yypvt[-0].p)); } break;
1912 case 48:
1913 # line 215 "awk.g.y"
1914 { yyval.p = op2(AND, notnull(yypvt[-2].p), notnull(yypvt[-0].p)); } break;
1915 case 49:
1916 # line 217 "awk.g.y"
1917 { yyval.p = op1(NOT, notnull(yypvt[-0].p)); } break;
1918 case 50:
1919 # line 218 "awk.g.y"
1920 { yyval.p = op3(yypvt[-1].i, NIL, yypvt[-2].p, (Node*)makedfa(yypvt[-0].s, 0)); } break;
1921 case 51:
1922 # line 220 "awk.g.y"
1923 { if (constnode(yypvt[-0].p))
1924 			yyval.p = op3(yypvt[-1].i, NIL, yypvt[-2].p, (Node*)makedfa(strnode(yypvt[-0].p), 0));
1925 		  else
1926 			yyval.p = op3(yypvt[-1].i, (Node *)1, yypvt[-2].p, yypvt[-0].p); } break;
1927 case 52:
1928 # line 224 "awk.g.y"
1929 { yyval.p = op2(INTEST, yypvt[-2].p, makearr(yypvt[-0].p)); } break;
1930 case 53:
1931 # line 225 "awk.g.y"
1932 { yyval.p = op2(INTEST, yypvt[-3].p, makearr(yypvt[-0].p)); } break;
1933 case 54:
1934 # line 226 "awk.g.y"
1935 { yyval.p = op2(CAT, yypvt[-1].p, yypvt[-0].p); } break;
1936 case 55:
1937 # line 228 "awk.g.y"
1938 { yyval.p = op3(MATCH, NIL, rectonode(), (Node*)makedfa(yypvt[-0].s, 0)); } break;
1939 case 57:
1940 # line 233 "awk.g.y"
1941 { yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break;
1942 case 58:
1943 # line 235 "awk.g.y"
1944 { yyval.p = op3(CONDEXPR, notnull(yypvt[-4].p), yypvt[-2].p, yypvt[-0].p); } break;
1945 case 59:
1946 # line 237 "awk.g.y"
1947 { yyval.p = op2(BOR, notnull(yypvt[-2].p), notnull(yypvt[-0].p)); } break;
1948 case 60:
1949 # line 239 "awk.g.y"
1950 { yyval.p = op2(AND, notnull(yypvt[-2].p), notnull(yypvt[-0].p)); } break;
1951 case 61:
1952 # line 241 "awk.g.y"
1953 { yyval.p = op1(NOT, op2(NE,yypvt[-0].p,valtonode(lookup((uchar *)"$zero&null",symtab),CCON))); } break;
1954 case 62:
1955 # line 242 "awk.g.y"
1956 { yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break;
1957 case 63:
1958 # line 243 "awk.g.y"
1959 { yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break;
1960 case 64:
1961 # line 244 "awk.g.y"
1962 { yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break;
1963 case 65:
1964 # line 245 "awk.g.y"
1965 { yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break;
1966 case 66:
1967 # line 246 "awk.g.y"
1968 { yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break;
1969 case 67:
1970 # line 247 "awk.g.y"
1971 { yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break;
1972 case 68:
1973 # line 248 "awk.g.y"
1974 { yyval.p = op3(yypvt[-1].i, NIL, yypvt[-2].p, (Node*)makedfa(yypvt[-0].s, 0)); } break;
1975 case 69:
1976 # line 250 "awk.g.y"
1977 { if (constnode(yypvt[-0].p))
1978 			yyval.p = op3(yypvt[-1].i, NIL, yypvt[-2].p, (Node*)makedfa(strnode(yypvt[-0].p), 0));
1979 		  else
1980 			yyval.p = op3(yypvt[-1].i, (Node *)1, yypvt[-2].p, yypvt[-0].p); } break;
1981 case 70:
1982 # line 254 "awk.g.y"
1983 { yyval.p = op2(INTEST, yypvt[-2].p, makearr(yypvt[-0].p)); } break;
1984 case 71:
1985 # line 255 "awk.g.y"
1986 { yyval.p = op2(INTEST, yypvt[-3].p, makearr(yypvt[-0].p)); } break;
1987 case 72:
1988 # line 256 "awk.g.y"
1989 { yyval.p = op3(GETLINE, yypvt[-0].p, (Node*)yypvt[-2].i, yypvt[-3].p); } break;
1990 case 73:
1991 # line 257 "awk.g.y"
1992 { yyval.p = op3(GETLINE, (Node*)0, (Node*)yypvt[-1].i, yypvt[-2].p); } break;
1993 case 74:
1994 # line 258 "awk.g.y"
1995 { yyval.p = op2(CAT, yypvt[-1].p, yypvt[-0].p); } break;
1996 case 75:
1997 # line 260 "awk.g.y"
1998 { yyval.p = op3(MATCH, NIL, rectonode(), (Node*)makedfa(yypvt[-0].s, 0)); } break;
1999 case 77:
2000 # line 265 "awk.g.y"
2001 { yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break;
2002 case 78:
2003 # line 266 "awk.g.y"
2004 { yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break;
2005 case 80:
2006 # line 271 "awk.g.y"
2007 { yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break;
2008 case 81:
2009 # line 274 "awk.g.y"
2010 { yyval.p = rectonode(); } break;
2011 case 83:
2012 # line 276 "awk.g.y"
2013 { yyval.p = yypvt[-1].p; } break;
2014 case 92:
2015 # line 292 "awk.g.y"
2016 {startreg();} break;
2017 case 93:
2018 # line 292 "awk.g.y"
2019 { yyval.s = yypvt[-1].s; } break;
2020 case 96:
2021 # line 300 "awk.g.y"
2022 { yyval.p = stat3(yypvt[-3].i, yypvt[-2].p, (Node *) yypvt[-1].i, yypvt[-0].p); } break;
2023 case 97:
2024 # line 301 "awk.g.y"
2025 { yyval.p = stat3(yypvt[-3].i, yypvt[-2].p, (Node *) yypvt[-1].i, yypvt[-0].p); } break;
2026 case 98:
2027 # line 302 "awk.g.y"
2028 { yyval.p = stat3(yypvt[-3].i, yypvt[-2].p, (Node *) yypvt[-1].i, yypvt[-0].p); } break;
2029 case 99:
2030 # line 303 "awk.g.y"
2031 { yyval.p = stat3(yypvt[-1].i, yypvt[-0].p, NIL, NIL); } break;
2032 case 100:
2033 # line 304 "awk.g.y"
2034 { yyval.p = stat2(DELETE, makearr(yypvt[-3].p), yypvt[-1].p); } break;
2035 case 101:
2036 # line 305 "awk.g.y"
2037 { yyclearin; ERROR "you can only delete array[element]" SYNTAX; yyval.p = stat1(DELETE, yypvt[-0].p); } break;
2038 case 102:
2039 # line 306 "awk.g.y"
2040 { yyval.p = exptostat(yypvt[-0].p); } break;
2041 case 103:
2042 # line 307 "awk.g.y"
2043 { yyclearin; ERROR "illegal statement" SYNTAX; } break;
2044 case 106:
2045 # line 315 "awk.g.y"
2046 { yyval.p = stat1(BREAK, NIL); } break;
2047 case 107:
2048 # line 316 "awk.g.y"
2049 { yyval.p = stat1(CLOSE, yypvt[-1].p); } break;
2050 case 108:
2051 # line 317 "awk.g.y"
2052 { yyval.p = stat1(CONTINUE, NIL); } break;
2053 case 109:
2054 # line 319 "awk.g.y"
2055 { yyval.p = stat2(DO, yypvt[-5].p, notnull(yypvt[-2].p)); } break;
2056 case 110:
2057 # line 320 "awk.g.y"
2058 { yyval.p = stat1(EXIT, yypvt[-1].p); } break;
2059 case 111:
2060 # line 321 "awk.g.y"
2061 { yyval.p = stat1(EXIT, NIL); } break;
2062 case 113:
2063 # line 323 "awk.g.y"
2064 { yyval.p = stat3(IF, yypvt[-3].p, yypvt[-2].p, yypvt[-0].p); } break;
2065 case 114:
2066 # line 324 "awk.g.y"
2067 { yyval.p = stat3(IF, yypvt[-1].p, yypvt[-0].p, NIL); } break;
2068 case 115:
2069 # line 325 "awk.g.y"
2070 { yyval.p = yypvt[-1].p; } break;
2071 case 116:
2072 # line 326 "awk.g.y"
2073 { if (infunc)
2074 				ERROR "next is illegal inside a function" SYNTAX;
2075 			  yyval.p = stat1(NEXT, NIL); } break;
2076 case 117:
2077 # line 329 "awk.g.y"
2078 { yyval.p = stat1(RETURN, yypvt[-1].p); } break;
2079 case 118:
2080 # line 330 "awk.g.y"
2081 { yyval.p = stat1(RETURN, NIL); } break;
2082 case 120:
2083 # line 332 "awk.g.y"
2084 { yyval.p = stat2(WHILE, yypvt[-1].p, yypvt[-0].p); } break;
2085 case 121:
2086 # line 333 "awk.g.y"
2087 { yyval.p = 0; } break;
2088 case 123:
2089 # line 338 "awk.g.y"
2090 { yyval.p = linkum(yypvt[-1].p, yypvt[-0].p); } break;
2091 case 126:
2092 # line 346 "awk.g.y"
2093 { yyval.p = op2(ADD, yypvt[-2].p, yypvt[-0].p); } break;
2094 case 127:
2095 # line 347 "awk.g.y"
2096 { yyval.p = op2(MINUS, yypvt[-2].p, yypvt[-0].p); } break;
2097 case 128:
2098 # line 348 "awk.g.y"
2099 { yyval.p = op2(MULT, yypvt[-2].p, yypvt[-0].p); } break;
2100 case 129:
2101 # line 349 "awk.g.y"
2102 { yyval.p = op2(DIVIDE, yypvt[-2].p, yypvt[-0].p); } break;
2103 case 130:
2104 # line 350 "awk.g.y"
2105 { yyval.p = op2(MOD, yypvt[-2].p, yypvt[-0].p); } break;
2106 case 131:
2107 # line 351 "awk.g.y"
2108 { yyval.p = op2(POWER, yypvt[-2].p, yypvt[-0].p); } break;
2109 case 132:
2110 # line 352 "awk.g.y"
2111 { yyval.p = op1(UMINUS, yypvt[-0].p); } break;
2112 case 133:
2113 # line 353 "awk.g.y"
2114 { yyval.p = yypvt[-0].p; } break;
2115 case 134:
2116 # line 354 "awk.g.y"
2117 { yyval.p = op2(BLTIN, (Node *) yypvt[-2].i, rectonode()); } break;
2118 case 135:
2119 # line 355 "awk.g.y"
2120 { yyval.p = op2(BLTIN, (Node *) yypvt[-3].i, yypvt[-1].p); } break;
2121 case 136:
2122 # line 356 "awk.g.y"
2123 { yyval.p = op2(BLTIN, (Node *) yypvt[-0].i, rectonode()); } break;
2124 case 137:
2125 # line 357 "awk.g.y"
2126 { yyval.p = op2(CALL, valtonode(yypvt[-2].cp,CVAR), NIL); } break;
2127 case 138:
2128 # line 358 "awk.g.y"
2129 { yyval.p = op2(CALL, valtonode(yypvt[-3].cp,CVAR), yypvt[-1].p); } break;
2130 case 139:
2131 # line 359 "awk.g.y"
2132 { yyval.p = op1(PREDECR, yypvt[-0].p); } break;
2133 case 140:
2134 # line 360 "awk.g.y"
2135 { yyval.p = op1(PREINCR, yypvt[-0].p); } break;
2136 case 141:
2137 # line 361 "awk.g.y"
2138 { yyval.p = op1(POSTDECR, yypvt[-1].p); } break;
2139 case 142:
2140 # line 362 "awk.g.y"
2141 { yyval.p = op1(POSTINCR, yypvt[-1].p); } break;
2142 case 143:
2143 # line 363 "awk.g.y"
2144 { yyval.p = op3(GETLINE, yypvt[-2].p, (Node *)yypvt[-1].i, yypvt[-0].p); } break;
2145 case 144:
2146 # line 364 "awk.g.y"
2147 { yyval.p = op3(GETLINE, NIL, (Node *)yypvt[-1].i, yypvt[-0].p); } break;
2148 case 145:
2149 # line 365 "awk.g.y"
2150 { yyval.p = op3(GETLINE, yypvt[-0].p, NIL, NIL); } break;
2151 case 146:
2152 # line 366 "awk.g.y"
2153 { yyval.p = op3(GETLINE, NIL, NIL, NIL); } break;
2154 case 147:
2155 # line 368 "awk.g.y"
2156 { yyval.p = op2(INDEX, yypvt[-3].p, yypvt[-1].p); } break;
2157 case 148:
2158 # line 370 "awk.g.y"
2159 { ERROR "index() doesn't permit regular expressions" SYNTAX;
2160 		  yyval.p = op2(INDEX, yypvt[-3].p, (Node*)yypvt[-1].s); } break;
2161 case 149:
2162 # line 372 "awk.g.y"
2163 { yyval.p = yypvt[-1].p; } break;
2164 case 150:
2165 # line 374 "awk.g.y"
2166 { yyval.p = op3(MATCHFCN, NIL, yypvt[-3].p, (Node*)makedfa(yypvt[-1].s, 1)); } break;
2167 case 151:
2168 # line 376 "awk.g.y"
2169 { if (constnode(yypvt[-1].p))
2170 			yyval.p = op3(MATCHFCN, NIL, yypvt[-3].p, (Node*)makedfa(strnode(yypvt[-1].p), 1));
2171 		  else
2172 			yyval.p = op3(MATCHFCN, (Node *)1, yypvt[-3].p, yypvt[-1].p); } break;
2173 case 152:
2174 # line 380 "awk.g.y"
2175 { yyval.p = valtonode(yypvt[-0].cp, CCON); } break;
2176 case 153:
2177 # line 382 "awk.g.y"
2178 { yyval.p = op4(SPLIT, yypvt[-5].p, makearr(yypvt[-3].p), yypvt[-1].p, (Node*)STRING); } break;
2179 case 154:
2180 # line 384 "awk.g.y"
2181 { yyval.p = op4(SPLIT, yypvt[-5].p, makearr(yypvt[-3].p), (Node*)makedfa(yypvt[-1].s, 1), (Node *)REGEXPR); } break;
2182 case 155:
2183 # line 386 "awk.g.y"
2184 { yyval.p = op4(SPLIT, yypvt[-3].p, makearr(yypvt[-1].p), NIL, (Node*)STRING); } break;
2185 case 156:
2186 # line 387 "awk.g.y"
2187 { yyval.p = op1(yypvt[-3].i, yypvt[-1].p); } break;
2188 case 157:
2189 # line 388 "awk.g.y"
2190 { yyval.p = valtonode(yypvt[-0].cp, CCON); } break;
2191 case 158:
2192 # line 390 "awk.g.y"
2193 { yyval.p = op4(yypvt[-5].i, NIL, (Node*)makedfa(yypvt[-3].s, 1), yypvt[-1].p, rectonode()); } break;
2194 case 159:
2195 # line 392 "awk.g.y"
2196 { if (constnode(yypvt[-3].p))
2197 			yyval.p = op4(yypvt[-5].i, NIL, (Node*)makedfa(strnode(yypvt[-3].p), 1), yypvt[-1].p, rectonode());
2198 		  else
2199 			yyval.p = op4(yypvt[-5].i, (Node *)1, yypvt[-3].p, yypvt[-1].p, rectonode()); } break;
2200 case 160:
2201 # line 397 "awk.g.y"
2202 { yyval.p = op4(yypvt[-7].i, NIL, (Node*)makedfa(yypvt[-5].s, 1), yypvt[-3].p, yypvt[-1].p); } break;
2203 case 161:
2204 # line 399 "awk.g.y"
2205 { if (constnode(yypvt[-5].p))
2206 			yyval.p = op4(yypvt[-7].i, NIL, (Node*)makedfa(strnode(yypvt[-5].p), 1), yypvt[-3].p, yypvt[-1].p);
2207 		  else
2208 			yyval.p = op4(yypvt[-7].i, (Node *)1, yypvt[-5].p, yypvt[-3].p, yypvt[-1].p); } break;
2209 case 162:
2210 # line 404 "awk.g.y"
2211 { yyval.p = op3(SUBSTR, yypvt[-5].p, yypvt[-3].p, yypvt[-1].p); } break;
2212 case 163:
2213 # line 406 "awk.g.y"
2214 { yyval.p = op3(SUBSTR, yypvt[-3].p, yypvt[-1].p, NIL); } break;
2215 case 166:
2216 # line 412 "awk.g.y"
2217 { yyval.p = op2(ARRAY, makearr(yypvt[-3].p), yypvt[-1].p); } break;
2218 case 167:
2219 # line 413 "awk.g.y"
2220 { yyval.p = valtonode(yypvt[-0].cp, CFLD); } break;
2221 case 168:
2222 # line 414 "awk.g.y"
2223 { yyval.p = op1(INDIRECT, valtonode(yypvt[-0].cp, CVAR)); } break;
2224 case 169:
2225 # line 415 "awk.g.y"
2226 { yyval.p = op1(INDIRECT, yypvt[-0].p); } break;
2227 case 170:
2228 # line 419 "awk.g.y"
2229 { arglist = yyval.p = 0; } break;
2230 case 171:
2231 # line 420 "awk.g.y"
2232 { arglist = yyval.p = valtonode(yypvt[-0].cp,CVAR); } break;
2233 case 172:
2234 # line 421 "awk.g.y"
2235 { arglist = yyval.p = linkum(yypvt[-2].p,valtonode(yypvt[-0].cp,CVAR)); } break;
2236 case 173:
2237 # line 425 "awk.g.y"
2238 { yyval.p = valtonode(yypvt[-0].cp, CVAR); } break;
2239 case 174:
2240 # line 426 "awk.g.y"
2241 { yyval.p = op1(ARG, (Node *) yypvt[-0].i); } break;
2242 case 175:
2243 # line 427 "awk.g.y"
2244 { yyval.p = op1(VARNF, (Node *) yypvt[-0].cp); } break;
2245 case 176:
2246 # line 432 "awk.g.y"
2247 { yyval.p = notnull(yypvt[-1].p); } break;
2248 # line	556 "/usr/share/lib/ccs/yaccpar"
2249 	}
2250 	goto yystack;		/* reset registers in driver code */
2251 }
2252 
2253