/* $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 #include #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 # include #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 #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 #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) */