gno/usr.bin/awk/ytab.c
tribby 0b6d503134 awk 2.0 for GNO/ME, including modified Bell Labs source code, test cases,
and output files for test case comparison. See README.gno for implementation
notes. NOTE: some test cases in tests/dotests are commented-out because
they depend on pipes working and/or the "sort" utility.
1998-04-07 16:19:01 +00:00

2196 lines
79 KiB
C

/* $Id: ytab.c,v 1.2 1998/04/07 16:14:07 tribby Exp $ */
#ifdef __ORCAC__
segment "lex";
#endif
/* NOTE: line directives commented-out in GNO version, for debugger */
/* # line 26 "awkgram.y" */
#include <stdio.h>
#include <string.h>
#include "awk.h"
void checkdup(Node *list, Cell *item);
int yywrap(void) { return(1); }
Node *beginloc = 0;
Node *endloc = 0;
int infunc = 0; /* = 1 if in arglist or body of func */
int inloop = 0; /* = 1 if in while, for, do */
char *curfname = 0; /* current function name */
Node *arglist = 0; /* list of args for current function */
/* # line 41 "awkgram.y" */
typedef union {
Node *p;
Cell *cp;
int i;
char *s;
} YYSTYPE;
#ifdef __cplusplus
# include <stdio.h>
# include <yacc.h>
#endif /* __cplusplus */
# define FIRSTTOKEN 257
# define PROGRAM 258
# define PASTAT 259
# define PASTAT2 260
# define XBEGIN 261
# define XEND 262
# define NL 263
# define ARRAY 264
# define MATCH 265
# define NOTMATCH 266
# define MATCHOP 267
# define FINAL 268
# define DOT 269
# define ALL 270
# define CCL 271
# define NCCL 272
# define CHAR 273
# define OR 274
# define STAR 275
# define QUEST 276
# define PLUS 277
# define AND 278
# define BOR 279
# define APPEND 280
# define EQ 281
# define GE 282
# define GT 283
# define LE 284
# define LT 285
# define NE 286
# define IN 287
# define ARG 288
# define BLTIN 289
# define BREAK 290
# define CLOSE 291
# define CONTINUE 292
# define DELETE 293
# define DO 294
# define EXIT 295
# define FOR 296
# define FUNC 297
# define SUB 298
# define GSUB 299
# define IF 300
# define INDEX 301
# define LSUBSTR 302
# define MATCHFCN 303
# define NEXT 304
# define NEXTFILE 305
# define ADD 306
# define MINUS 307
# define MULT 308
# define DIVIDE 309
# define MOD 310
# define ASSIGN 311
# define ASGNOP 312
# define ADDEQ 313
# define SUBEQ 314
# define MULTEQ 315
# define DIVEQ 316
# define MODEQ 317
# define POWEQ 318
# define PRINT 319
# define PRINTF 320
# define SPRINTF 321
# define ELSE 322
# define INTEST 323
# define CONDEXPR 324
# define POSTINCR 325
# define PREINCR 326
# define POSTDECR 327
# define PREDECR 328
# define VAR 329
# define IVAR 330
# define VARNF 331
# define CALL 332
# define NUMBER 333
# define STRING 334
# define REGEXPR 335
# define GETLINE 336
# define RETURN 337
# define SPLIT 338
# define SUBSTR 339
# define WHILE 340
# define CAT 341
# define NOT 342
# define UMINUS 343
# define POWER 344
# define DECR 345
# define INCR 346
# define INDIRECT 347
# define LASTTOKEN 348
#define yyclearin yychar = -1
#define yyerrok yyerrflag = 0
extern int yychar;
#ifndef YYMAXDEPTH
#define YYMAXDEPTH 150
#endif
/* __YYSCLASS defines the scoping/storage class for global objects
* that are NOT renamed by the -p option. By default these names
* are going to be 'static' so that multi-definition errors
* will not occur with multiple parsers.
* If you want (unsupported) access to internal names you need
* to define this to be null so it implies 'extern' scope.
* This should not be used in conjunction with -p.
*/
#ifndef __YYSCLASS
# define __YYSCLASS static
#endif
YYSTYPE yylval;
__YYSCLASS YYSTYPE yyval;
typedef int yytabelem;
# define YYERRCODE 256
/* # line 444 "awkgram.y" */
void setfname(Cell *p)
{
if (isarr(p))
ERROR "%s is an array, not a function", p->nval SYNTAX;
else if (isfcn(p))
ERROR "you can't define function %s more than once", p->nval SYNTAX;
curfname = p->nval;
}
int constnode(Node *p)
{
return isvalue(p) && ((Cell *) (p->narg[0]))->csub == CCON;
}
char *strnode(Node *p)
{
return ((Cell *)(p->narg[0]))->sval;
}
Node *notnull(Node *n)
{
switch (n->nobj) {
case LE: case LT: case EQ: case NE: case GT: case GE:
case BOR: case AND: case NOT:
return n;
default:
return op2(NE, n, nullnode);
}
}
void checkdup(Node *vl, Cell *cp) /* check if name already in list */
{
char *s = cp->nval;
for ( ; vl; vl = vl->nnext) {
if (strcmp(s, ((Cell *)(vl->narg[0]))->nval) == 0) {
ERROR "duplicate argument %s", s SYNTAX;
break;
}
}
}
__YYSCLASS yytabelem yyexca[] ={
-1, 0,
0, 28,
261, 28,
262, 28,
123, 28,
40, 28,
47, 28,
288, 28,
289, 28,
297, 28,
298, 28,
299, 28,
301, 28,
303, 28,
321, 28,
329, 28,
330, 28,
331, 28,
332, 28,
333, 28,
334, 28,
336, 28,
338, 28,
339, 28,
43, 28,
45, 28,
342, 28,
345, 28,
346, 28,
347, 28,
-2, 0,
-1, 1,
0, -1,
-2, 0,
-1, 157,
59, 30,
-2, 0,
-1, 176,
124, 0,
267, 0,
281, 0,
282, 0,
283, 0,
284, 0,
285, 0,
286, 0,
287, 0,
-2, 63,
-1, 177,
124, 0,
267, 0,
281, 0,
282, 0,
283, 0,
284, 0,
285, 0,
286, 0,
287, 0,
-2, 64,
-1, 178,
124, 0,
267, 0,
281, 0,
282, 0,
283, 0,
284, 0,
285, 0,
286, 0,
287, 0,
-2, 65,
-1, 179,
124, 0,
267, 0,
281, 0,
282, 0,
283, 0,
284, 0,
285, 0,
286, 0,
287, 0,
-2, 66,
-1, 180,
124, 0,
267, 0,
281, 0,
282, 0,
283, 0,
284, 0,
285, 0,
286, 0,
287, 0,
-2, 67,
-1, 181,
124, 0,
267, 0,
281, 0,
282, 0,
283, 0,
284, 0,
285, 0,
286, 0,
287, 0,
-2, 68,
-1, 183,
124, 0,
267, 0,
281, 0,
282, 0,
283, 0,
284, 0,
285, 0,
286, 0,
287, 0,
-2, 70,
-1, 288,
267, 0,
287, 0,
-2, 53,
-1, 332,
41, 30,
-2, 0,
-1, 354,
41, 30,
-2, 0,
};
# define YYNPROD 184
# define YYLAST 4423
__YYSCLASS yytabelem yyact[]={
17, 137, 66, 228, 253, 276, 243, 124, 138, 102,
42, 103, 104, 111, 112, 42, 100, 155, 109, 107,
307, 108, 185, 110, 100, 214, 100, 100, 100, 42,
253, 121, 122, 123, 249, 82, 253, 42, 83, 103,
104, 223, 103, 104, 313, 252, 113, 205, 232, 139,
311, 41, 22, 43, 53, 42, 41, 22, 43, 142,
7, 146, 309, 7, 48, 149, 150, 152, 153, 23,
41, 22, 43, 163, 23, 100, 111, 156, 41, 140,
43, 109, 85, 273, 217, 143, 110, 105, 23, 51,
62, 16, 190, 244, 274, 11, 41, 113, 43, 10,
100, 50, 317, 79, 80, 133, 190, 100, 100, 100,
100, 100, 100, 100, 9, 268, 334, 148, 323, 190,
277, 190, 190, 190, 283, 100, 264, 190, 259, 190,
258, 190, 277, 190, 168, 169, 188, 351, 86, 190,
11, 315, 100, 219, 350, 349, 100, 221, 156, 24,
320, 134, 100, 226, 319, 257, 330, 218, 170, 167,
230, 158, 157, 100, 132, 130, 129, 128, 16, 127,
126, 125, 100, 120, 100, 119, 100, 100, 100, 100,
100, 100, 100, 4, 100, 154, 251, 100, 100, 21,
270, 144, 49, 131, 316, 346, 360, 363, 1, 72,
20, 100, 199, 39, 233, 224, 100, 234, 100, 100,
100, 5, 58, 100, 100, 67, 96, 222, 61, 60,
248, 81, 8, 159, 114, 216, 116, 117, 118, 160,
2, 0, 100, 100, 100, 100, 163, 0, 163, 163,
163, 163, 275, 182, 163, 238, 100, 0, 0, 236,
0, 292, 0, 140, 293, 100, 100, 3, 0, 0,
0, 0, 0, 166, 6, 0, 140, 6, 47, 0,
0, 269, 162, 165, 0, 96, 0, 0, 0, 211,
0, 0, 100, 156, 184, 100, 100, 100, 0, 100,
0, 100, 308, 0, 0, 0, 100, 0, 100, 100,
116, 239, 100, 0, 100, 100, 100, 96, 193, 194,
195, 196, 197, 198, 18, 163, 333, 27, 156, 26,
112, 44, 202, 204, 0, 206, 340, 332, 341, 0,
0, 210, 100, 68, 0, 230, 345, 100, 0, 100,
0, 0, 96, 100, 100, 0, 96, 229, 0, 0,
0, 355, 96, 156, 0, 358, 0, 230, 359, 0,
0, 0, 354, 242, 238, 361, 0, 238, 238, 238,
312, 238, 96, 238, 96, 0, 96, 96, 96, 96,
96, 96, 96, 112, 96, 0, 18, 96, 96, 27,
287, 26, 347, 44, 0, 0, 0, 16, 0, 357,
0, 96, 0, 0, 0, 68, 260, 337, 96, 96,
96, 299, 300, 96, 96, 0, 0, 0, 0, 238,
239, 0, 0, 239, 239, 239, 0, 239, 0, 239,
0, 289, 96, 278, 279, 280, 165, 0, 165, 165,
165, 165, 296, 0, 165, 0, 96, 291, 0, 0,
0, 0, 0, 302, 0, 96, 96, 18, 0, 0,
27, 0, 26, 0, 44, 310, 0, 0, 0, 16,
0, 0, 339, 0, 0, 239, 68, 0, 0, 0,
0, 0, 242, 0, 0, 242, 242, 242, 19, 242,
0, 242, 0, 0, 0, 0, 96, 0, 96, 96,
0, 0, 96, 335, 96, 96, 96, 0, 281, 0,
284, 285, 286, 288, 115, 165, 290, 18, 0, 0,
27, 0, 26, 0, 44, 0, 0, 0, 0, 0,
75, 0, 96, 0, 0, 0, 68, 242, 0, 96,
16, 0, 306, 96, 96, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 164, 42, 28, 55, 56, 57, 73, 69, 59,
70, 0, 45, 46, 71, 33, 0, 34, 63, 64,
0, 0, 0, 0, 0, 0, 101, 336, 0, 27,
0, 26, 0, 77, 78, 37, 0, 0, 0, 0,
16, 0, 75, 41, 22, 43, 29, 35, 38, 52,
32, 65, 36, 40, 76, 0, 25, 0, 0, 30,
31, 23, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 42, 28, 55, 56, 57, 73,
69, 59, 70, 0, 45, 46, 71, 33, 0, 34,
63, 64, 0, 0, 0, 0, 18, 0, 0, 27,
0, 26, 0, 44, 0, 77, 78, 37, 0, 0,
0, 0, 0, 75, 0, 41, 22, 43, 29, 35,
38, 0, 32, 65, 36, 40, 76, 0, 25, 0,
0, 30, 31, 23, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 42, 28, 55, 56, 57,
73, 69, 59, 70, 0, 45, 46, 71, 33, 0,
34, 63, 64, 0, 164, 0, 164, 164, 164, 164,
0, 0, 164, 75, 0, 0, 77, 78, 37, 0,
271, 0, 0, 0, 0, 0, 41, 22, 43, 29,
35, 38, 0, 32, 65, 36, 40, 76, 0, 25,
0, 0, 30, 31, 23, 42, 28, 55, 56, 57,
73, 69, 59, 70, 0, 45, 46, 71, 33, 0,
34, 63, 64, 18, 0, 0, 27, 0, 26, 0,
44, 0, 0, 0, 0, 0, 77, 78, 37, 0,
0, 0, 68, 164, 0, 0, 41, 22, 43, 29,
35, 38, 0, 32, 65, 36, 40, 76, 0, 25,
0, 0, 30, 31, 23, 0, 0, 0, 0, 0,
0, 0, 0, 0, 42, 28, 0, 0, 0, 0,
0, 0, 0, 18, 45, 46, 27, 33, 26, 34,
44, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 68, 0, 0, 0, 16, 37, 247, 0,
0, 0, 75, 0, 0, 41, 22, 43, 29, 35,
38, 0, 32, 0, 36, 40, 0, 0, 99, 0,
0, 30, 31, 23, 0, 0, 0, 0, 0, 0,
0, 0, 0, 18, 42, 28, 27, 0, 26, 73,
44, 0, 0, 0, 45, 46, 0, 33, 0, 34,
0, 0, 68, 0, 0, 0, 16, 0, 246, 0,
0, 0, 0, 0, 0, 77, 78, 37, 0, 0,
0, 0, 0, 0, 0, 41, 22, 43, 29, 35,
38, 0, 32, 0, 36, 40, 0, 0, 25, 0,
0, 30, 31, 23, 0, 0, 0, 0, 0, 0,
18, 0, 0, 27, 0, 26, 0, 44, 0, 0,
0, 0, 0, 0, 0, 0, 16, 0, 225, 68,
0, 0, 0, 0, 0, 0, 0, 0, 0, 75,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 42, 28, 55, 56, 57, 73, 69, 59, 70,
0, 45, 46, 71, 33, 0, 34, 63, 64, 0,
0, 0, 0, 16, 0, 215, 0, 0, 0, 75,
0, 0, 77, 78, 37, 0, 0, 0, 0, 0,
0, 256, 41, 22, 43, 29, 35, 38, 0, 32,
65, 36, 40, 76, 0, 25, 0, 0, 30, 31,
23, 42, 28, 55, 56, 57, 73, 69, 59, 70,
0, 45, 46, 71, 33, 0, 34, 63, 64, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 75,
0, 0, 77, 78, 37, 0, 0, 0, 0, 0,
0, 0, 41, 22, 43, 29, 35, 38, 0, 32,
65, 36, 40, 76, 0, 25, 0, 0, 30, 31,
23, 42, 28, 55, 56, 57, 73, 69, 59, 70,
0, 45, 46, 71, 33, 0, 34, 63, 64, 18,
0, 0, 27, 0, 26, 0, 44, 189, 191, 0,
0, 0, 77, 78, 37, 0, 75, 0, 68, 0,
0, 0, 41, 22, 43, 29, 35, 38, 0, 32,
65, 36, 40, 76, 0, 25, 0, 0, 30, 31,
23, 0, 0, 0, 0, 0, 0, 0, 42, 28,
55, 56, 57, 73, 69, 59, 70, 0, 45, 46,
71, 33, 235, 34, 63, 64, 18, 0, 0, 27,
0, 26, 0, 44, 0, 0, 0, 0, 0, 77,
78, 37, 16, 0, 135, 68, 0, 0, 0, 41,
22, 43, 29, 35, 38, 0, 32, 65, 36, 40,
76, 0, 25, 0, 0, 30, 31, 23, 0, 261,
262, 263, 0, 265, 266, 267, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 189, 0,
101, 329, 0, 27, 190, 26, 0, 0, 0, 16,
294, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 84, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 322, 325, 327, 328, 0, 0,
0, 0, 0, 0, 189, 75, 101, 326, 0, 27,
190, 26, 0, 0, 95, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 84,
0, 0, 0, 0, 0, 0, 0, 42, 28, 55,
56, 57, 73, 69, 59, 70, 0, 45, 46, 71,
33, 0, 34, 63, 64, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 77, 78,
37, 0, 75, 0, 0, 0, 0, 0, 41, 22,
43, 29, 35, 38, 0, 32, 65, 36, 40, 76,
95, 25, 0, 0, 30, 31, 23, 0, 0, 0,
0, 0, 0, 0, 42, 28, 55, 56, 57, 73,
69, 59, 70, 0, 45, 46, 71, 33, 0, 34,
63, 64, 0, 0, 0, 0, 0, 0, 101, 324,
0, 27, 190, 26, 0, 77, 78, 37, 0, 0,
0, 0, 0, 0, 0, 41, 22, 43, 29, 35,
38, 84, 32, 65, 36, 40, 76, 93, 25, 0,
0, 30, 31, 23, 0, 0, 0, 0, 98, 97,
0, 87, 88, 89, 90, 91, 92, 94, 42, 28,
0, 0, 0, 0, 0, 0, 0, 0, 45, 46,
0, 33, 0, 34, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 37, 95, 0, 0, 0, 0, 0, 0, 41,
22, 43, 29, 35, 38, 0, 32, 0, 36, 40,
0, 0, 99, 93, 0, 30, 31, 23, 101, 0,
0, 27, 0, 26, 98, 97, 0, 87, 88, 89,
90, 91, 92, 94, 42, 28, 0, 139, 0, 0,
0, 84, 0, 0, 45, 46, 0, 33, 0, 34,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 37, 0, 0,
0, 0, 0, 0, 0, 41, 22, 43, 29, 35,
38, 0, 32, 0, 36, 40, 0, 0, 99, 0,
0, 30, 31, 23, 101, 192, 0, 27, 190, 26,
0, 0, 95, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 84, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 93, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 98, 97, 0, 87,
88, 89, 90, 91, 92, 94, 42, 28, 0, 0,
0, 0, 0, 0, 0, 0, 45, 46, 0, 33,
0, 34, 0, 0, 0, 0, 0, 0, 95, 0,
0, 0, 0, 0, 0, 101, 353, 0, 27, 37,
26, 0, 0, 0, 0, 0, 0, 41, 22, 43,
29, 35, 38, 0, 32, 0, 36, 40, 84, 0,
99, 0, 0, 30, 31, 23, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 140, 0, 0, 0, 93, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 98, 97, 0, 87,
88, 89, 90, 91, 92, 94, 42, 28, 0, 95,
101, 352, 0, 27, 0, 26, 45, 46, 0, 33,
0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 84, 0, 0, 0, 0, 0, 37,
0, 0, 0, 0, 0, 0, 0, 41, 22, 43,
29, 35, 38, 0, 32, 0, 36, 40, 0, 0,
99, 93, 0, 30, 31, 23, 0, 0, 0, 0,
0, 0, 98, 97, 0, 87, 88, 89, 90, 91,
92, 94, 42, 28, 0, 0, 0, 0, 0, 0,
0, 0, 45, 46, 95, 33, 0, 34, 101, 348,
0, 27, 0, 26, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 37, 0, 0, 0, 0,
0, 84, 0, 41, 22, 43, 29, 35, 38, 0,
32, 0, 36, 40, 0, 0, 99, 0, 0, 30,
31, 23, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 93, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 98, 97, 0, 87, 88, 89, 90,
91, 92, 94, 42, 28, 0, 0, 0, 0, 0,
0, 0, 95, 45, 46, 0, 33, 0, 34, 0,
101, 0, 0, 27, 0, 26, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 37, 0, 0, 344,
0, 0, 0, 84, 41, 22, 43, 29, 35, 38,
0, 32, 0, 36, 40, 0, 0, 99, 0, 0,
30, 31, 23, 0, 0, 0, 0, 93, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 98, 97,
0, 87, 88, 89, 90, 91, 92, 94, 42, 28,
0, 0, 0, 0, 0, 0, 0, 0, 45, 46,
0, 33, 0, 34, 95, 0, 0, 0, 0, 0,
0, 0, 101, 321, 0, 27, 0, 26, 0, 0,
0, 37, 0, 0, 0, 0, 0, 0, 0, 41,
22, 43, 29, 35, 38, 84, 32, 0, 36, 40,
0, 0, 99, 0, 0, 30, 31, 23, 0, 0,
0, 0, 0, 0, 0, 93, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 98, 97, 0, 87,
88, 89, 90, 91, 92, 94, 42, 28, 0, 0,
0, 0, 0, 0, 0, 0, 45, 46, 0, 33,
0, 34, 0, 0, 0, 0, 95, 0, 0, 0,
101, 318, 0, 27, 0, 26, 0, 0, 0, 37,
0, 0, 0, 0, 0, 0, 0, 41, 22, 43,
29, 35, 38, 84, 32, 0, 36, 40, 0, 0,
99, 0, 0, 30, 31, 23, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 93, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 98, 97,
0, 87, 88, 89, 90, 91, 92, 94, 42, 28,
0, 0, 0, 0, 0, 0, 0, 0, 45, 46,
0, 33, 0, 34, 95, 101, 277, 0, 27, 0,
26, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 37, 0, 0, 0, 0, 0, 0, 84, 41,
22, 43, 29, 35, 38, 0, 32, 0, 36, 40,
0, 0, 99, 0, 0, 30, 31, 23, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 93,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
98, 97, 0, 87, 88, 89, 90, 91, 92, 94,
42, 28, 0, 0, 0, 0, 0, 0, 0, 95,
45, 46, 0, 33, 0, 34, 101, 0, 0, 27,
190, 26, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 37, 0, 0, 0, 0, 0, 84,
0, 41, 22, 43, 29, 35, 38, 0, 32, 0,
36, 40, 0, 0, 99, 0, 0, 30, 31, 23,
0, 0, 0, 0, 0, 0, 0, 93, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 98, 97,
0, 87, 88, 89, 90, 91, 92, 94, 42, 28,
0, 0, 101, 192, 0, 27, 0, 26, 45, 46,
95, 33, 0, 34, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 84, 0, 0, 0, 0,
0, 37, 0, 0, 0, 0, 0, 0, 0, 41,
22, 43, 29, 35, 38, 0, 32, 0, 36, 40,
0, 0, 99, 0, 0, 30, 31, 23, 0, 0,
0, 0, 93, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 98, 97, 0, 87, 88, 89, 90,
91, 92, 94, 42, 28, 0, 95, 0, 0, 0,
0, 0, 101, 45, 46, 27, 33, 26, 34, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
250, 0, 0, 0, 0, 84, 37, 0, 0, 0,
0, 0, 0, 0, 41, 22, 43, 29, 35, 38,
0, 32, 0, 36, 40, 0, 0, 99, 0, 0,
30, 31, 23, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 93, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 98, 97, 0, 87, 88, 89,
90, 91, 92, 94, 42, 28, 95, 0, 101, 0,
0, 27, 0, 26, 45, 46, 0, 33, 0, 34,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 84, 0, 0, 0, 0, 0, 37, 0, 0,
0, 0, 0, 0, 0, 41, 22, 43, 29, 35,
38, 0, 32, 0, 36, 40, 0, 0, 99, 93,
0, 30, 31, 23, 0, 0, 0, 0, 0, 0,
98, 97, 0, 87, 88, 89, 90, 91, 92, 94,
42, 28, 0, 0, 0, 0, 0, 0, 0, 0,
45, 46, 95, 33, 101, 34, 0, 27, 0, 26,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 37, 0, 0, 0, 0, 0, 0,
0, 41, 22, 43, 29, 35, 38, 0, 32, 0,
36, 40, 0, 0, 99, 0, 0, 30, 31, 23,
0, 0, 0, 0, 0, 0, 0, 0, 0, 93,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
98, 97, 0, 87, 88, 89, 90, 91, 92, 94,
42, 28, 0, 0, 0, 0, 0, 0, 95, 101,
45, 46, 27, 33, 26, 34, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 37, 0, 0, 0, 0, 0, 0,
0, 41, 22, 43, 29, 35, 38, 0, 32, 0,
36, 40, 0, 0, 99, 54, 0, 30, 31, 23,
0, 0, 0, 0, 0, 93, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 98, 97, 0, 87,
88, 89, 90, 91, 92, 94, 42, 28, 0, 0,
0, 0, 0, 95, 0, 0, 45, 46, 0, 33,
0, 34, 0, 0, 0, 0, 0, 0, 0, 136,
0, 0, 0, 0, 0, 0, 0, 147, 0, 37,
0, 0, 0, 0, 0, 0, 0, 41, 22, 43,
29, 35, 38, 0, 32, 0, 36, 40, 0, 0,
99, 0, 0, 30, 31, 23, 0, 0, 0, 0,
0, 93, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 98, 0, 0, 87, 88, 89, 90, 91,
92, 94, 42, 28, 0, 0, 0, 0, 0, 0,
0, 0, 45, 46, 0, 33, 0, 34, 0, 136,
18, 0, 0, 27, 0, 26, 0, 44, 0, 0,
220, 0, 0, 0, 136, 37, 0, 0, 0, 0,
227, 0, 0, 41, 22, 43, 29, 35, 38, 0,
32, 0, 36, 40, 136, 136, 99, 0, 0, 30,
31, 23, 0, 0, 0, 0, 93, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
87, 88, 89, 90, 91, 92, 94, 42, 28, 0,
0, 0, 0, 0, 0, 0, 0, 45, 46, 74,
33, 0, 34, 16, 15, 0, 0, 0, 272, 0,
0, 0, 0, 0, 0, 0, 0, 0, 106, 0,
37, 0, 0, 0, 0, 0, 0, 0, 41, 22,
43, 29, 35, 38, 0, 32, 0, 36, 40, 0,
0, 99, 0, 0, 30, 31, 23, 0, 0, 15,
0, 15, 0, 0, 0, 136, 141, 101, 0, 145,
27, 0, 26, 0, 0, 151, 0, 0, 0, 0,
0, 0, 0, 0, 0, 314, 0, 0, 0, 0,
237, 0, 0, 0, 171, 173, 175, 176, 177, 178,
179, 180, 181, 183, 0, 0, 0, 0, 0, 0,
0, 186, 187, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 200, 0, 0, 0, 0, 0, 200,
200, 0, 0, 0, 0, 207, 208, 209, 200, 212,
213, 101, 356, 136, 27, 0, 26, 0, 0, 0,
0, 12, 13, 0, 0, 0, 362, 0, 0, 364,
101, 0, 0, 27, 237, 26, 0, 0, 231, 0,
0, 106, 0, 0, 0, 0, 0, 245, 42, 28,
0, 0, 0, 0, 0, 0, 0, 14, 45, 46,
0, 33, 0, 34, 0, 0, 0, 0, 0, 254,
0, 255, 0, 0, 0, 0, 0, 0, 0, 0,
0, 37, 0, 0, 0, 0, 0, 0, 0, 41,
22, 43, 29, 35, 38, 0, 32, 0, 36, 40,
0, 0, 25, 0, 0, 30, 31, 23, 18, 0,
0, 27, 0, 26, 0, 44, 0, 0, 0, 0,
0, 0, 0, 0, 200, 0, 0, 139, 0, 0,
295, 0, 0, 0, 0, 0, 297, 0, 0, 0,
0, 298, 301, 0, 0, 303, 304, 305, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
18, 0, 106, 27, 240, 26, 0, 44, 0, 0,
0, 0, 0, 0, 0, 98, 97, 0, 0, 0,
0, 0, 0, 0, 241, 42, 28, 0, 331, 0,
0, 0, 0, 0, 0, 45, 46, 0, 33, 0,
34, 0, 338, 0, 0, 0, 0, 0, 342, 0,
343, 0, 0, 0, 0, 0, 0, 0, 37, 0,
0, 0, 0, 0, 0, 0, 41, 22, 43, 29,
35, 38, 0, 32, 0, 36, 40, 0, 240, 99,
0, 0, 30, 31, 23, 0, 0, 0, 101, 98,
97, 27, 0, 26, 0, 0, 0, 240, 241, 42,
28, 0, 0, 0, 0, 0, 0, 0, 98, 45,
46, 0, 33, 0, 34, 0, 0, 241, 42, 28,
0, 0, 0, 0, 0, 0, 0, 0, 45, 46,
0, 33, 37, 34, 0, 0, 0, 0, 0, 0,
41, 22, 43, 29, 35, 38, 0, 32, 0, 36,
40, 37, 0, 99, 0, 0, 30, 31, 23, 41,
22, 43, 29, 35, 38, 0, 32, 0, 36, 40,
0, 140, 99, 0, 0, 30, 31, 23, 282, 0,
0, 27, 0, 26, 0, 44, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 42, 28, 0, 0,
0, 0, 0, 0, 0, 0, 45, 46, 0, 33,
0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 253, 0, 0, 0, 0, 0, 37,
0, 0, 0, 0, 0, 0, 0, 41, 22, 43,
29, 35, 38, 0, 32, 0, 36, 40, 42, 28,
25, 0, 0, 30, 31, 23, 0, 0, 45, 46,
0, 33, 0, 34, 282, 0, 0, 27, 0, 26,
0, 44, 0, 0, 0, 0, 0, 0, 0, 0,
0, 37, 0, 0, 0, 0, 0, 0, 0, 41,
22, 43, 29, 35, 38, 0, 32, 0, 36, 40,
0, 0, 25, 0, 0, 30, 31, 23, 0, 0,
0, 0, 0, 0, 0, 240, 282, 0, 0, 27,
0, 26, 0, 44, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 241, 42, 28, 0, 0,
0, 0, 0, 0, 0, 0, 45, 46, 0, 33,
0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 37,
0, 0, 0, 0, 0, 0, 0, 41, 22, 43,
29, 35, 38, 0, 32, 0, 36, 40, 0, 0,
99, 0, 0, 30, 31, 23, 0, 18, 203, 0,
27, 174, 26, 0, 44, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 18, 201, 0, 27,
0, 26, 0, 44, 0, 0, 42, 28, 0, 0,
0, 0, 0, 0, 0, 0, 45, 46, 0, 33,
0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 37,
0, 0, 0, 0, 0, 0, 0, 41, 22, 43,
29, 35, 38, 0, 32, 0, 36, 40, 0, 0,
25, 0, 0, 30, 31, 23, 0, 172, 18, 0,
0, 27, 0, 26, 0, 44, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 42, 28, 0, 0, 0, 0, 0, 0,
0, 0, 45, 46, 0, 33, 0, 34, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 253,
0, 0, 0, 18, 0, 37, 27, 0, 26, 0,
44, 0, 0, 41, 22, 43, 29, 35, 38, 0,
32, 0, 36, 40, 42, 28, 25, 0, 0, 30,
31, 23, 0, 0, 45, 46, 0, 33, 0, 34,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 18, 0, 37, 27, 0,
26, 0, 44, 0, 0, 41, 22, 43, 29, 35,
38, 0, 32, 0, 36, 40, 0, 0, 25, 0,
0, 30, 31, 23, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 42, 28, 282, 0, 0,
27, 0, 26, 0, 44, 45, 46, 0, 33, 0,
34, 0, 0, 0, 42, 28, 161, 0, 0, 27,
0, 26, 0, 44, 45, 46, 0, 33, 37, 34,
0, 0, 0, 0, 0, 0, 41, 22, 43, 29,
35, 38, 0, 32, 0, 36, 40, 37, 0, 25,
0, 0, 30, 31, 23, 41, 22, 43, 29, 35,
38, 174, 32, 0, 36, 40, 0, 0, 25, 0,
0, 30, 31, 23, 0, 0, 101, 0, 0, 27,
0, 26, 0, 44, 0, 0, 42, 28, 0, 0,
0, 0, 0, 0, 0, 101, 45, 46, 27, 33,
26, 34, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 172, 0, 0, 37,
0, 0, 0, 0, 0, 0, 0, 41, 22, 43,
29, 35, 38, 0, 32, 0, 36, 40, 0, 0,
25, 42, 28, 30, 31, 23, 0, 0, 0, 0,
0, 45, 46, 0, 33, 0, 34, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 37, 0, 0, 0, 0, 0,
0, 0, 41, 22, 43, 29, 35, 38, 0, 32,
0, 36, 40, 42, 28, 25, 0, 0, 30, 31,
23, 0, 0, 45, 46, 0, 33, 0, 34, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 37, 0, 0, 0,
0, 0, 0, 0, 41, 22, 43, 29, 35, 38,
0, 32, 0, 36, 40, 42, 28, 25, 0, 0,
30, 31, 23, 0, 0, 45, 46, 0, 33, 0,
34, 0, 0, 0, 42, 28, 0, 0, 0, 0,
0, 0, 0, 0, 45, 46, 0, 33, 37, 34,
0, 0, 0, 0, 0, 0, 41, 22, 43, 29,
35, 38, 0, 32, 0, 36, 40, 37, 0, 25,
0, 0, 30, 31, 23, 41, 22, 43, 29, 35,
38, 0, 32, 0, 36, 40, 0, 0, 25, 0,
0, 30, 31, 23, 42, 28, 0, 0, 0, 0,
0, 0, 0, 0, 45, 46, 0, 33, 0, 34,
0, 0, 0, 42, 28, 0, 0, 0, 0, 0,
0, 0, 0, 45, 46, 0, 33, 37, 34, 0,
0, 0, 0, 0, 0, 41, 22, 43, 29, 35,
38, 0, 32, 0, 36, 40, 37, 0, 25, 0,
0, 30, 31, 23, 41, 22, 43, 29, 35, 38,
0, 0, 0, 36, 40, 0, 0, 99, 0, 0,
30, 31, 23 };
__YYSCLASS yytabelem yypact[]={
1, -3000, -3000, -3000, 2970, 5, -3000, -3000, 4, -3000,
45, 346, -32, -32, -294, 2618, -3000, -303, 3925, -3000,
-24, 6, -3000, 546, -3000, 4056, 546, 546, 135, 133,
-273, -273, -278, 131, 130, -3000, 129, 127, -3000, 126,
125, -3000, -3000, -3000, -3000, -3000, -3000, -3000, -3000, 2970,
346, 3925, -3000, 1129, -3000, -10, 3925, -10, -178, 3278,
-3000, 1196, 346, -10, -10, 3278, -10, -3000, -184, -3000,
122, 121, 3996, -251, 2618, -3000, 119, -3000, -3000, 346,
346, 118, -3000, -3000, 3925, 3873, 3818, 3925, 3925, 3925,
3925, 3925, 3925, 3925, -251, -314, -24, -3000, -3000, 546,
-334, 3925, 3925, -3000, -3000, 95, 1654, 546, 546, 546,
546, 546, 546, 3925, -3000, -3000, -330, -330, -330, 3746,
3727, -3000, -3000, -238, 546, 3925, 3925, 3925, 3925, 3925,
3925, -310, -3000, 930, -32, -3000, -3000, -3000, -179, -184,
-3000, 1578, -3000, -3000, 1196, 1578, -3000, -281, 863, -3000,
-3000, 1578, -3000, -3000, 1196, -3000, -179, 616, 3925, -76,
78, 3925, 3181, -306, -3000, -24, 2, 3925, 803, 743,
-295, 2532, -3000, 2704, -3000, 2789, 4075, 4075, 4075, 4075,
4075, 4075, -3000, 4075, -3000, -273, 2442, 2618, -242, 3330,
-3000, 3330, -3000, 39, 39, -330, -330, -330, -330, 62,
2618, -3000, 89, -3000, 87, 546, -24, 2366, 2366, 2366,
85, 78, 2366, 2366, 68, -3000, 346, -3000, -3000, -3000,
-3000, -3000, 477, -3000, -180, -3000, -3000, -3000, 35, -45,
-3000, 2275, 546, 546, 546, 3646, 83, 3977, 3594, 3508,
3977, -251, -24, 3977, 3925, 2275, -3000, -3000, 79, -3000,
3925, -3000, -251, -3000, 2618, 2618, 3330, -3000, -3000, -3000,
-24, 3330, 3330, -233, -3000, 3330, 3330, 3330, -3000, 417,
-320, -3000, -3000, -3000, 3, -251, -213, -3000, -24, -24,
-24, 3181, 3925, -243, 3107, 3200, 3418, -3000, 4075, -3000,
3181, 48, -213, -213, -227, 2618, -3000, 2618, 2190, 113,
109, 2102, 77, 1468, 1346, 1270, -3000, 116, 3925, -184,
91, -3000, 75, -251, 3977, -3000, -32, -3000, -3000, -3000,
-3000, -3000, 3330, -3000, -3000, -259, -3000, -259, 3330, -3000,
3925, 2010, 616, -213, -243, -3000, 3181, 346, 1918, 104,
103, 96, 1830, 1745, -184, 91, 1196, 274, -3000, -3000,
-3000, -3000, -3000, -10, 616, -213, -3000, -3000, -3000, 91,
1196, -213, -3000, 1196, -3000 };
__YYSCLASS yytabelem yypgo[]={
0, 230, 3089, 272, 87, 229, 202, 223, 200, 488,
99, 114, 222, 149, 2, 3, 2875, 54, 0, 189,
221, 220, 219, 218, 217, 215, 212, 1, 211, 183,
90, 205, 5, 1071, 8, 17, 138, 82, 203, 199,
198, 197, 196, 195, 194, 193, 191, 190, 185 };
__YYSCLASS yytabelem yyr1[]={
0, 40, 40, 36, 36, 37, 37, 33, 33, 26,
26, 24, 24, 41, 22, 42, 22, 43, 22, 20,
20, 23, 30, 30, 34, 34, 35, 35, 29, 29,
15, 15, 1, 1, 10, 11, 11, 11, 11, 11,
11, 11, 44, 11, 12, 12, 6, 6, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 4, 4,
5, 5, 7, 7, 7, 39, 39, 28, 28, 28,
28, 31, 31, 9, 9, 45, 13, 32, 32, 14,
14, 14, 14, 14, 14, 14, 14, 27, 27, 16,
16, 16, 46, 47, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 48, 16, 16, 17,
17, 38, 38, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 18, 18, 18, 18, 21, 21, 21,
19, 19, 19, 25 };
__YYSCLASS yytabelem yyr2[]={
0, 3, 3, 2, 4, 2, 4, 2, 4, 2,
4, 2, 4, 1, 25, 1, 21, 1, 17, 3,
3, 9, 2, 4, 2, 4, 1, 2, 1, 2,
1, 2, 3, 7, 3, 3, 9, 7, 13, 7,
9, 9, 1, 19, 2, 7, 2, 7, 7, 11,
7, 7, 7, 7, 7, 11, 5, 2, 2, 7,
11, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 11, 9, 7, 5, 2, 2, 7, 7,
2, 7, 1, 2, 7, 2, 2, 2, 2, 4,
4, 2, 4, 3, 5, 1, 9, 2, 4, 9,
9, 9, 5, 11, 5, 3, 3, 2, 4, 5,
7, 5, 1, 1, 19, 7, 5, 2, 9, 5,
7, 5, 5, 7, 5, 4, 1, 7, 5, 2,
5, 2, 2, 7, 7, 7, 7, 7, 7, 5,
5, 5, 7, 9, 3, 7, 9, 5, 5, 5,
5, 9, 7, 5, 3, 13, 13, 7, 13, 13,
3, 17, 17, 13, 9, 3, 13, 13, 17, 17,
17, 13, 2, 2, 9, 3, 5, 1, 3, 7,
3, 3, 3, 9 };
__YYSCLASS yytabelem yychk[]={
-3000, -40, -1, 256, -29, -28, 263, 59, -12, -11,
-10, -30, 261, 262, 297, -2, 123, -18, 40, -9,
-8, -19, 330, 347, -13, 342, 45, 43, 289, 332,
345, 346, 336, 301, 303, 333, 338, 321, 334, -38,
339, 329, 288, 331, 47, 298, 299, 263, 59, -29,
-30, 44, 263, -17, -16, 290, 291, 292, -26, 295,
-22, -23, -30, 304, 305, 337, -14, -25, 59, 294,
296, 300, -39, 293, -2, 256, 340, 319, 320, -30,
-30, -20, 329, 332, 63, -37, -36, 281, 282, 283,
284, 285, 286, 267, 287, 124, -8, 279, 278, 342,
-18, 40, 312, 345, 346, -4, -2, 43, 45, 42,
47, 37, 344, 91, -8, -9, -8, -8, -8, 40,
40, -18, -18, -18, 285, 40, 40, 40, 40, 40,
40, -45, -11, -17, -10, 125, -16, -27, -34, 59,
263, -2, -27, 263, -46, -2, -27, -16, -17, -27,
-27, -2, -27, -27, -48, -35, -34, 40, 40, -7,
-5, 40, -3, -18, -9, -8, -19, 40, -17, -17,
40, -2, 263, -2, 263, -2, -2, -2, -2, -2,
-2, -2, -13, -2, -19, 336, -2, -2, 41, -33,
44, -33, 41, -8, -8, -8, -8, -8, -8, -6,
-2, 41, -6, 41, -6, 285, -8, -2, -2, -2,
-6, -13, -2, -2, 335, 125, -30, 263, -35, -27,
-16, -27, -24, 322, -31, 125, -27, -16, -15, -19,
-14, -2, 124, 280, 283, -33, -4, 63, -37, -36,
267, 287, -8, 312, 91, -2, 125, 125, -21, 329,
58, -18, 287, 263, -2, -2, -33, 93, 41, 41,
-8, -33, -33, -33, 41, -33, -33, -33, 47, -17,
-47, 263, -16, 263, 59, 287, -32, 41, -8, -8,
-8, -3, 40, 41, -3, -3, -3, -13, -3, -19,
-3, -6, -32, -32, -33, -2, -19, -2, -2, -13,
-13, -2, -19, -2, -2, -2, 125, 340, -35, 59,
-19, 263, -4, 287, 58, 93, -44, 329, 41, 41,
41, 41, -33, 41, 41, -33, 41, -33, -33, 41,
40, -2, -35, -32, 41, -19, -3, -30, -2, -13,
-18, -18, -2, -2, 59, -15, -43, -17, 41, 41,
41, 41, 41, 41, -35, -32, -16, 125, -27, -15,
-42, -32, -16, -41, -16 };
__YYSCLASS yytabelem yydef[]={
-2, -2, 1, 2, 32, 29, 87, 88, 28, 44,
35, 0, 0, 0, 0, 34, 22, 172, 0, 76,
77, 173, 175, 0, 93, 0, 0, 0, 144, 0,
0, 0, 154, 0, 0, 160, 0, 0, 165, 0,
0, 180, 181, 182, 95, 131, 132, 89, 90, 33,
0, 0, 23, 0, 129, 0, 0, 0, 112, 0,
117, 0, 0, 0, 0, 0, 0, 126, 26, 9,
0, 0, 82, 0, 105, 106, 0, 85, 86, 0,
0, 0, 19, 20, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 75, 5, 3, 0,
172, 0, 0, 149, 150, 0, 0, 0, 0, 0,
0, 0, 0, 0, 176, 94, 141, 139, 140, 0,
0, 147, 148, 153, 0, 0, 0, 0, 0, 0,
0, 0, 45, 0, 37, 39, 130, 109, 107, 26,
24, 0, 111, 10, 0, 0, 116, 119, 0, 121,
122, 0, 124, 125, 0, 128, 27, -2, 0, 102,
83, 0, 80, 172, 57, 58, 104, 0, 0, 0,
177, 0, 6, 61, 4, 62, -2, -2, -2, -2,
-2, -2, 69, -2, 71, 74, 0, 59, 0, 0,
7, 0, 157, 133, 134, 135, 136, 137, 138, 0,
46, 142, 0, 145, 0, 0, 152, 0, 0, 0,
0, 93, 0, 0, 0, 36, 0, 25, 108, 110,
113, 115, 0, 11, 120, 91, 123, 127, 0, 173,
31, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 56, 0, 0, 0, 40, 41, 0, 178,
0, 73, 0, 8, 79, 78, 0, 174, 143, 146,
151, 0, 0, 0, 164, 0, 0, 0, 96, 0,
0, 12, 118, 92, 26, 0, 21, 97, 99, 100,
101, 81, 0, 84, 0, 50, 51, 52, -2, 54,
48, 0, 183, 42, 0, 60, 72, 47, 0, 93,
93, 0, 0, 0, 0, 0, 38, 0, 0, 26,
0, 98, 0, 0, 0, 103, 0, 179, 155, 156,
158, 159, 0, 163, 166, 0, 167, 0, 0, 171,
0, 0, -2, 17, 0, 55, 49, 0, 0, 93,
0, 0, 0, 0, 26, 0, 0, 0, 161, 162,
168, 169, 170, 0, -2, 15, 18, 43, 114, 0,
0, 13, 16, 0, 14 };
typedef struct { char *t_name; int t_val; } yytoktype;
#ifndef YYDEBUG
# define YYDEBUG 0 /* don't allow debugging */
#endif
#if YYDEBUG
__YYSCLASS yytoktype yytoks[] =
{
"FIRSTTOKEN", 257,
"PROGRAM", 258,
"PASTAT", 259,
"PASTAT2", 260,
"XBEGIN", 261,
"XEND", 262,
"NL", 263,
",", 44,
"{", 123,
"(", 40,
"|", 124,
";", 59,
"/", 47,
")", 41,
"}", 125,
"[", 91,
"]", 93,
"ARRAY", 264,
"MATCH", 265,
"NOTMATCH", 266,
"MATCHOP", 267,
"FINAL", 268,
"DOT", 269,
"ALL", 270,
"CCL", 271,
"NCCL", 272,
"CHAR", 273,
"OR", 274,
"STAR", 275,
"QUEST", 276,
"PLUS", 277,
"AND", 278,
"BOR", 279,
"APPEND", 280,
"EQ", 281,
"GE", 282,
"GT", 283,
"LE", 284,
"LT", 285,
"NE", 286,
"IN", 287,
"ARG", 288,
"BLTIN", 289,
"BREAK", 290,
"CLOSE", 291,
"CONTINUE", 292,
"DELETE", 293,
"DO", 294,
"EXIT", 295,
"FOR", 296,
"FUNC", 297,
"SUB", 298,
"GSUB", 299,
"IF", 300,
"INDEX", 301,
"LSUBSTR", 302,
"MATCHFCN", 303,
"NEXT", 304,
"NEXTFILE", 305,
"ADD", 306,
"MINUS", 307,
"MULT", 308,
"DIVIDE", 309,
"MOD", 310,
"ASSIGN", 311,
"ASGNOP", 312,
"ADDEQ", 313,
"SUBEQ", 314,
"MULTEQ", 315,
"DIVEQ", 316,
"MODEQ", 317,
"POWEQ", 318,
"PRINT", 319,
"PRINTF", 320,
"SPRINTF", 321,
"ELSE", 322,
"INTEST", 323,
"CONDEXPR", 324,
"POSTINCR", 325,
"PREINCR", 326,
"POSTDECR", 327,
"PREDECR", 328,
"VAR", 329,
"IVAR", 330,
"VARNF", 331,
"CALL", 332,
"NUMBER", 333,
"STRING", 334,
"REGEXPR", 335,
"?", 63,
":", 58,
"GETLINE", 336,
"RETURN", 337,
"SPLIT", 338,
"SUBSTR", 339,
"WHILE", 340,
"CAT", 341,
"+", 43,
"-", 45,
"*", 42,
"%", 37,
"NOT", 342,
"UMINUS", 343,
"POWER", 344,
"DECR", 345,
"INCR", 346,
"INDIRECT", 347,
"LASTTOKEN", 348,
"-unknown-", -1 /* ends search */
};
__YYSCLASS char * yyreds[] =
{
"-no such reduction-",
"program : pas",
"program : error",
"and : AND",
"and : and NL",
"bor : BOR",
"bor : bor NL",
"comma : ','",
"comma : comma NL",
"do : DO",
"do : do NL",
"else : ELSE",
"else : else NL",
"for : FOR '(' opt_simple_stmt ';' opt_nl pattern ';' opt_nl opt_simple_stmt rparen",
"for : FOR '(' opt_simple_stmt ';' opt_nl pattern ';' opt_nl opt_simple_stmt rparen stmt",
"for : FOR '(' opt_simple_stmt ';' ';' opt_nl opt_simple_stmt rparen",
"for : FOR '(' opt_simple_stmt ';' ';' opt_nl opt_simple_stmt rparen stmt",
"for : FOR '(' varname IN varname rparen",
"for : FOR '(' varname IN varname rparen stmt",
"funcname : VAR",
"funcname : CALL",
"if : IF '(' pattern rparen",
"lbrace : '{'",
"lbrace : lbrace NL",
"nl : NL",
"nl : nl NL",
"opt_nl : /* empty */",
"opt_nl : nl",
"opt_pst : /* empty */",
"opt_pst : pst",
"opt_simple_stmt : /* empty */",
"opt_simple_stmt : simple_stmt",
"pas : opt_pst",
"pas : opt_pst pa_stats opt_pst",
"pa_pat : pattern",
"pa_stat : pa_pat",
"pa_stat : pa_pat lbrace stmtlist '}'",
"pa_stat : pa_pat ',' pa_pat",
"pa_stat : pa_pat ',' pa_pat lbrace stmtlist '}'",
"pa_stat : lbrace stmtlist '}'",
"pa_stat : XBEGIN lbrace stmtlist '}'",
"pa_stat : XEND lbrace stmtlist '}'",
"pa_stat : FUNC funcname '(' varlist rparen",
"pa_stat : FUNC funcname '(' varlist rparen lbrace stmtlist '}'",
"pa_stats : pa_stat",
"pa_stats : pa_stats opt_pst pa_stat",
"patlist : pattern",
"patlist : patlist comma pattern",
"ppattern : var ASGNOP ppattern",
"ppattern : ppattern '?' ppattern ':' ppattern",
"ppattern : ppattern bor ppattern",
"ppattern : ppattern and ppattern",
"ppattern : ppattern MATCHOP reg_expr",
"ppattern : ppattern MATCHOP ppattern",
"ppattern : ppattern IN varname",
"ppattern : '(' plist ')' IN varname",
"ppattern : ppattern term",
"ppattern : re",
"ppattern : term",
"pattern : var ASGNOP pattern",
"pattern : pattern '?' pattern ':' pattern",
"pattern : pattern bor pattern",
"pattern : pattern and pattern",
"pattern : pattern EQ pattern",
"pattern : pattern GE pattern",
"pattern : pattern GT pattern",
"pattern : pattern LE pattern",
"pattern : pattern LT pattern",
"pattern : pattern NE pattern",
"pattern : pattern MATCHOP reg_expr",
"pattern : pattern MATCHOP pattern",
"pattern : pattern IN varname",
"pattern : '(' plist ')' IN varname",
"pattern : pattern '|' GETLINE var",
"pattern : pattern '|' GETLINE",
"pattern : pattern term",
"pattern : re",
"pattern : term",
"plist : pattern comma pattern",
"plist : plist comma pattern",
"pplist : ppattern",
"pplist : pplist comma ppattern",
"prarg : /* empty */",
"prarg : pplist",
"prarg : '(' plist ')'",
"print : PRINT",
"print : PRINTF",
"pst : NL",
"pst : ';'",
"pst : pst NL",
"pst : pst ';'",
"rbrace : '}'",
"rbrace : rbrace NL",
"re : reg_expr",
"re : NOT re",
"reg_expr : '/'",
"reg_expr : '/' REGEXPR '/'",
"rparen : ')'",
"rparen : rparen NL",
"simple_stmt : print prarg '|' term",
"simple_stmt : print prarg APPEND term",
"simple_stmt : print prarg GT term",
"simple_stmt : print prarg",
"simple_stmt : DELETE varname '[' patlist ']'",
"simple_stmt : DELETE varname",
"simple_stmt : pattern",
"simple_stmt : error",
"st : nl",
"st : ';' opt_nl",
"stmt : BREAK st",
"stmt : CLOSE pattern st",
"stmt : CONTINUE st",
"stmt : do",
"stmt : do stmt",
"stmt : do stmt WHILE '(' pattern ')' st",
"stmt : EXIT pattern st",
"stmt : EXIT st",
"stmt : for",
"stmt : if stmt else stmt",
"stmt : if stmt",
"stmt : lbrace stmtlist rbrace",
"stmt : NEXT st",
"stmt : NEXTFILE st",
"stmt : RETURN pattern st",
"stmt : RETURN st",
"stmt : simple_stmt st",
"stmt : while",
"stmt : while stmt",
"stmt : ';' opt_nl",
"stmtlist : stmt",
"stmtlist : stmtlist stmt",
"subop : SUB",
"subop : GSUB",
"term : term '+' term",
"term : term '-' term",
"term : term '*' term",
"term : term '/' term",
"term : term '%' term",
"term : term POWER term",
"term : '-' term",
"term : '+' term",
"term : NOT term",
"term : BLTIN '(' ')'",
"term : BLTIN '(' patlist ')'",
"term : BLTIN",
"term : CALL '(' ')'",
"term : CALL '(' patlist ')'",
"term : DECR var",
"term : INCR var",
"term : var DECR",
"term : var INCR",
"term : GETLINE var LT term",
"term : GETLINE LT term",
"term : GETLINE var",
"term : GETLINE",
"term : INDEX '(' pattern comma pattern ')'",
"term : INDEX '(' pattern comma reg_expr ')'",
"term : '(' pattern ')'",
"term : MATCHFCN '(' pattern comma reg_expr ')'",
"term : MATCHFCN '(' pattern comma pattern ')'",
"term : NUMBER",
"term : SPLIT '(' pattern comma varname comma pattern ')'",
"term : SPLIT '(' pattern comma varname comma reg_expr ')'",
"term : SPLIT '(' pattern comma varname ')'",
"term : SPRINTF '(' patlist ')'",
"term : STRING",
"term : subop '(' reg_expr comma pattern ')'",
"term : subop '(' pattern comma pattern ')'",
"term : subop '(' reg_expr comma pattern comma var ')'",
"term : subop '(' pattern comma pattern comma var ')'",
"term : SUBSTR '(' pattern comma pattern comma pattern ')'",
"term : SUBSTR '(' pattern comma pattern ')'",
"term : var",
"var : varname",
"var : varname '[' patlist ']'",
"var : IVAR",
"var : INDIRECT term",
"varlist : /* empty */",
"varlist : VAR",
"varlist : varlist comma VAR",
"varname : VAR",
"varname : ARG",
"varname : VARNF",
"while : WHILE '(' pattern rparen",
};
#endif /* YYDEBUG */
#define YYFLAG (-3000)
/* @(#) $Revision: 1.2 $ */
/*
** Skeleton parser driver for yacc output
*/
#if defined(NLS) && !defined(NL_SETN)
#include <msgbuf.h>
#endif
#ifndef nl_msg
#define nl_msg(i,s) (s)
#endif
/*
** yacc user known macros and defines
*/
#define YYERROR goto yyerrlab
#ifndef __RUNTIME_YYMAXDEPTH
#define YYACCEPT return(0)
#define YYABORT return(1)
#else
#define YYACCEPT {free_stacks(); return(0);}
#define YYABORT {free_stacks(); return(1);}
#endif
#define YYBACKUP( newtoken, newvalue )\
{\
if ( yychar >= 0 || ( yyr2[ yytmp ] >> 1 ) != 1 )\
{\
yyerror( (nl_msg(30001,"syntax error - cannot backup")) );\
goto yyerrlab;\
}\
yychar = newtoken;\
yystate = *yyps;\
yylval = newvalue;\
goto yynewstate;\
}
#define YYRECOVERING() (!!yyerrflag)
#ifndef YYDEBUG
# define YYDEBUG 1 /* make debugging available */
#endif
/*
** user known globals
*/
int yydebug; /* set to 1 to get debugging */
/*
** driver internal defines
*/
/* define for YYFLAG now generated by yacc program. */
/*#define YYFLAG (FLAGVAL)*/
/*
** global variables used by the parser
*/
# ifndef __RUNTIME_YYMAXDEPTH
__YYSCLASS YYSTYPE yyv[ YYMAXDEPTH ]; /* value stack */
__YYSCLASS int yys[ YYMAXDEPTH ]; /* state stack */
# else
__YYSCLASS YYSTYPE *yyv; /* pointer to malloc'ed value stack */
__YYSCLASS int *yys; /* pointer to malloc'ed stack stack */
#if defined(__STDC__) || defined (__cplusplus)
#include <stdlib.h>
#else
extern char *malloc();
extern char *realloc();
extern void free();
#endif /* __STDC__ or __cplusplus */
static int allocate_stacks();
static void free_stacks();
# ifndef YYINCREMENT
# define YYINCREMENT (YYMAXDEPTH/2) + 10
# endif
# endif /* __RUNTIME_YYMAXDEPTH */
long yymaxdepth = YYMAXDEPTH;
__YYSCLASS YYSTYPE *yypv; /* top of value stack */
__YYSCLASS int *yyps; /* top of state stack */
__YYSCLASS int yystate; /* current state */
__YYSCLASS int yytmp; /* extra var (lasts between blocks) */
int yynerrs; /* number of errors */
__YYSCLASS int yyerrflag; /* error recovery flag */
int yychar; /* current input token number */
/*
** yyparse - return 0 if worked, 1 if syntax error not recovered from
*/
int
#ifndef __STDC__
yyparse()
#else
yyparse(void)
#endif
{
register YYSTYPE *yypvt; /* top of value stack for $vars */
/*
** Initialize externals - yyparse may be called more than once
*/
# ifdef __RUNTIME_YYMAXDEPTH
if (allocate_stacks()) YYABORT;
# endif
yypv = &yyv[-1];
yyps = &yys[-1];
yystate = 0;
yytmp = 0;
yynerrs = 0;
yyerrflag = 0;
yychar = -1;
goto yystack;
{
register YYSTYPE *yy_pv; /* top of value stack */
register int *yy_ps; /* top of state stack */
register int yy_state; /* current state */
register int yy_n; /* internal state number info */
/*
** get globals into registers.
** branch to here only if YYBACKUP was called.
*/
yynewstate:
yy_pv = yypv;
yy_ps = yyps;
yy_state = yystate;
goto yy_newstate;
/*
** get globals into registers.
** either we just started, or we just finished a reduction
*/
yystack:
yy_pv = yypv;
yy_ps = yyps;
yy_state = yystate;
/*
** top of for (;;) loop while no reductions done
*/
yy_stack:
/*
** put a state and value onto the stacks
*/
#if YYDEBUG
/*
** if debugging, look up token value in list of value vs.
** name pairs. 0 and negative (-1) are special values.
** Note: linear search is used since time is not a real
** consideration while debugging.
*/
if ( yydebug )
{
register int yy_i;
printf( "State %d, token ", yy_state );
if ( yychar == 0 )
printf( "end-of-file\n" );
else if ( yychar < 0 )
printf( "-none-\n" );
else
{
for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
yy_i++ )
{
if ( yytoks[yy_i].t_val == yychar )
break;
}
printf( "%s\n", yytoks[yy_i].t_name );
}
}
#endif /* YYDEBUG */
if ( ++yy_ps >= &yys[ yymaxdepth ] ) /* room on stack? */
{
# ifndef __RUNTIME_YYMAXDEPTH
yyerror( (nl_msg(30002,"yacc stack overflow")) );
YYABORT;
# else
/* save old stack bases to recalculate pointers */
YYSTYPE * yyv_old = yyv;
int * yys_old = yys;
yymaxdepth += YYINCREMENT;
yys = (int *) realloc(yys, yymaxdepth * sizeof(int));
yyv = (YYSTYPE *) realloc(yyv, yymaxdepth * sizeof(YYSTYPE));
if (yys==0 || yyv==0) {
yyerror( (nl_msg(30002,"yacc stack overflow")) );
YYABORT;
}
/* Reset pointers into stack */
yy_ps = (yy_ps - yys_old) + yys;
yyps = (yyps - yys_old) + yys;
yy_pv = (yy_pv - yyv_old) + yyv;
yypv = (yypv - yyv_old) + yyv;
# endif
}
*yy_ps = yy_state;
*++yy_pv = yyval;
/*
** we have a new state - find out what to do
*/
yy_newstate:
if ( ( yy_n = yypact[ yy_state ] ) <= YYFLAG )
goto yydefault; /* simple state */
#if YYDEBUG
/*
** if debugging, need to mark whether new token grabbed
*/
yytmp = yychar < 0;
#endif
if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
yychar = 0; /* reached EOF */
#if YYDEBUG
if ( yydebug && yytmp )
{
register int yy_i;
printf( "Received token " );
if ( yychar == 0 )
printf( "end-of-file\n" );
else if ( yychar < 0 )
printf( "-none-\n" );
else
{
for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
yy_i++ )
{
if ( yytoks[yy_i].t_val == yychar )
break;
}
printf( "%s\n", yytoks[yy_i].t_name );
}
}
#endif /* YYDEBUG */
if ( ( ( yy_n += yychar ) < 0 ) || ( yy_n >= YYLAST ) )
goto yydefault;
if ( yychk[ yy_n = yyact[ yy_n ] ] == yychar ) /*valid shift*/
{
yychar = -1;
yyval = yylval;
yy_state = yy_n;
if ( yyerrflag > 0 )
yyerrflag--;
goto yy_stack;
}
yydefault:
if ( ( yy_n = yydef[ yy_state ] ) == -2 )
{
#if YYDEBUG
yytmp = yychar < 0;
#endif
if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
yychar = 0; /* reached EOF */
#if YYDEBUG
if ( yydebug && yytmp )
{
register int yy_i;
printf( "Received token " );
if ( yychar == 0 )
printf( "end-of-file\n" );
else if ( yychar < 0 )
printf( "-none-\n" );
else
{
for ( yy_i = 0;
yytoks[yy_i].t_val >= 0;
yy_i++ )
{
if ( yytoks[yy_i].t_val
== yychar )
{
break;
}
}
printf( "%s\n", yytoks[yy_i].t_name );
}
}
#endif /* YYDEBUG */
/*
** look through exception table
*/
{
register int *yyxi = yyexca;
while ( ( *yyxi != -1 ) ||
( yyxi[1] != yy_state ) )
{
yyxi += 2;
}
while ( ( *(yyxi += 2) >= 0 ) &&
( *yyxi != yychar ) )
;
if ( ( yy_n = yyxi[1] ) < 0 )
YYACCEPT;
}
}
/*
** check for syntax error
*/
if ( yy_n == 0 ) /* have an error */
{
/* no worry about speed here! */
switch ( yyerrflag )
{
case 0: /* new error */
yyerror( (nl_msg(30003,"syntax error")) );
yynerrs++;
goto skip_init;
yyerrlab:
/*
** get globals into registers.
** we have a user generated syntax type error
*/
yy_pv = yypv;
yy_ps = yyps;
yy_state = yystate;
yynerrs++;
skip_init:
case 1:
case 2: /* incompletely recovered error */
/* try again... */
yyerrflag = 3;
/*
** find state where "error" is a legal
** shift action
*/
while ( yy_ps >= yys )
{
yy_n = yypact[ *yy_ps ] + YYERRCODE;
if ( yy_n >= 0 && yy_n < YYLAST &&
yychk[yyact[yy_n]] == YYERRCODE) {
/*
** simulate shift of "error"
*/
yy_state = yyact[ yy_n ];
goto yy_stack;
}
/*
** current state has no shift on
** "error", pop stack
*/
#if YYDEBUG
# define _POP_ "Error recovery pops state %d, uncovers state %d\n"
if ( yydebug )
printf( _POP_, *yy_ps,
yy_ps[-1] );
# undef _POP_
#endif
yy_ps--;
yy_pv--;
}
/*
** there is no state on stack with "error" as
** a valid shift. give up.
*/
YYABORT;
case 3: /* no shift yet; eat a token */
#if YYDEBUG
/*
** if debugging, look up token in list of
** pairs. 0 and negative shouldn't occur,
** but since timing doesn't matter when
** debugging, it doesn't hurt to leave the
** tests here.
*/
if ( yydebug )
{
register int yy_i;
printf( "Error recovery discards " );
if ( yychar == 0 )
printf( "token end-of-file\n" );
else if ( yychar < 0 )
printf( "token -none-\n" );
else
{
for ( yy_i = 0;
yytoks[yy_i].t_val >= 0;
yy_i++ )
{
if ( yytoks[yy_i].t_val
== yychar )
{
break;
}
}
printf( "token %s\n",
yytoks[yy_i].t_name );
}
}
#endif /* YYDEBUG */
if ( yychar == 0 ) /* reached EOF. quit */
YYABORT;
yychar = -1;
goto yy_newstate;
}
}/* end if ( yy_n == 0 ) */
/*
** reduction by production yy_n
** put stack tops, etc. so things right after switch
*/
#if YYDEBUG
/*
** if debugging, print the string that is the user's
** specification of the reduction which is just about
** to be done.
*/
if ( yydebug )
printf( "Reduce by (%d) \"%s\"\n",
yy_n, yyreds[ yy_n ] );
#endif
yytmp = yy_n; /* value to switch over */
yypvt = yy_pv; /* $vars top of value stack */
/*
** Look in goto table for next state
** Sorry about using yy_state here as temporary
** register variable, but why not, if it works...
** If yyr2[ yy_n ] doesn't have the low order bit
** set, then there is no action to be done for
** this reduction. So, no saving & unsaving of
** registers done. The only difference between the
** code just after the if and the body of the if is
** the goto yy_stack in the body. This way the test
** can be made before the choice of what to do is needed.
*/
{
/* length of production doubled with extra bit */
register int yy_len = yyr2[ yy_n ];
if ( !( yy_len & 01 ) )
{
yy_len >>= 1;
yyval = ( yy_pv -= yy_len )[1]; /* $$ = $1 */
yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
*( yy_ps -= yy_len ) + 1;
if ( yy_state >= YYLAST ||
yychk[ yy_state =
yyact[ yy_state ] ] != -yy_n )
{
yy_state = yyact[ yypgo[ yy_n ] ];
}
goto yy_stack;
}
yy_len >>= 1;
yyval = ( yy_pv -= yy_len )[1]; /* $$ = $1 */
yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
*( yy_ps -= yy_len ) + 1;
if ( yy_state >= YYLAST ||
yychk[ yy_state = yyact[ yy_state ] ] != -yy_n )
{
yy_state = yyact[ yypgo[ yy_n ] ];
}
}
/* save until reenter driver code */
yystate = yy_state;
yyps = yy_ps;
yypv = yy_pv;
}
/*
** code supplied by user is placed in this switch
*/
switch( yytmp )
{
case 1:
/* # line 98 "awkgram.y" */
{ if (errorflag==0)
winner = (Node *)stat3(PROGRAM, beginloc, yypvt[-0].p, endloc); } break;
case 2:
/* # line 100 "awkgram.y" */
{ yyclearin; bracecheck(); ERROR "bailing out" SYNTAX; } break;
case 13:
/* # line 124 "awkgram.y" */
{inloop++;} break;
case 14:
/* # line 125 "awkgram.y" */
{ --inloop; yyval.p = stat4(FOR, yypvt[-9].p, notnull(yypvt[-6].p), yypvt[-3].p, yypvt[-0].p); } break;
case 15:
/* # line 126 "awkgram.y" */
{inloop++;} break;
case 16:
/* # line 127 "awkgram.y" */
{ --inloop; yyval.p = stat4(FOR, yypvt[-7].p, NIL, yypvt[-3].p, yypvt[-0].p); } break;
case 17:
/* # line 128 "awkgram.y" */
{inloop++;} break;
case 18:
/* # line 129 "awkgram.y" */
{ --inloop; yyval.p = stat3(IN, yypvt[-5].p, makearr(yypvt[-3].p), yypvt[-0].p); } break;
case 19:
/* # line 133 "awkgram.y" */
{ setfname(yypvt[-0].cp); } break;
case 20:
/* # line 134 "awkgram.y" */
{ setfname(yypvt[-0].cp); } break;
case 21:
/* # line 138 "awkgram.y" */
{ yyval.p = notnull(yypvt[-1].p); } break;
case 26:
/* # line 150 "awkgram.y" */
{ yyval.i = 0; } break;
case 28:
/* # line 155 "awkgram.y" */
{ yyval.i = 0; } break;
case 30:
/* # line 161 "awkgram.y" */
{ yyval.p = 0; } break;
case 32:
/* # line 166 "awkgram.y" */
{ yyval.p = 0; } break;
case 33:
/* # line 167 "awkgram.y" */
{ yyval.p = yypvt[-1].p; } break;
case 34:
/* # line 171 "awkgram.y" */
{ yyval.p = notnull(yypvt[-0].p); } break;
case 35:
/* # line 175 "awkgram.y" */
{ yyval.p = stat2(PASTAT, yypvt[-0].p, stat2(PRINT, rectonode(), NIL)); } break;
case 36:
/* # line 176 "awkgram.y" */
{ yyval.p = stat2(PASTAT, yypvt[-3].p, yypvt[-1].p); } break;
case 37:
/* # line 177 "awkgram.y" */
{ yyval.p = pa2stat(yypvt[-2].p, yypvt[-0].p, stat2(PRINT, rectonode(), NIL)); } break;
case 38:
/* # line 178 "awkgram.y" */
{ yyval.p = pa2stat(yypvt[-5].p, yypvt[-3].p, yypvt[-1].p); } break;
case 39:
/* # line 179 "awkgram.y" */
{ yyval.p = stat2(PASTAT, NIL, yypvt[-1].p); } break;
case 40:
/* # line 181 "awkgram.y" */
{ beginloc = linkum(beginloc, yypvt[-1].p); yyval.p = 0; } break;
case 41:
/* # line 183 "awkgram.y" */
{ endloc = linkum(endloc, yypvt[-1].p); yyval.p = 0; } break;
case 42:
/* # line 184 "awkgram.y" */
{infunc++;} break;
case 43:
/* # line 185 "awkgram.y" */
{ infunc--; curfname=0; defn((Cell *)yypvt[-7].p, yypvt[-5].p, yypvt[-1].p); yyval.p = 0; } break;
case 45:
/* # line 190 "awkgram.y" */
{ yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break;
case 47:
/* # line 195 "awkgram.y" */
{ yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break;
case 48:
/* # line 199 "awkgram.y" */
{ yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break;
case 49:
/* # line 201 "awkgram.y" */
{ yyval.p = op3(CONDEXPR, notnull(yypvt[-4].p), yypvt[-2].p, yypvt[-0].p); } break;
case 50:
/* # line 203 "awkgram.y" */
{ yyval.p = op2(BOR, notnull(yypvt[-2].p), notnull(yypvt[-0].p)); } break;
case 51:
/* # line 205 "awkgram.y" */
{ yyval.p = op2(AND, notnull(yypvt[-2].p), notnull(yypvt[-0].p)); } break;
case 52:
/* # line 206 "awkgram.y" */
{ yyval.p = op3(yypvt[-1].i, NIL, yypvt[-2].p, (Node*)makedfa(yypvt[-0].s, 0)); } break;
case 53:
/* # line 208 "awkgram.y" */
{ if (constnode(yypvt[-0].p))
yyval.p = op3(yypvt[-1].i, NIL, yypvt[-2].p, (Node*)makedfa(strnode(yypvt[-0].p), 0));
else
yyval.p = op3(yypvt[-1].i, (Node *)1, yypvt[-2].p, yypvt[-0].p); } break;
case 54:
/* # line 212 "awkgram.y" */
{ yyval.p = op2(INTEST, yypvt[-2].p, makearr(yypvt[-0].p)); } break;
case 55:
/* # line 213 "awkgram.y" */
{ yyval.p = op2(INTEST, yypvt[-3].p, makearr(yypvt[-0].p)); } break;
case 56:
/* # line 214 "awkgram.y" */
{ yyval.p = op2(CAT, yypvt[-1].p, yypvt[-0].p); } break;
case 59:
/* # line 220 "awkgram.y" */
{ yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break;
case 60:
/* # line 222 "awkgram.y" */
{ yyval.p = op3(CONDEXPR, notnull(yypvt[-4].p), yypvt[-2].p, yypvt[-0].p); } break;
case 61:
/* # line 224 "awkgram.y" */
{ yyval.p = op2(BOR, notnull(yypvt[-2].p), notnull(yypvt[-0].p)); } break;
case 62:
/* # line 226 "awkgram.y" */
{ yyval.p = op2(AND, notnull(yypvt[-2].p), notnull(yypvt[-0].p)); } break;
case 63:
/* # line 227 "awkgram.y" */
{ yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break;
case 64:
/* # line 228 "awkgram.y" */
{ yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break;
case 65:
/* # line 229 "awkgram.y" */
{ yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break;
case 66:
/* # line 230 "awkgram.y" */
{ yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break;
case 67:
/* # line 231 "awkgram.y" */
{ yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break;
case 68:
/* # line 232 "awkgram.y" */
{ yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break;
case 69:
/* # line 233 "awkgram.y" */
{ yyval.p = op3(yypvt[-1].i, NIL, yypvt[-2].p, (Node*)makedfa(yypvt[-0].s, 0)); } break;
case 70:
/* # line 235 "awkgram.y" */
{ if (constnode(yypvt[-0].p))
yyval.p = op3(yypvt[-1].i, NIL, yypvt[-2].p, (Node*)makedfa(strnode(yypvt[-0].p), 0));
else
yyval.p = op3(yypvt[-1].i, (Node *)1, yypvt[-2].p, yypvt[-0].p); } break;
case 71:
/* # line 239 "awkgram.y" */
{ yyval.p = op2(INTEST, yypvt[-2].p, makearr(yypvt[-0].p)); } break;
case 72:
/* # line 240 "awkgram.y" */
{ yyval.p = op2(INTEST, yypvt[-3].p, makearr(yypvt[-0].p)); } break;
case 73:
/* # line 241 "awkgram.y" */
{
if (safe) ERROR "cmd | getline is unsafe" SYNTAX;
else yyval.p = op3(GETLINE, yypvt[-0].p, (Node*)yypvt[-2].i, yypvt[-3].p); } break;
case 74:
/* # line 244 "awkgram.y" */
{
if (safe) ERROR "cmd | getline is unsafe" SYNTAX;
else yyval.p = op3(GETLINE, (Node*)0, (Node*)yypvt[-1].i, yypvt[-2].p); } break;
case 75:
/* # line 247 "awkgram.y" */
{ yyval.p = op2(CAT, yypvt[-1].p, yypvt[-0].p); } break;
case 78:
/* # line 253 "awkgram.y" */
{ yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break;
case 79:
/* # line 254 "awkgram.y" */
{ yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break;
case 81:
/* # line 259 "awkgram.y" */
{ yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break;
case 82:
/* # line 263 "awkgram.y" */
{ yyval.p = rectonode(); } break;
case 84:
/* # line 265 "awkgram.y" */
{ yyval.p = yypvt[-1].p; } break;
case 93:
/* # line 282 "awkgram.y" */
{ yyval.p = op3(MATCH, NIL, rectonode(), (Node*)makedfa(yypvt[-0].s, 0)); } break;
case 94:
/* # line 283 "awkgram.y" */
{ yyval.p = op1(NOT, notnull(yypvt[-0].p)); } break;
case 95:
/* # line 287 "awkgram.y" */
{startreg();} break;
case 96:
/* # line 287 "awkgram.y" */
{ yyval.s = yypvt[-1].s; } break;
case 99:
/* # line 295 "awkgram.y" */
{
if (safe) ERROR "print | is unsafe" SYNTAX;
else yyval.p = stat3(yypvt[-3].i, yypvt[-2].p, (Node *) yypvt[-1].i, yypvt[-0].p); } break;
case 100:
/* # line 298 "awkgram.y" */
{
if (safe) ERROR "print >> is unsafe" SYNTAX;
else yyval.p = stat3(yypvt[-3].i, yypvt[-2].p, (Node *) yypvt[-1].i, yypvt[-0].p); } break;
case 101:
/* # line 301 "awkgram.y" */
{
if (safe) ERROR "print > is unsafe" SYNTAX;
else yyval.p = stat3(yypvt[-3].i, yypvt[-2].p, (Node *) yypvt[-1].i, yypvt[-0].p); } break;
case 102:
/* # line 304 "awkgram.y" */
{ yyval.p = stat3(yypvt[-1].i, yypvt[-0].p, NIL, NIL); } break;
case 103:
/* # line 305 "awkgram.y" */
{ yyval.p = stat2(DELETE, makearr(yypvt[-3].p), yypvt[-1].p); } break;
case 104:
/* # line 306 "awkgram.y" */
{ yyval.p = stat2(DELETE, makearr(yypvt[-0].p), 0); } break;
case 105:
/* # line 307 "awkgram.y" */
{ yyval.p = exptostat(yypvt[-0].p); } break;
case 106:
/* # line 308 "awkgram.y" */
{ yyclearin; ERROR "illegal statement" SYNTAX; } break;
case 109:
/* # line 317 "awkgram.y" */
{ if (!inloop) ERROR "break illegal outside of loops" SYNTAX;
yyval.p = stat1(BREAK, NIL); } break;
case 110:
/* # line 319 "awkgram.y" */
{ yyval.p = stat1(CLOSE, yypvt[-1].p); } break;
case 111:
/* # line 320 "awkgram.y" */
{ if (!inloop) ERROR "continue illegal outside of loops" SYNTAX;
yyval.p = stat1(CONTINUE, NIL); } break;
case 112:
/* # line 322 "awkgram.y" */
{inloop++;} break;
case 113:
/* # line 322 "awkgram.y" */
{--inloop;} break;
case 114:
/* # line 323 "awkgram.y" */
{ yyval.p = stat2(DO, yypvt[-6].p, notnull(yypvt[-2].p)); } break;
case 115:
/* # line 324 "awkgram.y" */
{ yyval.p = stat1(EXIT, yypvt[-1].p); } break;
case 116:
/* # line 325 "awkgram.y" */
{ yyval.p = stat1(EXIT, NIL); } break;
case 118:
/* # line 327 "awkgram.y" */
{ yyval.p = stat3(IF, yypvt[-3].p, yypvt[-2].p, yypvt[-0].p); } break;
case 119:
/* # line 328 "awkgram.y" */
{ yyval.p = stat3(IF, yypvt[-1].p, yypvt[-0].p, NIL); } break;
case 120:
/* # line 329 "awkgram.y" */
{ yyval.p = yypvt[-1].p; } break;
case 121:
/* # line 330 "awkgram.y" */
{ if (infunc)
ERROR "next is illegal inside a function" SYNTAX;
yyval.p = stat1(NEXT, NIL); } break;
case 122:
/* # line 333 "awkgram.y" */
{ if (infunc)
ERROR "nextfile is illegal inside a function" SYNTAX;
yyval.p = stat1(NEXTFILE, NIL); } break;
case 123:
/* # line 336 "awkgram.y" */
{ yyval.p = stat1(RETURN, yypvt[-1].p); } break;
case 124:
/* # line 337 "awkgram.y" */
{ yyval.p = stat1(RETURN, NIL); } break;
case 126:
/* # line 339 "awkgram.y" */
{inloop++;} break;
case 127:
/* # line 339 "awkgram.y" */
{ --inloop; yyval.p = stat2(WHILE, yypvt[-2].p, yypvt[-0].p); } break;
case 128:
/* # line 340 "awkgram.y" */
{ yyval.p = 0; } break;
case 130:
/* # line 345 "awkgram.y" */
{ yyval.p = linkum(yypvt[-1].p, yypvt[-0].p); } break;
case 133:
/* # line 353 "awkgram.y" */
{ yyval.p = op2(ADD, yypvt[-2].p, yypvt[-0].p); } break;
case 134:
/* # line 354 "awkgram.y" */
{ yyval.p = op2(MINUS, yypvt[-2].p, yypvt[-0].p); } break;
case 135:
/* # line 355 "awkgram.y" */
{ yyval.p = op2(MULT, yypvt[-2].p, yypvt[-0].p); } break;
case 136:
/* # line 356 "awkgram.y" */
{ yyval.p = op2(DIVIDE, yypvt[-2].p, yypvt[-0].p); } break;
case 137:
/* # line 357 "awkgram.y" */
{ yyval.p = op2(MOD, yypvt[-2].p, yypvt[-0].p); } break;
case 138:
/* # line 358 "awkgram.y" */
{ yyval.p = op2(POWER, yypvt[-2].p, yypvt[-0].p); } break;
case 139:
/* # line 359 "awkgram.y" */
{ yyval.p = op1(UMINUS, yypvt[-0].p); } break;
case 140:
/* # line 360 "awkgram.y" */
{ yyval.p = yypvt[-0].p; } break;
case 141:
/* # line 361 "awkgram.y" */
{ yyval.p = op1(NOT, notnull(yypvt[-0].p)); } break;
case 142:
/* # line 362 "awkgram.y" */
{ yyval.p = op2(BLTIN, (Node *) yypvt[-2].i, rectonode()); } break;
case 143:
/* # line 363 "awkgram.y" */
{ yyval.p = op2(BLTIN, (Node *) yypvt[-3].i, yypvt[-1].p); } break;
case 144:
/* # line 364 "awkgram.y" */
{ yyval.p = op2(BLTIN, (Node *) yypvt[-0].i, rectonode()); } break;
case 145:
/* # line 365 "awkgram.y" */
{ yyval.p = op2(CALL, celltonode(yypvt[-2].cp,CVAR), NIL); } break;
case 146:
/* # line 366 "awkgram.y" */
{ yyval.p = op2(CALL, celltonode(yypvt[-3].cp,CVAR), yypvt[-1].p); } break;
case 147:
/* # line 367 "awkgram.y" */
{ yyval.p = op1(PREDECR, yypvt[-0].p); } break;
case 148:
/* # line 368 "awkgram.y" */
{ yyval.p = op1(PREINCR, yypvt[-0].p); } break;
case 149:
/* # line 369 "awkgram.y" */
{ yyval.p = op1(POSTDECR, yypvt[-1].p); } break;
case 150:
/* # line 370 "awkgram.y" */
{ yyval.p = op1(POSTINCR, yypvt[-1].p); } break;
case 151:
/* # line 371 "awkgram.y" */
{ yyval.p = op3(GETLINE, yypvt[-2].p, (Node *)yypvt[-1].i, yypvt[-0].p); } break;
case 152:
/* # line 372 "awkgram.y" */
{ yyval.p = op3(GETLINE, NIL, (Node *)yypvt[-1].i, yypvt[-0].p); } break;
case 153:
/* # line 373 "awkgram.y" */
{ yyval.p = op3(GETLINE, yypvt[-0].p, NIL, NIL); } break;
case 154:
/* # line 374 "awkgram.y" */
{ yyval.p = op3(GETLINE, NIL, NIL, NIL); } break;
case 155:
/* # line 376 "awkgram.y" */
{ yyval.p = op2(INDEX, yypvt[-3].p, yypvt[-1].p); } break;
case 156:
/* # line 378 "awkgram.y" */
{ ERROR "index() doesn't permit regular expressions" SYNTAX;
yyval.p = op2(INDEX, yypvt[-3].p, (Node*)yypvt[-1].s); } break;
case 157:
/* # line 380 "awkgram.y" */
{ yyval.p = yypvt[-1].p; } break;
case 158:
/* # line 382 "awkgram.y" */
{ yyval.p = op3(MATCHFCN, NIL, yypvt[-3].p, (Node*)makedfa(yypvt[-1].s, 1)); } break;
case 159:
/* # line 384 "awkgram.y" */
{ if (constnode(yypvt[-1].p))
yyval.p = op3(MATCHFCN, NIL, yypvt[-3].p, (Node*)makedfa(strnode(yypvt[-1].p), 1));
else
yyval.p = op3(MATCHFCN, (Node *)1, yypvt[-3].p, yypvt[-1].p); } break;
case 160:
/* # line 388 "awkgram.y" */
{ yyval.p = celltonode(yypvt[-0].cp, CCON); } break;
case 161:
/* # line 390 "awkgram.y" */
{ yyval.p = op4(SPLIT, yypvt[-5].p, makearr(yypvt[-3].p), yypvt[-1].p, (Node*)STRING); } break;
case 162:
/* # line 392 "awkgram.y" */
{ yyval.p = op4(SPLIT, yypvt[-5].p, makearr(yypvt[-3].p), (Node*)makedfa(yypvt[-1].s, 1), (Node *)REGEXPR); } break;
case 163:
/* # line 394 "awkgram.y" */
{ yyval.p = op4(SPLIT, yypvt[-3].p, makearr(yypvt[-1].p), NIL, (Node*)STRING); } break;
case 164:
/* # line 395 "awkgram.y" */
{ yyval.p = op1(yypvt[-3].i, yypvt[-1].p); } break;
case 165:
/* # line 396 "awkgram.y" */
{ yyval.p = celltonode(yypvt[-0].cp, CCON); } break;
case 166:
/* # line 398 "awkgram.y" */
{ yyval.p = op4(yypvt[-5].i, NIL, (Node*)makedfa(yypvt[-3].s, 1), yypvt[-1].p, rectonode()); } break;
case 167:
/* # line 400 "awkgram.y" */
{ if (constnode(yypvt[-3].p))
yyval.p = op4(yypvt[-5].i, NIL, (Node*)makedfa(strnode(yypvt[-3].p), 1), yypvt[-1].p, rectonode());
else
yyval.p = op4(yypvt[-5].i, (Node *)1, yypvt[-3].p, yypvt[-1].p, rectonode()); } break;
case 168:
/* # line 405 "awkgram.y" */
{ yyval.p = op4(yypvt[-7].i, NIL, (Node*)makedfa(yypvt[-5].s, 1), yypvt[-3].p, yypvt[-1].p); } break;
case 169:
/* # line 407 "awkgram.y" */
{ if (constnode(yypvt[-5].p))
yyval.p = op4(yypvt[-7].i, NIL, (Node*)makedfa(strnode(yypvt[-5].p), 1), yypvt[-3].p, yypvt[-1].p);
else
yyval.p = op4(yypvt[-7].i, (Node *)1, yypvt[-5].p, yypvt[-3].p, yypvt[-1].p); } break;
case 170:
/* # line 412 "awkgram.y" */
{ yyval.p = op3(SUBSTR, yypvt[-5].p, yypvt[-3].p, yypvt[-1].p); } break;
case 171:
/* # line 414 "awkgram.y" */
{ yyval.p = op3(SUBSTR, yypvt[-3].p, yypvt[-1].p, NIL); } break;
case 174:
/* # line 420 "awkgram.y" */
{ yyval.p = op2(ARRAY, makearr(yypvt[-3].p), yypvt[-1].p); } break;
case 175:
/* # line 421 "awkgram.y" */
{ yyval.p = op1(INDIRECT, celltonode(yypvt[-0].cp, CVAR)); } break;
case 176:
/* # line 422 "awkgram.y" */
{ yyval.p = op1(INDIRECT, yypvt[-0].p); } break;
case 177:
/* # line 426 "awkgram.y" */
{ arglist = yyval.p = 0; } break;
case 178:
/* # line 427 "awkgram.y" */
{ arglist = yyval.p = celltonode(yypvt[-0].cp,CVAR); } break;
case 179:
/* # line 428 "awkgram.y" */
{
checkdup(yypvt[-2].p, yypvt[-0].cp);
arglist = yyval.p = linkum(yypvt[-2].p,celltonode(yypvt[-0].cp,CVAR)); } break;
case 180:
/* # line 434 "awkgram.y" */
{ yyval.p = celltonode(yypvt[-0].cp, CVAR); } break;
case 181:
/* # line 435 "awkgram.y" */
{ yyval.p = op1(ARG, (Node *) yypvt[-0].i); } break;
case 182:
/* # line 436 "awkgram.y" */
{ yyval.p = op1(VARNF, (Node *) yypvt[-0].cp); } break;
case 183:
/* # line 441 "awkgram.y" */
{ yyval.p = notnull(yypvt[-1].p); } break;
}
goto yystack; /* reset registers in driver code */
}
# ifdef __RUNTIME_YYMAXDEPTH
static int allocate_stacks() {
/* allocate the yys and yyv stacks */
yys = (int *) malloc(yymaxdepth * sizeof(int));
yyv = (YYSTYPE *) malloc(yymaxdepth * sizeof(YYSTYPE));
if (yys==0 || yyv==0) {
yyerror( (nl_msg(30004,"unable to allocate space for yacc stacks")) );
return(1);
}
else return(0);
}
static void free_stacks() {
if (yys!=0) free((char *) yys);
if (yyv!=0) free((char *) yyv);
}
# endif /* defined(__RUNTIME_YYMAXDEPTH) */