# line 2 "awk.g.y" /* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ # line 33 "awk.g.y" #ident "%Z%%M% %I% %E% SMI" /* SVr4.0 2.10 */ # line 37 "awk.g.y" #include "awk.h" int yywrap(void) { return(1); } #ifndef DEBUG # define PUTS(x) #endif Node *beginloc = 0, *endloc = 0; int infunc = 0; /* = 1 if in arglist or body of func */ uchar *curfname = 0; Node *arglist = 0; /* list of args for current function */ static void setfname(Cell *); static int constnode(Node *); static uchar *strnode(Node *); static Node *notnull(); # line 52 "awk.g.y" typedef union #ifdef __cplusplus YYSTYPE #endif { Node *p; Cell *cp; int i; uchar *s; } YYSTYPE; # 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 ADD 305 # define MINUS 306 # define MULT 307 # define DIVIDE 308 # define MOD 309 # define ASSIGN 310 # define ASGNOP 311 # define ADDEQ 312 # define SUBEQ 313 # define MULTEQ 314 # define DIVEQ 315 # define MODEQ 316 # define POWEQ 317 # define PRINT 318 # define PRINTF 319 # define SPRINTF 320 # define ELSE 321 # define INTEST 322 # define CONDEXPR 323 # define POSTINCR 324 # define PREINCR 325 # define POSTDECR 326 # define PREDECR 327 # define VAR 328 # define IVAR 329 # define VARNF 330 # define CALL 331 # define NUMBER 332 # define STRING 333 # define FIELD 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 #include #ifdef __STDC__ #include #include #define YYCONST const #else #include #include #define YYCONST #endif #include #if defined(__cplusplus) || defined(__STDC__) #if defined(__cplusplus) && defined(__EXTERN_C__) extern "C" { #endif #ifndef yyerror #if defined(__cplusplus) void yyerror(YYCONST char *); #endif #endif #ifndef yylex int yylex(void); #endif int yyparse(void); #if defined(__cplusplus) && defined(__EXTERN_C__) } #endif #endif #define yyclearin yychar = -1 #define yyerrok yyerrflag = 0 extern int yychar; extern int yyerrflag; YYSTYPE yylval; YYSTYPE yyval; typedef int yytabelem; #ifndef YYMAXDEPTH #define YYMAXDEPTH 150 #endif #if YYMAXDEPTH > 0 int yy_yys[YYMAXDEPTH], *yys = yy_yys; YYSTYPE yy_yyv[YYMAXDEPTH], *yyv = yy_yyv; #else /* user does initial allocation */ int *yys; YYSTYPE *yyv; #endif static int yymaxdepth = YYMAXDEPTH; # define YYERRCODE 256 # line 435 "awk.g.y" static void setfname(Cell *p) { if (isarr(p)) ERROR "%s is an array, not a function", p->nval SYNTAX; else if (isfunc(p)) ERROR "you can't define function %s more than once", p->nval SYNTAX; curfname = p->nval; } static int constnode(Node *p) { return p->ntype == NVALUE && ((Cell *) (p->narg[0]))->csub == CCON; } static uchar * strnode(Node *p) { return ((Cell *)(p->narg[0]))->sval; } static 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); } } static YYCONST yytabelem yyexca[] ={ -1, 0, 0, 25, 261, 25, 262, 25, 123, 25, 40, 25, 47, 25, 288, 25, 289, 25, 297, 25, 298, 25, 299, 25, 301, 25, 303, 25, 320, 25, 328, 25, 329, 25, 330, 25, 331, 25, 332, 25, 333, 25, 334, 25, 336, 25, 338, 25, 339, 25, 43, 25, 45, 25, 342, 25, 345, 25, 346, 25, 347, 25, -2, 0, -1, 1, 0, -1, -2, 0, -1, 153, 59, 27, -2, 0, -1, 173, 124, 0, 267, 0, 281, 0, 282, 0, 283, 0, 284, 0, 285, 0, 286, 0, 287, 0, -2, 62, -1, 174, 124, 0, 267, 0, 281, 0, 282, 0, 283, 0, 284, 0, 285, 0, 286, 0, 287, 0, -2, 63, -1, 175, 124, 0, 267, 0, 281, 0, 282, 0, 283, 0, 284, 0, 285, 0, 286, 0, 287, 0, -2, 64, -1, 176, 124, 0, 267, 0, 281, 0, 282, 0, 283, 0, 284, 0, 285, 0, 286, 0, 287, 0, -2, 65, -1, 177, 124, 0, 267, 0, 281, 0, 282, 0, 283, 0, 284, 0, 285, 0, 286, 0, 287, 0, -2, 66, -1, 178, 124, 0, 267, 0, 281, 0, 282, 0, 283, 0, 284, 0, 285, 0, 286, 0, 287, 0, -2, 67, -1, 180, 124, 0, 267, 0, 281, 0, 282, 0, 283, 0, 284, 0, 285, 0, 286, 0, 287, 0, -2, 69, -1, 285, 267, 0, 287, 0, -2, 51, -1, 307, 41, 27, -2, 0, -1, 329, 41, 27, -2, 0, }; # define YYNPROD 177 # define YYLAST 4282 static YYCONST yytabelem yyact[]={ 17, 122, 251, 110, 43, 239, 111, 43, 108, 106, 217, 107, 182, 109, 101, 102, 98, 31, 32, 25, 100, 198, 54, 251, 247, 110, 98, 43, 98, 98, 108, 251, 119, 120, 121, 109, 65, 84, 43, 101, 102, 220, 112, 310, 42, 24, 44, 42, 24, 44, 23, 250, 203, 23, 101, 102, 43, 81, 228, 136, 82, 274, 53, 25, 309, 7, 25, 42, 24, 44, 134, 7, 159, 23, 98, 48, 133, 271, 42, 214, 44, 141, 137, 135, 144, 104, 25, 151, 315, 150, 16, 51, 242, 112, 272, 187, 42, 85, 44, 256, 10, 187, 187, 224, 98, 9, 98, 98, 98, 98, 98, 98, 98, 130, 321, 312, 275, 187, 187, 187, 275, 280, 348, 98, 187, 145, 263, 347, 139, 187, 143, 196, 346, 318, 146, 148, 149, 258, 317, 98, 187, 165, 166, 98, 313, 268, 167, 164, 98, 62, 255, 152, 131, 133, 11, 129, 154, 153, 128, 98, 50, 159, 78, 79, 257, 127, 126, 187, 133, 98, 16, 98, 125, 98, 98, 98, 98, 98, 98, 98, 124, 98, 123, 249, 98, 98, 118, 117, 133, 133, 226, 185, 4, 114, 187, 221, 234, 314, 98, 11, 219, 49, 58, 1, 98, 71, 98, 98, 98, 216, 40, 98, 98, 218, 229, 5, 66, 230, 223, 61, 152, 60, 246, 80, 215, 158, 8, 155, 98, 98, 98, 98, 159, 156, 159, 159, 159, 159, 273, 21, 159, 98, 270, 232, 98, 2, 0, 0, 0, 200, 202, 0, 0, 98, 98, 95, 235, 0, 208, 0, 0, 0, 3, 137, 0, 113, 0, 115, 116, 6, 0, 0, 0, 0, 0, 6, 267, 0, 234, 47, 98, 213, 98, 98, 98, 0, 98, 0, 98, 0, 133, 0, 0, 0, 98, 0, 98, 98, 0, 0, 98, 0, 98, 98, 98, 290, 98, 98, 291, 0, 111, 162, 159, 95, 0, 0, 0, 234, 0, 234, 234, 234, 0, 234, 337, 234, 338, 288, 0, 0, 0, 0, 111, 0, 98, 0, 98, 0, 235, 0, 98, 0, 0, 95, 226, 95, 190, 191, 192, 193, 194, 195, 0, 19, 343, 0, 28, 0, 27, 0, 26, 0, 204, 0, 0, 351, 226, 133, 0, 0, 331, 234, 67, 353, 289, 0, 0, 235, 95, 235, 235, 235, 95, 235, 0, 235, 240, 95, 0, 0, 0, 0, 342, 0, 0, 0, 0, 344, 238, 340, 162, 0, 0, 350, 0, 0, 0, 0, 95, 0, 95, 330, 95, 95, 95, 95, 95, 95, 95, 0, 95, 0, 19, 95, 95, 28, 0, 27, 0, 26, 0, 235, 0, 341, 0, 0, 16, 95, 0, 0, 0, 67, 0, 259, 0, 95, 95, 95, 0, 0, 95, 95, 0, 0, 0, 0, 0, 279, 0, 281, 282, 283, 285, 0, 334, 287, 0, 95, 276, 277, 278, 162, 0, 162, 162, 162, 162, 0, 0, 162, 238, 0, 19, 95, 0, 28, 0, 27, 0, 26, 0, 0, 95, 95, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 16, 0, 352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 238, 0, 238, 238, 238, 0, 238, 0, 238, 0, 0, 0, 0, 0, 95, 0, 95, 95, 333, 0, 95, 0, 95, 95, 95, 0, 95, 95, 0, 0, 0, 0, 162, 19, 0, 0, 28, 0, 27, 0, 26, 0, 0, 0, 0, 0, 16, 0, 0, 0, 74, 0, 67, 0, 238, 0, 95, 309, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 29, 55, 56, 57, 72, 68, 59, 69, 0, 45, 46, 70, 34, 22, 35, 63, 0, 0, 0, 0, 0, 0, 99, 0, 0, 28, 0, 27, 0, 76, 77, 38, 0, 16, 0, 304, 74, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 64, 37, 41, 75, 0, 18, 0, 0, 31, 32, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 29, 55, 56, 57, 72, 68, 59, 69, 0, 45, 46, 70, 34, 19, 35, 63, 28, 163, 27, 0, 26, 0, 0, 0, 0, 0, 0, 74, 0, 76, 77, 38, 67, 0, 52, 0, 0, 0, 181, 42, 24, 44, 30, 36, 39, 23, 0, 33, 64, 37, 41, 75, 0, 18, 0, 0, 31, 32, 25, 43, 29, 55, 56, 57, 72, 68, 59, 69, 0, 45, 46, 70, 34, 19, 35, 63, 28, 0, 27, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 76, 77, 38, 67, 0, 0, 0, 16, 74, 225, 42, 24, 44, 30, 36, 39, 23, 0, 33, 64, 37, 41, 75, 0, 18, 0, 0, 31, 32, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 29, 55, 56, 57, 72, 68, 59, 69, 0, 45, 46, 70, 34, 19, 35, 63, 28, 0, 27, 0, 26, 0, 0, 0, 0, 0, 16, 0, 245, 76, 77, 38, 67, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 64, 37, 41, 75, 286, 18, 0, 0, 31, 32, 25, 0, 0, 0, 0, 0, 0, 294, 0, 0, 0, 0, 0, 43, 29, 19, 0, 0, 28, 300, 27, 0, 26, 45, 46, 0, 34, 0, 35, 0, 308, 0, 0, 0, 67, 0, 0, 0, 16, 0, 244, 74, 0, 0, 0, 38, 0, 0, 269, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 0, 332, 0, 0, 31, 32, 25, 43, 29, 55, 56, 57, 72, 68, 59, 69, 0, 45, 46, 70, 34, 19, 35, 63, 28, 0, 27, 0, 26, 0, 0, 0, 16, 0, 222, 74, 0, 76, 77, 38, 136, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 64, 37, 41, 75, 0, 18, 0, 0, 31, 32, 25, 43, 29, 55, 56, 57, 72, 68, 59, 69, 0, 45, 46, 70, 34, 19, 35, 63, 28, 0, 27, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 76, 77, 38, 67, 0, 0, 0, 0, 74, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 64, 37, 41, 75, 0, 18, 0, 0, 31, 32, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 29, 55, 56, 57, 72, 68, 59, 69, 0, 45, 46, 70, 34, 19, 35, 63, 28, 0, 27, 0, 26, 0, 0, 0, 0, 0, 16, 74, 212, 76, 77, 38, 67, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 64, 37, 41, 75, 0, 18, 0, 0, 31, 32, 25, 43, 29, 55, 56, 57, 72, 68, 59, 69, 0, 45, 46, 70, 34, 19, 35, 63, 28, 0, 27, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 76, 77, 38, 67, 0, 0, 0, 16, 0, 132, 42, 24, 44, 30, 36, 39, 23, 137, 33, 64, 37, 41, 75, 0, 18, 0, 0, 31, 32, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 29, 19, 0, 0, 28, 0, 27, 0, 26, 45, 46, 0, 34, 0, 35, 0, 0, 0, 0, 0, 67, 0, 0, 0, 16, 0, 0, 74, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 0, 18, 0, 0, 31, 32, 25, 43, 29, 55, 56, 57, 72, 68, 59, 69, 0, 45, 46, 70, 34, 0, 35, 63, 0, 0, 0, 0, 0, 0, 0, 20, 16, 0, 0, 0, 0, 76, 77, 38, 0, 0, 0, 0, 0, 74, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 64, 37, 41, 75, 0, 18, 0, 0, 31, 32, 25, 0, 0, 0, 0, 99, 327, 0, 28, 187, 27, 43, 29, 55, 56, 57, 72, 68, 59, 69, 0, 45, 46, 70, 34, 0, 35, 63, 83, 0, 0, 0, 0, 0, 0, 0, 0, 161, 0, 74, 0, 76, 77, 38, 0, 0, 140, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 179, 33, 64, 37, 41, 75, 0, 18, 0, 0, 31, 32, 25, 43, 29, 55, 56, 57, 72, 68, 59, 69, 0, 45, 46, 70, 34, 19, 35, 63, 28, 94, 27, 0, 26, 209, 0, 0, 0, 0, 0, 74, 0, 76, 77, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 64, 37, 41, 75, 0, 18, 161, 0, 31, 32, 25, 43, 29, 55, 56, 57, 72, 68, 59, 69, 0, 45, 46, 70, 34, 0, 35, 63, 0, 0, 0, 0, 0, 0, 0, 99, 324, 0, 28, 187, 27, 76, 77, 38, 0, 0, 0, 0, 16, 0, 0, 42, 24, 44, 30, 36, 39, 23, 83, 33, 64, 37, 41, 75, 0, 18, 0, 0, 31, 32, 25, 0, 0, 0, 0, 0, 0, 161, 0, 161, 161, 161, 284, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 297, 298, 0, 0, 0, 0, 92, 0, 0, 0, 0, 99, 322, 94, 28, 187, 27, 97, 96, 0, 86, 87, 88, 89, 90, 91, 93, 43, 29, 0, 0, 0, 0, 0, 83, 0, 0, 45, 46, 0, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 38, 336, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 12, 13, 0, 0, 31, 32, 25, 0, 0, 0, 0, 0, 0, 0, 0, 94, 99, 0, 0, 28, 0, 27, 0, 0, 0, 0, 0, 43, 29, 0, 0, 0, 0, 0, 0, 136, 14, 45, 46, 83, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 92, 37, 41, 0, 0, 18, 0, 0, 31, 32, 25, 97, 96, 0, 86, 87, 88, 89, 90, 91, 93, 43, 29, 0, 94, 99, 189, 0, 28, 187, 27, 45, 46, 0, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 0, 0, 0, 0, 31, 32, 25, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 96, 0, 86, 87, 88, 89, 90, 91, 93, 43, 29, 0, 0, 99, 349, 94, 28, 0, 27, 45, 46, 0, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 0, 0, 0, 0, 31, 32, 25, 137, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 96, 0, 86, 87, 88, 89, 90, 91, 93, 43, 29, 0, 94, 99, 345, 0, 28, 0, 27, 45, 46, 0, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 0, 0, 0, 0, 31, 32, 25, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 96, 0, 86, 87, 88, 89, 90, 91, 93, 43, 29, 99, 94, 0, 28, 0, 27, 0, 0, 45, 46, 0, 34, 0, 35, 0, 0, 0, 0, 0, 329, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 0, 0, 0, 0, 31, 32, 25, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 96, 0, 86, 87, 88, 89, 90, 91, 93, 43, 29, 0, 0, 94, 0, 0, 0, 0, 0, 45, 46, 0, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 99, 328, 0, 28, 0, 27, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 83, 33, 0, 37, 41, 0, 0, 0, 0, 0, 31, 32, 25, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 96, 0, 86, 87, 88, 89, 90, 91, 93, 43, 29, 0, 0, 0, 0, 0, 0, 0, 0, 45, 46, 0, 34, 0, 35, 99, 319, 0, 28, 0, 27, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 83, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 0, 0, 0, 0, 31, 32, 25, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 96, 0, 86, 87, 88, 89, 90, 91, 93, 43, 29, 0, 99, 316, 0, 28, 0, 27, 0, 45, 46, 0, 34, 0, 35, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 0, 0, 0, 0, 31, 32, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 275, 0, 28, 0, 27, 0, 0, 0, 0, 92, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 97, 96, 83, 86, 87, 88, 89, 90, 91, 93, 43, 29, 0, 0, 0, 0, 0, 0, 0, 0, 45, 46, 0, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 94, 0, 0, 92, 31, 32, 25, 0, 0, 0, 0, 0, 0, 0, 97, 96, 0, 86, 87, 88, 89, 90, 91, 93, 43, 29, 99, 0, 0, 28, 187, 27, 0, 0, 45, 46, 0, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 92, 37, 41, 0, 0, 0, 0, 0, 31, 32, 25, 97, 96, 0, 86, 87, 88, 89, 90, 91, 93, 43, 29, 99, 189, 0, 28, 0, 27, 0, 0, 45, 46, 0, 34, 0, 35, 94, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 92, 37, 41, 0, 0, 0, 0, 0, 31, 32, 25, 97, 96, 0, 86, 87, 88, 89, 90, 91, 93, 43, 29, 99, 0, 0, 28, 0, 27, 0, 0, 45, 46, 0, 34, 0, 35, 94, 0, 0, 0, 248, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 0, 0, 0, 0, 31, 32, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 28, 0, 27, 0, 94, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 96, 83, 86, 87, 88, 89, 90, 91, 93, 43, 29, 0, 0, 0, 0, 0, 0, 0, 0, 45, 46, 0, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 92, 37, 41, 0, 94, 0, 0, 0, 31, 32, 25, 97, 96, 0, 86, 87, 88, 89, 90, 91, 93, 43, 29, 99, 0, 0, 28, 0, 27, 0, 0, 45, 46, 0, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 28, 0, 27, 0, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 92, 37, 41, 0, 0, 0, 0, 0, 31, 32, 25, 97, 96, 0, 86, 87, 88, 89, 90, 91, 93, 43, 29, 0, 0, 0, 0, 0, 0, 0, 0, 45, 46, 0, 34, 0, 35, 94, 19, 0, 0, 28, 0, 27, 0, 26, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 94, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 0, 0, 0, 92, 31, 32, 25, 0, 0, 0, 0, 0, 0, 0, 97, 96, 0, 86, 87, 88, 89, 90, 91, 93, 43, 29, 0, 0, 0, 0, 0, 0, 0, 0, 45, 46, 0, 34, 0, 35, 99, 0, 0, 28, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 311, 0, 0, 0, 0, 233, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 0, 0, 0, 0, 31, 32, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 99, 0, 0, 28, 0, 27, 0, 97, 0, 0, 86, 87, 88, 89, 90, 91, 93, 43, 29, 92, 0, 0, 0, 233, 0, 0, 0, 45, 46, 0, 34, 0, 35, 86, 87, 88, 89, 90, 91, 93, 43, 29, 0, 0, 0, 0, 0, 0, 0, 38, 45, 46, 0, 34, 0, 35, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 74, 0, 38, 0, 31, 32, 25, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 0, 0, 0, 0, 31, 32, 25, 0, 0, 43, 29, 0, 0, 0, 72, 0, 0, 0, 0, 45, 46, 0, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 77, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 0, 18, 236, 0, 31, 32, 25, 0, 0, 0, 0, 0, 0, 97, 96, 99, 0, 0, 28, 0, 27, 0, 237, 43, 29, 0, 0, 0, 0, 0, 0, 0, 0, 45, 46, 0, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 236, 37, 41, 0, 0, 0, 0, 0, 31, 32, 25, 97, 96, 0, 254, 0, 0, 0, 0, 0, 237, 43, 29, 0, 73, 0, 0, 0, 0, 15, 0, 45, 46, 0, 34, 0, 35, 0, 0, 0, 0, 0, 0, 103, 105, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 15, 0, 15, 0, 31, 32, 25, 138, 0, 19, 142, 0, 28, 0, 27, 147, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 170, 172, 173, 174, 175, 176, 177, 178, 180, 0, 186, 188, 0, 0, 0, 183, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 197, 0, 0, 0, 0, 197, 197, 0, 0, 0, 0, 205, 206, 207, 197, 210, 211, 19, 0, 0, 28, 0, 27, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 236, 231, 0, 307, 0, 0, 0, 0, 0, 227, 0, 97, 105, 0, 0, 0, 0, 0, 0, 243, 237, 43, 29, 0, 0, 0, 0, 0, 0, 0, 0, 45, 46, 0, 34, 0, 35, 0, 0, 241, 0, 252, 28, 253, 27, 0, 26, 0, 0, 0, 260, 261, 262, 38, 264, 265, 266, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 0, 0, 0, 186, 31, 32, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 292, 0, 0, 0, 0, 105, 197, 0, 241, 0, 0, 28, 293, 27, 0, 26, 0, 0, 295, 0, 0, 0, 0, 0, 296, 299, 0, 0, 301, 302, 303, 0, 305, 0, 0, 0, 306, 0, 0, 0, 0, 0, 186, 0, 0, 251, 0, 0, 0, 0, 0, 0, 0, 0, 320, 323, 325, 326, 0, 0, 241, 0, 0, 28, 0, 27, 0, 26, 0, 0, 43, 29, 0, 0, 0, 0, 0, 0, 0, 0, 45, 46, 0, 34, 335, 35, 0, 0, 0, 0, 339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 0, 18, 0, 0, 31, 32, 25, 19, 201, 0, 28, 0, 27, 0, 26, 0, 0, 0, 43, 29, 0, 0, 0, 0, 0, 0, 0, 19, 45, 46, 28, 34, 27, 35, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 0, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 0, 18, 43, 29, 31, 32, 25, 0, 0, 0, 0, 0, 45, 46, 0, 34, 0, 35, 19, 199, 0, 28, 0, 27, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 169, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 0, 160, 0, 0, 31, 32, 25, 43, 29, 0, 0, 0, 0, 0, 0, 0, 0, 45, 46, 0, 34, 0, 35, 19, 0, 0, 28, 0, 27, 0, 26, 0, 0, 0, 251, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 43, 29, 160, 0, 0, 31, 32, 25, 0, 0, 45, 46, 0, 34, 0, 35, 241, 0, 0, 28, 0, 27, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 0, 160, 0, 0, 31, 32, 25, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 43, 29, 0, 0, 0, 0, 0, 0, 0, 0, 45, 46, 0, 34, 99, 35, 0, 28, 0, 27, 43, 29, 0, 0, 0, 0, 0, 0, 0, 0, 45, 46, 38, 34, 0, 35, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 38, 0, 18, 0, 0, 31, 32, 25, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 0, 18, 0, 0, 31, 32, 25, 0, 19, 43, 29, 28, 0, 27, 0, 26, 0, 0, 0, 45, 46, 0, 34, 0, 35, 0, 0, 0, 157, 0, 0, 28, 0, 27, 0, 26, 0, 0, 0, 0, 0, 38, 0, 0, 169, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 0, 18, 0, 0, 31, 32, 25, 43, 29, 0, 0, 0, 0, 0, 0, 0, 0, 45, 46, 0, 34, 99, 35, 0, 28, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 43, 29, 18, 0, 0, 31, 32, 25, 0, 0, 45, 46, 0, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 236, 33, 0, 37, 41, 0, 0, 160, 0, 0, 31, 32, 25, 0, 0, 0, 0, 0, 0, 0, 237, 43, 29, 0, 0, 0, 0, 0, 0, 0, 0, 45, 46, 0, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 0, 0, 0, 0, 31, 32, 25, 0, 0, 0, 0, 0, 0, 0, 43, 29, 0, 0, 0, 0, 0, 0, 0, 0, 45, 46, 0, 34, 0, 35, 0, 0, 0, 0, 43, 29, 0, 0, 0, 0, 0, 0, 0, 0, 45, 46, 38, 34, 0, 35, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 38, 0, 18, 0, 0, 31, 32, 25, 42, 24, 44, 30, 36, 39, 23, 0, 33, 0, 37, 41, 0, 0, 160, 43, 29, 31, 32, 25, 0, 0, 0, 0, 0, 45, 46, 0, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 42, 24, 44, 30, 36, 39, 23, 0, 0, 0, 37, 41, 0, 0, 0, 0, 0, 31, 32, 25 }; static YYCONST yytabelem yypact[]={ 6,-10000000,-10000000,-10000000, 1358, 16,-10000000,-10000000, 12,-10000000, 47, 442, -33, -33, -271, 2578,-10000000, -291, 3859, 3859, -10000000, -34, 2,-10000000,-10000000, 584,-10000000, 584, 584, 147, 146, -281, -281, -284, 142, 140,-10000000, 132, 126,-10000000, 125, 118,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000, 1358, 442, 3859,-10000000, 1036,-10000000, 0, 3859, 0, 1096, 906, -10000000, 1156, 442, 0, 906, 0, 1156, -181,-10000000, 117, 116, 3879, -250, 2578,-10000000, 107,-10000000,-10000000, 442, 442, 106,-10000000,-10000000, 3859, 3672, 3550, 3859, 3859, 3859, 3859, 3859, 3859, 3859, -250, -324, -34,-10000000,-10000000, -331, 3859, 3859,-10000000,-10000000, -328, 150, 1680, 584, 584, 584, 584, 584, 584, 3859,-10000000, -314, -338, -338, 3612, 3530,-10000000, -10000000, -233, 584, 3859, 3859, 3859, 3859, 3859, 3859,-10000000, 966, -33,-10000000,-10000000,-10000000, -184, -181,-10000000, 1595,-10000000, -10000000, -330, 1595,-10000000, -280, 834,-10000000, 1595,-10000000,-10000000, -10000000,-10000000, -184, 2766, 3859, -66, 58, 3859, 2912, -306, 3724,-10000000, -34, 1, 3859, 774, 704, -304, 2501,-10000000, 2681,-10000000, 2704, 3934, 3934, 3934, 3934, 3934, 3934,-10000000, 3934,-10000000, -281, 2431, 2578, -236, 3222,-10000000, 3222,-10000000, -12, -12, -338, -338, -338, -338, 57, 2578, 52,-10000000, 123,-10000000, 96, 584, -34, 2361, 2361, 2361, 85, 58, 2361, 2361,-10000000, 442,-10000000,-10000000,-10000000, 105,-10000000, 644, -10000000, -186,-10000000,-10000000, 35, -49,-10000000, 2251, 584, 584, 584, 3460, 80, 3724, 3408, 3348, 3724, -250, -34, 3724, -328, 3859, 3859, 2251,-10000000,-10000000, 75,-10000000, 3859,-10000000, -250,-10000000, 2578, 2578, 3222,-10000000,-10000000,-10000000,-10000000, -34, 3222, 3222, -232,-10000000, 3222, 3222, 3222, 512, 3859,-10000000, -10000000,-10000000, 3293, -250, -199,-10000000, -34, -34, -34, 2912, -244, 2842, 3082, 3792,-10000000, 3934,-10000000, 2912, 74, 51, -199, -199, -240, 2578,-10000000, 2578, 2181, 97, 92, 2111, 73, 1510, 1428, 1278,-10000000, 2034, 1930, 2766, 79,-10000000, -250, 3724, -244,-10000000, -33,-10000000,-10000000,-10000000,-10000000,-10000000, 3222,-10000000,-10000000, -261,-10000000, -261, 3222,-10000000, 0, 2766, 79, 313,-10000000, 2912, 442, 1847, 91, 86, 81, 1762, -10000000, 79, 313,-10000000, 382,-10000000,-10000000,-10000000,-10000000,-10000000, 313,-10000000,-10000000,-10000000 }; static YYCONST yytabelem yypgo[]={ 0, 245, 3203, 225, 85, 233, 131, 227, 239, 100, 105, 226, 1278, 36, 103, 22, 62, 0, 615, 223, 222, 221, 219, 216, 215, 192, 149, 61, 3193, 83, 87, 97, 37, 210, 205, 203, 202, 200, 197, 195, 193, 70 }; static YYCONST yytabelem yyr1[]={ 0, 35, 35, 31, 31, 32, 32, 28, 28, 36, 36, 37, 37, 21, 21, 21, 19, 19, 22, 26, 26, 29, 29, 30, 30, 25, 25, 14, 14, 1, 1, 9, 10, 10, 10, 10, 10, 10, 10, 38, 10, 11, 11, 6, 6, 3, 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, 2, 4, 4, 5, 5, 7, 7, 7, 34, 34, 24, 24, 24, 24, 39, 39, 40, 12, 27, 27, 13, 13, 13, 13, 13, 13, 13, 13, 41, 41, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 33, 33, 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, 17, 17, 17, 17, 17, 20, 20, 20, 18, 18, 18, 23 }; static YYCONST yytabelem yyr2[]={ 0, 3, 3, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 19, 17, 15, 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, 5, 7, 7, 7, 11, 5, 3, 2, 7, 11, 7, 7, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 11, 9, 7, 5, 3, 2, 7, 7, 2, 7, 1, 2, 7, 2, 2, 2, 2, 4, 4, 2, 4, 1, 9, 2, 4, 9, 9, 9, 5, 11, 5, 3, 3, 2, 4, 5, 7, 5, 15, 7, 5, 2, 9, 5, 7, 5, 7, 5, 4, 5, 5, 2, 5, 2, 2, 7, 7, 7, 7, 7, 7, 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, 3, 5, 1, 3, 7, 3, 3, 3, 9 }; static YYCONST yytabelem yychk[]={ -10000000, -35, -1, 256, -25, -24, 263, 59, -11, -10, -9, -26, 261, 262, 297, -2, 123, -17, 342, 40, -12, -8, -18, 334, 329, 347, 47, 45, 43, 289, 331, 345, 346, 336, 301, 303, 332, 338, 320, 333, -33, 339, 328, 288, 330, 298, 299, 263, 59, -25, -26, 44, 263, -16, -15, 290, 291, 292, -36, 295, -21, -22, -26, 304, 337, -13, -23, 59, 294, 296, 300, -34, 293, -2, 256, 340, 318, 319, -26, -26, -19, 328, 331, 63, -32, -31, 281, 282, 283, 284, 285, 286, 267, 287, 124, -8, 279, 278, -17, 40, 311, 345, 346, -2, -4, -2, 43, 45, 42, 47, 37, 344, 91, -8, -40, -8, -8, 40, 40, -17, -17, -17, 285, 40, 40, 40, 40, 40, 40, -10, -16, -9, 125, -15, -41, -29, 59, 263, -2, -41, 263, -15, -2, -41, -15, -16, -41, -2, -41, -41, -15, -30, -29, 40, 40, -7, -5, 40, -3, -17, 342, -12, -8, -18, 40, -16, -16, 40, -2, 263, -2, 263, -2, -2, -2, -2, -2, -2, -2, -12, -2, -18, 336, -2, -2, 41, -28, 44, -28, 41, -8, -8, -8, -8, -8, -8, -6, -2, 335, 41, -6, 41, -6, 285, -8, -2, -2, -2, -6, -12, -2, -2, 125, -26, 263, -30, -41, 340, -41, -37, 321, -39, 125, -41, -14, -18, -13, -2, 124, 280, 283, -28, -4, 63, -32, -31, 267, 287, -8, 311, -3, 40, 91, -2, 125, 125, -20, 328, 58, -17, 287, 263, -2, -2, -28, 93, 47, 41, 41, -8, -28, -28, -28, 41, -28, -28, -28, -16, 40, 263, -15, 263, 59, 287, -27, 41, -8, -8, -8, -3, 41, -3, -3, -3, -12, -3, -18, -3, -4, -6, -27, -27, -28, -2, -18, -2, -2, -12, -12, -2, -18, -2, -2, -2, 125, -2, -2, 59, -18, 263, 287, 58, 41, 93, -38, 328, 41, 41, 41, 41, -28, 41, 41, -28, 41, -28, -28, 41, 41, 59, -14, -27, -18, -3, -26, -2, -12, -17, -17, -2, -41, -14, -27, -15, -16, 41, 41, 41, 41, 41, -27, -15, 125, -15 }; static YYCONST yytabelem yydef[]={ -2, -2, 1, 2, 29, 26, 86, 87, 25, 41, 32, 0, 0, 0, 0, 31, 19, 164, 0, 0, 75, 76, 165, 167, 168, 0, 92, 0, 0, 136, 0, 0, 0, 146, 0, 0, 152, 0, 0, 157, 0, 0, 173, 174, 175, 124, 125, 88, 89, 30, 0, 0, 20, 0, 122, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 23, 9, 0, 0, 81, 0, 102, 103, 0, 84, 85, 0, 0, 0, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 5, 3, 164, 0, 0, 141, 142, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 132, 133, 0, 0, 139, 140, 145, 0, 0, 0, 0, 0, 0, 0, 42, 0, 34, 36, 123, 106, 104, 23, 21, 0, 108, 10, 0, 0, 111, 114, 0, 116, 0, 118, 119, 120, 121, 24, -2, 0, 99, 82, 0, 79, 164, 0, 55, 56, 101, 0, 0, 0, 170, 0, 6, 59, 4, 60, -2, -2, -2, -2, -2, -2, 68, -2, 70, 73, 0, 57, 0, 0, 7, 0, 149, 126, 127, 128, 129, 130, 131, 0, 43, 0, 134, 0, 137, 0, 0, 144, 0, 0, 0, 0, 75, 0, 0, 33, 0, 22, 105, 107, 0, 110, 0, 11, 115, 90, 117, 0, 165, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 49, 0, 0, 0, 37, 38, 0, 171, 0, 72, 0, 8, 78, 77, 0, 166, 93, 135, 138, 143, 0, 0, 0, 156, 0, 0, 0, 0, 0, 12, 113, 91, 0, 0, 18, 94, 96, 97, 98, 80, 83, 0, 47, 48, 50, -2, 52, 45, 0, 0, 176, 39, 0, 58, 71, 44, 0, 75, 75, 0, 0, 0, 0, 0, 35, 0, 0, -2, 0, 95, 0, 0, 0, 100, 0, 172, 147, 148, 150, 151, 0, 155, 158, 0, 159, 0, 0, 163, 0, -2, 0, 0, 53, 46, 0, 0, 75, 0, 0, 0, 109, 0, 0, 15, 0, 153, 154, 160, 161, 162, 0, 14, 40, 13 }; typedef struct #ifdef __cplusplus yytoktype #endif { #ifdef __cplusplus const #endif char *t_name; int t_val; } yytoktype; #ifndef YYDEBUG # define YYDEBUG 0 /* don't allow debugging */ #endif #if YYDEBUG 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, "ADD", 305, "MINUS", 306, "MULT", 307, "DIVIDE", 308, "MOD", 309, "ASSIGN", 310, "ASGNOP", 311, "ADDEQ", 312, "SUBEQ", 313, "MULTEQ", 314, "DIVEQ", 315, "MODEQ", 316, "POWEQ", 317, "PRINT", 318, "PRINTF", 319, "SPRINTF", 320, "ELSE", 321, "INTEST", 322, "CONDEXPR", 323, "POSTINCR", 324, "PREINCR", 325, "POSTDECR", 326, "PREDECR", 327, "VAR", 328, "IVAR", 329, "VARNF", 330, "CALL", 331, "NUMBER", 332, "STRING", 333, "FIELD", 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 */ }; #ifdef __cplusplus const #endif 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 ';' pattern ';' opt_simple_stmt rparen stmt", "for : FOR '(' opt_simple_stmt ';' ';' opt_simple_stmt rparen stmt", "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 : NOT ppattern", "ppattern : ppattern MATCHOP reg_expr", "ppattern : ppattern MATCHOP ppattern", "ppattern : ppattern IN varname", "ppattern : '(' plist ')' IN varname", "ppattern : ppattern term", "ppattern : reg_expr", "ppattern : term", "pattern : var ASGNOP pattern", "pattern : pattern '?' pattern ':' pattern", "pattern : pattern bor pattern", "pattern : pattern and pattern", "pattern : NOT 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 : reg_expr", "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", "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 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 : RETURN pattern st", "stmt : RETURN st", "stmt : simple_stmt st", "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 : 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 : FIELD", "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 */ # line 1 "/usr/share/lib/ccs/yaccpar" /* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 1993 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* Copyright (c) 1988 AT&T */ /* All Rights Reserved */ #pragma ident "%Z%%M% %I% %E% SMI" /* ** Skeleton parser driver for yacc output */ /* ** yacc user known macros and defines */ #define YYERROR goto yyerrlab #define YYACCEPT return(0) #define YYABORT return(1) #define YYBACKUP( newtoken, newvalue )\ {\ if ( yychar >= 0 || ( yyr2[ yytmp ] >> 1 ) != 1 )\ {\ yyerror( "syntax error - cannot backup" );\ goto yyerrlab;\ }\ yychar = newtoken;\ yystate = *yyps;\ yylval = newvalue;\ goto yynewstate;\ } #define YYRECOVERING() (!!yyerrflag) #define YYNEW(type) malloc(sizeof(type) * yynewmax) #define YYCOPY(to, from, type) \ (type *) memcpy(to, (char *) from, yymaxdepth * sizeof (type)) #define YYENLARGE( from, type) \ (type *) realloc((char *) from, yynewmax * sizeof(type)) #ifndef YYDEBUG # define YYDEBUG 1 /* make debugging available */ #endif /* ** user known globals */ int yydebug; /* set to 1 to get debugging */ /* ** driver internal defines */ #define YYFLAG (-10000000) /* ** global variables used by the parser */ YYSTYPE *yypv; /* top of value stack */ int *yyps; /* top of state stack */ int yystate; /* current state */ int yytmp; /* extra var (lasts between blocks) */ int yynerrs; /* number of errors */ int yyerrflag; /* error recovery flag */ int yychar; /* current input token number */ #ifdef YYNMBCHARS #define YYLEX() yycvtok(yylex()) /* ** yycvtok - return a token if i is a wchar_t value that exceeds 255. ** If i<255, i itself is the token. If i>255 but the neither ** of the 30th or 31st bit is on, i is already a token. */ #if defined(__STDC__) || defined(__cplusplus) int yycvtok(int i) #else int yycvtok(i) int i; #endif { int first = 0; int last = YYNMBCHARS - 1; int mid; wchar_t j; if(i&0x60000000){/*Must convert to a token. */ if( yymbchars[last].character < i ){ return i;/*Giving up*/ } while ((last>=first)&&(first>=0)) {/*Binary search loop*/ mid = (first+last)/2; j = yymbchars[mid].character; if( j==i ){/*Found*/ return yymbchars[mid].tvalue; }else if( j= 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? */ { /* ** reallocate and recover. Note that pointers ** have to be reset, or bad things will happen */ long yyps_index = (yy_ps - yys); long yypv_index = (yy_pv - yyv); long yypvt_index = (yypvt - yyv); int yynewmax; #ifdef YYEXPAND yynewmax = YYEXPAND(yymaxdepth); #else yynewmax = 2 * yymaxdepth; /* double table size */ if (yymaxdepth == YYMAXDEPTH) /* first time growth */ { char *newyys = (char *)YYNEW(int); char *newyyv = (char *)YYNEW(YYSTYPE); if (newyys != 0 && newyyv != 0) { yys = YYCOPY(newyys, yys, int); yyv = YYCOPY(newyyv, yyv, YYSTYPE); } else yynewmax = 0; /* failed */ } else /* not first time */ { yys = YYENLARGE(yys, int); yyv = YYENLARGE(yyv, YYSTYPE); if (yys == 0 || yyv == 0) yynewmax = 0; /* failed */ } #endif if (yynewmax <= yymaxdepth) /* tables not expanded */ { yyerror( "yacc stack overflow" ); YYABORT; } yymaxdepth = yynewmax; yy_ps = yys + yyps_index; yy_pv = yyv + yypv_index; yypvt = yyv + yypvt_index; } *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 YYCONST 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( "syntax error" ); 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; skip_init: yynerrs++; /* FALLTHRU */ 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 108 "awk.g.y" { if (errorflag==0) winner = (Node *)stat3(PROGRAM, beginloc, yypvt[-0].p, endloc); } break; case 2: # line 110 "awk.g.y" { yyclearin; bracecheck(); ERROR "bailing out" SYNTAX; } break; case 13: # line 135 "awk.g.y" { yyval.p = stat4(FOR, yypvt[-6].p, notnull(yypvt[-4].p), yypvt[-2].p, yypvt[-0].p); } break; case 14: # line 137 "awk.g.y" { yyval.p = stat4(FOR, yypvt[-5].p, NIL, yypvt[-2].p, yypvt[-0].p); } break; case 15: # line 139 "awk.g.y" { yyval.p = stat3(IN, yypvt[-4].p, makearr(yypvt[-2].p), yypvt[-0].p); } break; case 16: # line 143 "awk.g.y" { setfname(yypvt[-0].cp); } break; case 17: # line 144 "awk.g.y" { setfname(yypvt[-0].cp); } break; case 18: # line 148 "awk.g.y" { yyval.p = notnull(yypvt[-1].p); } break; case 23: # line 160 "awk.g.y" { yyval.i = 0; } break; case 25: # line 165 "awk.g.y" { yyval.i = 0; } break; case 27: # line 171 "awk.g.y" { yyval.p = 0; } break; case 29: # line 176 "awk.g.y" { yyval.p = 0; } break; case 30: # line 177 "awk.g.y" { yyval.p = yypvt[-1].p; } break; case 31: # line 181 "awk.g.y" { yyval.p = notnull(yypvt[-0].p); } break; case 32: # line 185 "awk.g.y" { yyval.p = stat2(PASTAT, yypvt[-0].p, stat2(PRINT, rectonode(), NIL)); } break; case 33: # line 186 "awk.g.y" { yyval.p = stat2(PASTAT, yypvt[-3].p, yypvt[-1].p); } break; case 34: # line 187 "awk.g.y" { yyval.p = pa2stat(yypvt[-2].p, yypvt[-0].p, stat2(PRINT, rectonode(), NIL)); } break; case 35: # line 188 "awk.g.y" { yyval.p = pa2stat(yypvt[-5].p, yypvt[-3].p, yypvt[-1].p); } break; case 36: # line 189 "awk.g.y" { yyval.p = stat2(PASTAT, NIL, yypvt[-1].p); } break; case 37: # line 191 "awk.g.y" { beginloc = linkum(beginloc, yypvt[-1].p); yyval.p = 0; } break; case 38: # line 193 "awk.g.y" { endloc = linkum(endloc, yypvt[-1].p); yyval.p = 0; } break; case 39: # line 194 "awk.g.y" {infunc++;} break; case 40: # line 195 "awk.g.y" { infunc--; curfname=0; defn((Cell *)yypvt[-7].p, yypvt[-5].p, yypvt[-1].p); yyval.p = 0; } break; case 42: # line 200 "awk.g.y" { yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break; case 44: # line 205 "awk.g.y" { yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break; case 45: # line 209 "awk.g.y" { yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break; case 46: # line 211 "awk.g.y" { yyval.p = op3(CONDEXPR, notnull(yypvt[-4].p), yypvt[-2].p, yypvt[-0].p); } break; case 47: # line 213 "awk.g.y" { yyval.p = op2(BOR, notnull(yypvt[-2].p), notnull(yypvt[-0].p)); } break; case 48: # line 215 "awk.g.y" { yyval.p = op2(AND, notnull(yypvt[-2].p), notnull(yypvt[-0].p)); } break; case 49: # line 217 "awk.g.y" { yyval.p = op1(NOT, notnull(yypvt[-0].p)); } break; case 50: # line 218 "awk.g.y" { yyval.p = op3(yypvt[-1].i, NIL, yypvt[-2].p, (Node*)makedfa(yypvt[-0].s, 0)); } break; case 51: # line 220 "awk.g.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 52: # line 224 "awk.g.y" { yyval.p = op2(INTEST, yypvt[-2].p, makearr(yypvt[-0].p)); } break; case 53: # line 225 "awk.g.y" { yyval.p = op2(INTEST, yypvt[-3].p, makearr(yypvt[-0].p)); } break; case 54: # line 226 "awk.g.y" { yyval.p = op2(CAT, yypvt[-1].p, yypvt[-0].p); } break; case 55: # line 228 "awk.g.y" { yyval.p = op3(MATCH, NIL, rectonode(), (Node*)makedfa(yypvt[-0].s, 0)); } break; case 57: # line 233 "awk.g.y" { yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break; case 58: # line 235 "awk.g.y" { yyval.p = op3(CONDEXPR, notnull(yypvt[-4].p), yypvt[-2].p, yypvt[-0].p); } break; case 59: # line 237 "awk.g.y" { yyval.p = op2(BOR, notnull(yypvt[-2].p), notnull(yypvt[-0].p)); } break; case 60: # line 239 "awk.g.y" { yyval.p = op2(AND, notnull(yypvt[-2].p), notnull(yypvt[-0].p)); } break; case 61: # line 241 "awk.g.y" { yyval.p = op1(NOT, op2(NE,yypvt[-0].p,valtonode(lookup((uchar *)"$zero&null",symtab),CCON))); } break; case 62: # line 242 "awk.g.y" { yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break; case 63: # line 243 "awk.g.y" { yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break; case 64: # line 244 "awk.g.y" { yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break; case 65: # line 245 "awk.g.y" { yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break; case 66: # line 246 "awk.g.y" { yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break; case 67: # line 247 "awk.g.y" { yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break; case 68: # line 248 "awk.g.y" { yyval.p = op3(yypvt[-1].i, NIL, yypvt[-2].p, (Node*)makedfa(yypvt[-0].s, 0)); } break; case 69: # line 250 "awk.g.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 70: # line 254 "awk.g.y" { yyval.p = op2(INTEST, yypvt[-2].p, makearr(yypvt[-0].p)); } break; case 71: # line 255 "awk.g.y" { yyval.p = op2(INTEST, yypvt[-3].p, makearr(yypvt[-0].p)); } break; case 72: # line 256 "awk.g.y" { yyval.p = op3(GETLINE, yypvt[-0].p, (Node*)yypvt[-2].i, yypvt[-3].p); } break; case 73: # line 257 "awk.g.y" { yyval.p = op3(GETLINE, (Node*)0, (Node*)yypvt[-1].i, yypvt[-2].p); } break; case 74: # line 258 "awk.g.y" { yyval.p = op2(CAT, yypvt[-1].p, yypvt[-0].p); } break; case 75: # line 260 "awk.g.y" { yyval.p = op3(MATCH, NIL, rectonode(), (Node*)makedfa(yypvt[-0].s, 0)); } break; case 77: # line 265 "awk.g.y" { yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break; case 78: # line 266 "awk.g.y" { yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break; case 80: # line 271 "awk.g.y" { yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break; case 81: # line 274 "awk.g.y" { yyval.p = rectonode(); } break; case 83: # line 276 "awk.g.y" { yyval.p = yypvt[-1].p; } break; case 92: # line 292 "awk.g.y" {startreg();} break; case 93: # line 292 "awk.g.y" { yyval.s = yypvt[-1].s; } break; case 96: # line 300 "awk.g.y" { yyval.p = stat3(yypvt[-3].i, yypvt[-2].p, (Node *) yypvt[-1].i, yypvt[-0].p); } break; case 97: # line 301 "awk.g.y" { yyval.p = stat3(yypvt[-3].i, yypvt[-2].p, (Node *) yypvt[-1].i, yypvt[-0].p); } break; case 98: # line 302 "awk.g.y" { yyval.p = stat3(yypvt[-3].i, yypvt[-2].p, (Node *) yypvt[-1].i, yypvt[-0].p); } break; case 99: # line 303 "awk.g.y" { yyval.p = stat3(yypvt[-1].i, yypvt[-0].p, NIL, NIL); } break; case 100: # line 304 "awk.g.y" { yyval.p = stat2(DELETE, makearr(yypvt[-3].p), yypvt[-1].p); } break; case 101: # line 305 "awk.g.y" { yyclearin; ERROR "you can only delete array[element]" SYNTAX; yyval.p = stat1(DELETE, yypvt[-0].p); } break; case 102: # line 306 "awk.g.y" { yyval.p = exptostat(yypvt[-0].p); } break; case 103: # line 307 "awk.g.y" { yyclearin; ERROR "illegal statement" SYNTAX; } break; case 106: # line 315 "awk.g.y" { yyval.p = stat1(BREAK, NIL); } break; case 107: # line 316 "awk.g.y" { yyval.p = stat1(CLOSE, yypvt[-1].p); } break; case 108: # line 317 "awk.g.y" { yyval.p = stat1(CONTINUE, NIL); } break; case 109: # line 319 "awk.g.y" { yyval.p = stat2(DO, yypvt[-5].p, notnull(yypvt[-2].p)); } break; case 110: # line 320 "awk.g.y" { yyval.p = stat1(EXIT, yypvt[-1].p); } break; case 111: # line 321 "awk.g.y" { yyval.p = stat1(EXIT, NIL); } break; case 113: # line 323 "awk.g.y" { yyval.p = stat3(IF, yypvt[-3].p, yypvt[-2].p, yypvt[-0].p); } break; case 114: # line 324 "awk.g.y" { yyval.p = stat3(IF, yypvt[-1].p, yypvt[-0].p, NIL); } break; case 115: # line 325 "awk.g.y" { yyval.p = yypvt[-1].p; } break; case 116: # line 326 "awk.g.y" { if (infunc) ERROR "next is illegal inside a function" SYNTAX; yyval.p = stat1(NEXT, NIL); } break; case 117: # line 329 "awk.g.y" { yyval.p = stat1(RETURN, yypvt[-1].p); } break; case 118: # line 330 "awk.g.y" { yyval.p = stat1(RETURN, NIL); } break; case 120: # line 332 "awk.g.y" { yyval.p = stat2(WHILE, yypvt[-1].p, yypvt[-0].p); } break; case 121: # line 333 "awk.g.y" { yyval.p = 0; } break; case 123: # line 338 "awk.g.y" { yyval.p = linkum(yypvt[-1].p, yypvt[-0].p); } break; case 126: # line 346 "awk.g.y" { yyval.p = op2(ADD, yypvt[-2].p, yypvt[-0].p); } break; case 127: # line 347 "awk.g.y" { yyval.p = op2(MINUS, yypvt[-2].p, yypvt[-0].p); } break; case 128: # line 348 "awk.g.y" { yyval.p = op2(MULT, yypvt[-2].p, yypvt[-0].p); } break; case 129: # line 349 "awk.g.y" { yyval.p = op2(DIVIDE, yypvt[-2].p, yypvt[-0].p); } break; case 130: # line 350 "awk.g.y" { yyval.p = op2(MOD, yypvt[-2].p, yypvt[-0].p); } break; case 131: # line 351 "awk.g.y" { yyval.p = op2(POWER, yypvt[-2].p, yypvt[-0].p); } break; case 132: # line 352 "awk.g.y" { yyval.p = op1(UMINUS, yypvt[-0].p); } break; case 133: # line 353 "awk.g.y" { yyval.p = yypvt[-0].p; } break; case 134: # line 354 "awk.g.y" { yyval.p = op2(BLTIN, (Node *) yypvt[-2].i, rectonode()); } break; case 135: # line 355 "awk.g.y" { yyval.p = op2(BLTIN, (Node *) yypvt[-3].i, yypvt[-1].p); } break; case 136: # line 356 "awk.g.y" { yyval.p = op2(BLTIN, (Node *) yypvt[-0].i, rectonode()); } break; case 137: # line 357 "awk.g.y" { yyval.p = op2(CALL, valtonode(yypvt[-2].cp,CVAR), NIL); } break; case 138: # line 358 "awk.g.y" { yyval.p = op2(CALL, valtonode(yypvt[-3].cp,CVAR), yypvt[-1].p); } break; case 139: # line 359 "awk.g.y" { yyval.p = op1(PREDECR, yypvt[-0].p); } break; case 140: # line 360 "awk.g.y" { yyval.p = op1(PREINCR, yypvt[-0].p); } break; case 141: # line 361 "awk.g.y" { yyval.p = op1(POSTDECR, yypvt[-1].p); } break; case 142: # line 362 "awk.g.y" { yyval.p = op1(POSTINCR, yypvt[-1].p); } break; case 143: # line 363 "awk.g.y" { yyval.p = op3(GETLINE, yypvt[-2].p, (Node *)yypvt[-1].i, yypvt[-0].p); } break; case 144: # line 364 "awk.g.y" { yyval.p = op3(GETLINE, NIL, (Node *)yypvt[-1].i, yypvt[-0].p); } break; case 145: # line 365 "awk.g.y" { yyval.p = op3(GETLINE, yypvt[-0].p, NIL, NIL); } break; case 146: # line 366 "awk.g.y" { yyval.p = op3(GETLINE, NIL, NIL, NIL); } break; case 147: # line 368 "awk.g.y" { yyval.p = op2(INDEX, yypvt[-3].p, yypvt[-1].p); } break; case 148: # line 370 "awk.g.y" { ERROR "index() doesn't permit regular expressions" SYNTAX; yyval.p = op2(INDEX, yypvt[-3].p, (Node*)yypvt[-1].s); } break; case 149: # line 372 "awk.g.y" { yyval.p = yypvt[-1].p; } break; case 150: # line 374 "awk.g.y" { yyval.p = op3(MATCHFCN, NIL, yypvt[-3].p, (Node*)makedfa(yypvt[-1].s, 1)); } break; case 151: # line 376 "awk.g.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 152: # line 380 "awk.g.y" { yyval.p = valtonode(yypvt[-0].cp, CCON); } break; case 153: # line 382 "awk.g.y" { yyval.p = op4(SPLIT, yypvt[-5].p, makearr(yypvt[-3].p), yypvt[-1].p, (Node*)STRING); } break; case 154: # line 384 "awk.g.y" { yyval.p = op4(SPLIT, yypvt[-5].p, makearr(yypvt[-3].p), (Node*)makedfa(yypvt[-1].s, 1), (Node *)REGEXPR); } break; case 155: # line 386 "awk.g.y" { yyval.p = op4(SPLIT, yypvt[-3].p, makearr(yypvt[-1].p), NIL, (Node*)STRING); } break; case 156: # line 387 "awk.g.y" { yyval.p = op1(yypvt[-3].i, yypvt[-1].p); } break; case 157: # line 388 "awk.g.y" { yyval.p = valtonode(yypvt[-0].cp, CCON); } break; case 158: # line 390 "awk.g.y" { yyval.p = op4(yypvt[-5].i, NIL, (Node*)makedfa(yypvt[-3].s, 1), yypvt[-1].p, rectonode()); } break; case 159: # line 392 "awk.g.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 160: # line 397 "awk.g.y" { yyval.p = op4(yypvt[-7].i, NIL, (Node*)makedfa(yypvt[-5].s, 1), yypvt[-3].p, yypvt[-1].p); } break; case 161: # line 399 "awk.g.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 162: # line 404 "awk.g.y" { yyval.p = op3(SUBSTR, yypvt[-5].p, yypvt[-3].p, yypvt[-1].p); } break; case 163: # line 406 "awk.g.y" { yyval.p = op3(SUBSTR, yypvt[-3].p, yypvt[-1].p, NIL); } break; case 166: # line 412 "awk.g.y" { yyval.p = op2(ARRAY, makearr(yypvt[-3].p), yypvt[-1].p); } break; case 167: # line 413 "awk.g.y" { yyval.p = valtonode(yypvt[-0].cp, CFLD); } break; case 168: # line 414 "awk.g.y" { yyval.p = op1(INDIRECT, valtonode(yypvt[-0].cp, CVAR)); } break; case 169: # line 415 "awk.g.y" { yyval.p = op1(INDIRECT, yypvt[-0].p); } break; case 170: # line 419 "awk.g.y" { arglist = yyval.p = 0; } break; case 171: # line 420 "awk.g.y" { arglist = yyval.p = valtonode(yypvt[-0].cp,CVAR); } break; case 172: # line 421 "awk.g.y" { arglist = yyval.p = linkum(yypvt[-2].p,valtonode(yypvt[-0].cp,CVAR)); } break; case 173: # line 425 "awk.g.y" { yyval.p = valtonode(yypvt[-0].cp, CVAR); } break; case 174: # line 426 "awk.g.y" { yyval.p = op1(ARG, (Node *) yypvt[-0].i); } break; case 175: # line 427 "awk.g.y" { yyval.p = op1(VARNF, (Node *) yypvt[-0].cp); } break; case 176: # line 432 "awk.g.y" { yyval.p = notnull(yypvt[-1].p); } break; # line 556 "/usr/share/lib/ccs/yaccpar" } goto yystack; /* reset registers in driver code */ }