Path: icaen!news.uiowa.edu!uunet!dziuxsolim.rutgers.edu!pilot.njin.net!not-for-mail From: comp-sources-apple2@pilot.njin.net Newsgroups: comp.sources.apple2 Subject: v001SRC099: AWK -- 16-bit Port of AT&T AWK (GNO) 06/06 Date: 1 Jan 1995 17:39:28 -0500 Organization: Rutgers University Lines: 2103 Sender: jac@pilot.njin.net Approved: jac@pilot.njin.net Distribution: world Message-ID: <3e7av0$d65@pilot.njin.net> NNTP-Posting-Host: pilot.njin.net Submitted-By: Jawaid Bazyar (bazyar@netcom.com) Posting-number: Volume 1, Source 99 Archive-Name: gno/util/awk.06 Architecture: 2gs,UNIX Version-Number: 1.00 =y.tab.c -extern char *malloc(), *realloc(); - -#ifdef __ORCAC__ -segment "lex.yy"; -#endif - -# line 26 "awk.g.y" -#include -#include -#include -#include "awk.h" -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 */ -uchar *curfname = 0; /* current function name */ -Node *arglist = 0; /* list of args for current function */ - -# line 38 "awk.g.y" -typedef union { - 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 -#define yyclearin yychar = -1 -#define yyerrok yyerrflag = 0 -extern int yychar; -extern int yyerrflag; -#ifndef YYMAXDEPTH -#define YYMAXDEPTH 150 -#endif -YYSTYPE yylval, yyval; -# define YYERRCODE 256 - -# line 425 "awk.g.y" - - -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; -} - -int constnode(Node *p) -{ - return isvalue(p) && ((Cell *) (p->narg[0]))->csub == CCON; -} - -uchar *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); - } -} -int 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, - 320, 28, - 328, 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, 156, - 59, 30, - -2, 0, --1, 175, - 124, 0, - 267, 0, - 281, 0, - 282, 0, - 283, 0, - 284, 0, - 285, 0, - 286, 0, - 287, 0, - -2, 63, --1, 176, - 124, 0, - 267, 0, - 281, 0, - 282, 0, - 283, 0, - 284, 0, - 285, 0, - 286, 0, - 287, 0, - -2, 64, --1, 177, - 124, 0, - 267, 0, - 281, 0, - 282, 0, - 283, 0, - 284, 0, - 285, 0, - 286, 0, - 287, 0, - -2, 65, --1, 178, - 124, 0, - 267, 0, - 281, 0, - 282, 0, - 283, 0, - 284, 0, - 285, 0, - 286, 0, - 287, 0, - -2, 66, --1, 179, - 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, 68, --1, 182, - 124, 0, - 267, 0, - 281, 0, - 282, 0, - 283, 0, - 284, 0, - 285, 0, - 286, 0, - 287, 0, - -2, 70, --1, 287, - 267, 0, - 287, 0, - -2, 53, --1, 331, - 41, 30, - -2, 0, --1, 353, - 41, 30, - -2, 0, - }; -# define YYNPROD 184 -# define YYLAST 4436 -int yyact[]={ - - 17, 137, 66, 124, 242, 227, 43, 102, 103, 104, - 112, 252, 275, 43, 111, 306, 100, 184, 213, 109, - 107, 111, 108, 252, 110, 100, 109, 100, 100, 100, - 248, 110, 121, 122, 123, 222, 43, 82, 103, 104, - 83, 103, 104, 43, 312, 113, 42, 23, 44, 138, - 54, 251, 22, 42, 23, 44, 154, 204, 231, 22, - 142, 252, 146, 139, 105, 24, 149, 151, 152, 308, - 310, 7, 24, 162, 7, 100, 42, 23, 44, 49, - 140, 272, 22, 42, 216, 44, 43, 143, 316, 52, - 16, 189, 189, 243, 113, 24, 273, 10, 9, 267, - 100, 333, 133, 322, 189, 189, 189, 100, 100, 100, - 100, 100, 100, 100, 148, 276, 276, 282, 155, 189, - 189, 263, 350, 349, 189, 100, 42, 348, 44, 198, - 167, 168, 258, 257, 187, 189, 189, 189, 319, 318, - 314, 256, 100, 218, 329, 169, 100, 220, 166, 132, - 134, 100, 225, 157, 156, 130, 129, 25, 128, 229, - 127, 126, 100, 125, 120, 119, 153, 269, 16, 144, - 131, 100, 223, 100, 315, 100, 100, 100, 100, 100, - 100, 100, 85, 100, 4, 250, 100, 100, 345, 155, - 359, 362, 221, 50, 21, 59, 217, 1, 72, 20, - 100, 40, 5, 67, 62, 100, 61, 100, 100, 100, - 247, 81, 100, 100, 232, 96, 8, 233, 158, 159, - 2, 0, 0, 0, 114, 235, 116, 117, 118, 0, - 0, 100, 100, 100, 100, 162, 0, 162, 162, 162, - 162, 274, 0, 162, 0, 100, 0, 0, 0, 201, - 203, 181, 0, 0, 100, 100, 0, 291, 209, 86, - 292, 0, 0, 0, 0, 0, 268, 140, 165, 0, - 0, 3, 164, 140, 96, 6, 0, 0, 6, 0, - 0, 100, 161, 48, 100, 100, 100, 210, 100, 183, - 100, 0, 0, 0, 0, 100, 0, 100, 100, 116, - 0, 100, 0, 100, 100, 100, 96, 192, 193, 194, - 195, 196, 197, 18, 162, 0, 28, 0, 27, 0, - 45, 112, 332, 155, 205, 339, 0, 340, 112, 0, - 307, 100, 68, 0, 229, 0, 100, 344, 100, 0, - 0, 96, 100, 100, 237, 96, 311, 0, 0, 0, - 96, 228, 0, 0, 357, 0, 229, 354, 155, 358, - 0, 241, 0, 0, 0, 331, 0, 0, 0, 0, - 96, 360, 96, 290, 96, 96, 96, 96, 96, 96, - 96, 0, 96, 0, 0, 96, 96, 346, 0, 0, - 0, 0, 0, 155, 0, 0, 16, 286, 356, 96, - 353, 0, 0, 0, 259, 0, 96, 96, 96, 0, - 18, 96, 96, 28, 0, 27, 0, 45, 298, 299, - 0, 238, 0, 0, 0, 0, 0, 0, 0, 68, - 96, 277, 278, 279, 164, 288, 164, 164, 164, 164, - 0, 0, 164, 0, 96, 0, 295, 0, 0, 0, - 0, 0, 0, 96, 96, 0, 0, 301, 0, 0, - 0, 0, 0, 237, 0, 0, 237, 237, 237, 309, - 237, 18, 237, 0, 28, 0, 27, 0, 45, 338, - 241, 0, 0, 241, 241, 241, 0, 241, 0, 241, - 68, 0, 0, 16, 96, 0, 96, 96, 0, 0, - 96, 63, 96, 96, 96, 0, 11, 334, 0, 0, - 0, 0, 51, 164, 79, 80, 0, 280, 237, 283, - 284, 285, 287, 0, 0, 289, 0, 0, 0, 75, - 96, 18, 0, 0, 28, 241, 27, 96, 45, 0, - 238, 96, 96, 238, 238, 238, 0, 238, 0, 238, - 68, 0, 11, 0, 16, 0, 305, 0, 0, 0, - 0, 43, 29, 56, 57, 58, 73, 69, 60, 70, - 0, 46, 47, 71, 34, 0, 35, 64, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 77, 78, 38, 0, 238, 335, 0, 0, 0, - 0, 42, 23, 44, 30, 36, 39, 22, 0, 33, - 65, 37, 41, 76, 16, 26, 0, 0, 31, 32, - 24, 0, 0, 0, 0, 0, 75, 0, 0, 0, - 0, 0, 0, 53, 0, 0, 215, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 43, 29, - 56, 57, 58, 73, 69, 60, 70, 0, 46, 47, - 71, 34, 18, 35, 64, 28, 0, 27, 0, 45, - 0, 0, 0, 0, 0, 0, 0, 75, 77, 78, - 38, 68, 0, 0, 0, 0, 0, 0, 42, 23, - 44, 30, 36, 39, 22, 0, 33, 65, 37, 41, - 76, 0, 26, 0, 0, 31, 32, 24, 0, 43, - 29, 56, 57, 58, 73, 69, 60, 70, 0, 46, - 47, 71, 34, 18, 35, 64, 28, 0, 27, 0, - 45, 0, 0, 0, 0, 0, 0, 75, 0, 77, - 78, 38, 68, 0, 270, 16, 0, 246, 0, 42, - 23, 44, 30, 36, 39, 22, 0, 33, 65, 37, - 41, 76, 0, 26, 0, 0, 31, 32, 24, 43, - 29, 56, 57, 58, 73, 69, 60, 70, 0, 46, - 47, 71, 34, 18, 35, 64, 28, 0, 27, 0, - 45, 0, 0, 0, 0, 0, 0, 0, 0, 77, - 78, 38, 68, 0, 0, 0, 16, 336, 245, 42, - 23, 44, 30, 36, 39, 22, 19, 33, 65, 37, - 41, 76, 0, 26, 0, 0, 31, 32, 24, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 115, 18, 0, 0, 28, 0, 27, - 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 68, 0, 0, 16, 0, 224, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 43, 29, 56, 57, 58, 73, 69, 60, 70, 0, - 46, 47, 71, 34, 0, 35, 64, 16, 0, 214, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, - 77, 78, 38, 0, 0, 0, 0, 0, 0, 0, - 42, 23, 44, 30, 36, 39, 22, 0, 33, 65, - 37, 41, 76, 0, 26, 0, 0, 31, 32, 24, - 0, 43, 29, 56, 57, 58, 73, 69, 60, 70, - 0, 46, 47, 71, 34, 18, 35, 64, 28, 0, - 27, 0, 45, 0, 0, 0, 0, 0, 0, 75, - 0, 77, 78, 38, 68, 0, 0, 0, 0, 0, - 0, 42, 23, 44, 30, 36, 39, 22, 0, 33, - 65, 37, 41, 76, 0, 26, 0, 0, 31, 32, - 24, 43, 29, 56, 57, 58, 73, 69, 60, 70, - 0, 46, 47, 71, 34, 18, 35, 64, 28, 0, - 27, 163, 45, 163, 163, 163, 163, 0, 0, 163, - 75, 77, 78, 38, 68, 0, 0, 0, 16, 0, - 135, 42, 23, 44, 30, 36, 39, 22, 0, 33, - 65, 37, 41, 76, 0, 26, 0, 0, 31, 32, - 24, 0, 43, 29, 56, 57, 58, 73, 69, 60, - 70, 0, 46, 47, 71, 34, 0, 35, 64, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 77, 78, 38, 0, 0, 0, 16, 0, - 163, 0, 42, 23, 44, 30, 36, 39, 22, 0, - 33, 65, 37, 41, 76, 0, 26, 0, 0, 31, - 32, 24, 0, 0, 0, 0, 0, 0, 101, 328, - 0, 28, 189, 27, 0, 0, 0, 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, 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, 43, 29, 56, 57, 58, 73, 69, - 60, 70, 95, 46, 47, 71, 34, 0, 35, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 75, 0, 77, 78, 38, 0, 0, 0, 0, - 0, 0, 0, 42, 23, 44, 30, 36, 39, 22, - 0, 33, 65, 37, 41, 76, 0, 26, 0, 0, - 31, 32, 24, 43, 29, 56, 57, 58, 73, 69, - 60, 70, 0, 46, 47, 71, 34, 0, 35, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 77, 78, 38, 101, 325, 0, 28, - 189, 27, 0, 42, 23, 44, 30, 36, 39, 22, - 0, 33, 65, 37, 41, 76, 0, 26, 0, 84, - 31, 32, 24, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 55, 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, 43, 29, 101, 323, - 95, 28, 189, 27, 0, 0, 46, 47, 0, 34, - 0, 35, 0, 0, 0, 0, 0, 136, 0, 0, - 0, 84, 0, 0, 0, 147, 0, 0, 38, 0, - 0, 0, 0, 0, 0, 0, 42, 23, 44, 30, - 36, 39, 22, 0, 33, 0, 37, 41, 0, 0, - 99, 0, 0, 31, 32, 24, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 101, 0, 0, 28, 0, 27, 0, 0, - 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, - 0, 139, 0, 0, 0, 84, 136, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, - 0, 136, 0, 0, 0, 0, 226, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 136, 136, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 93, 0, 101, 191, 0, 28, 189, - 27, 0, 0, 0, 98, 97, 95, 87, 88, 89, - 90, 91, 92, 94, 43, 29, 0, 0, 84, 0, - 0, 0, 0, 0, 46, 47, 0, 34, 0, 35, - 0, 0, 0, 0, 271, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, - 0, 0, 0, 0, 42, 23, 44, 30, 36, 39, - 22, 0, 33, 0, 37, 41, 0, 0, 99, 0, - 0, 31, 32, 24, 0, 93, 0, 0, 0, 95, - 0, 136, 0, 0, 0, 0, 98, 97, 0, 87, - 88, 89, 90, 91, 92, 94, 43, 29, 101, 352, - 0, 28, 0, 27, 0, 0, 46, 47, 0, 34, - 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 84, 0, 0, 0, 0, 0, 0, 38, 0, - 0, 0, 0, 0, 0, 0, 42, 23, 44, 30, - 36, 39, 22, 0, 33, 140, 37, 41, 0, 93, - 99, 0, 0, 31, 32, 24, 0, 0, 355, 136, - 98, 97, 0, 87, 88, 89, 90, 91, 92, 94, - 43, 29, 361, 0, 0, 363, 0, 0, 0, 0, - 46, 47, 95, 34, 0, 35, 101, 351, 0, 28, - 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 38, 0, 0, 0, 0, 0, 0, 84, - 42, 23, 44, 30, 36, 39, 22, 0, 33, 0, - 37, 41, 93, 0, 99, 0, 0, 31, 32, 24, - 0, 0, 0, 98, 97, 0, 87, 88, 89, 90, - 91, 92, 94, 43, 29, 0, 0, 0, 0, 0, - 0, 0, 0, 46, 47, 0, 34, 0, 35, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 95, 0, 0, 0, 0, 38, 101, 347, 0, 28, - 0, 27, 0, 42, 23, 44, 30, 36, 39, 22, - 0, 33, 0, 37, 41, 0, 0, 99, 0, 84, - 31, 32, 24, 0, 0, 0, 0, 0, 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, 43, 29, 0, 0, - 0, 0, 0, 0, 0, 0, 46, 47, 0, 34, - 95, 35, 101, 0, 0, 28, 0, 27, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, - 0, 343, 0, 0, 0, 84, 42, 23, 44, 30, - 36, 39, 22, 0, 33, 0, 37, 41, 0, 0, - 99, 0, 0, 31, 32, 24, 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, 43, 29, 0, 0, 0, 0, - 0, 0, 0, 0, 46, 47, 95, 34, 0, 35, - 0, 0, 0, 0, 0, 0, 0, 0, 101, 320, - 0, 28, 0, 27, 0, 0, 38, 0, 0, 0, - 0, 0, 0, 0, 42, 23, 44, 30, 36, 39, - 22, 84, 33, 0, 37, 41, 0, 0, 99, 0, - 0, 31, 32, 24, 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, 43, 29, 0, 0, 101, 317, - 0, 28, 0, 27, 46, 47, 0, 34, 0, 35, - 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, - 0, 84, 0, 0, 0, 0, 38, 0, 0, 0, - 0, 0, 0, 0, 42, 23, 44, 30, 36, 39, - 22, 0, 33, 0, 37, 41, 0, 0, 99, 0, - 0, 31, 32, 24, 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, - 43, 29, 95, 0, 101, 276, 0, 28, 0, 27, - 46, 47, 0, 34, 0, 35, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, - 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, - 42, 23, 44, 30, 36, 39, 22, 0, 33, 0, - 37, 41, 0, 0, 99, 0, 0, 31, 32, 24, - 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, - 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 98, 97, 95, 87, - 88, 89, 90, 91, 92, 94, 43, 29, 101, 0, - 0, 28, 189, 27, 0, 0, 46, 47, 0, 34, - 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 84, 0, 0, 0, 0, 0, 0, 38, 0, - 0, 0, 0, 0, 0, 0, 42, 23, 44, 30, - 36, 39, 22, 0, 33, 93, 37, 41, 0, 0, - 99, 0, 0, 31, 32, 24, 98, 97, 0, 87, - 88, 89, 90, 91, 92, 94, 43, 29, 0, 0, - 0, 0, 0, 0, 188, 190, 46, 47, 0, 34, - 0, 35, 95, 0, 0, 0, 0, 0, 0, 0, - 101, 191, 0, 28, 0, 27, 0, 0, 38, 0, - 0, 0, 0, 0, 0, 0, 42, 23, 44, 30, - 36, 39, 22, 84, 33, 0, 37, 41, 0, 0, - 99, 0, 0, 31, 32, 24, 0, 0, 234, 0, - 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 98, 97, 0, 87, 88, 89, 90, 91, - 92, 94, 43, 29, 0, 0, 0, 0, 0, 0, - 0, 0, 46, 47, 0, 34, 0, 35, 0, 0, - 0, 0, 0, 0, 95, 260, 261, 262, 0, 264, - 265, 266, 0, 0, 38, 0, 0, 0, 0, 0, - 0, 0, 42, 23, 44, 30, 36, 39, 22, 0, - 33, 0, 37, 41, 188, 0, 99, 0, 0, 31, - 32, 24, 0, 0, 0, 101, 293, 0, 28, 0, - 27, 0, 0, 0, 0, 93, 0, 0, 0, 0, - 0, 0, 0, 249, 0, 0, 98, 97, 84, 87, - 88, 89, 90, 91, 92, 94, 43, 29, 0, 0, - 0, 0, 0, 0, 0, 0, 46, 47, 0, 34, - 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, - 321, 324, 326, 327, 0, 0, 0, 0, 38, 0, - 188, 0, 0, 0, 0, 0, 42, 23, 44, 30, - 36, 39, 22, 0, 33, 0, 37, 41, 0, 95, - 99, 0, 0, 31, 32, 24, 0, 101, 0, 0, - 28, 0, 27, 0, 0, 0, 0, 93, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 98, 97, - 84, 87, 88, 89, 90, 91, 92, 94, 43, 29, - 0, 0, 0, 0, 0, 0, 0, 0, 46, 47, - 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, 23, - 44, 30, 36, 39, 22, 0, 33, 0, 37, 41, - 0, 95, 99, 0, 0, 31, 32, 24, 101, 0, - 0, 28, 0, 27, 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, 93, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 98, 97, 0, 87, 88, 89, 90, - 91, 92, 94, 43, 29, 0, 0, 0, 0, 0, - 0, 0, 0, 46, 47, 0, 34, 0, 35, 0, - 101, 0, 95, 28, 0, 27, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, - 0, 0, 0, 42, 23, 44, 30, 36, 39, 22, - 0, 33, 0, 37, 41, 0, 0, 99, 0, 0, - 31, 32, 24, 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, 43, 29, 101, 0, 0, - 28, 0, 27, 0, 95, 46, 47, 0, 34, 0, - 35, 0, 0, 0, 0, 313, 0, 0, 0, 0, - 236, 0, 0, 0, 0, 0, 0, 38, 0, 0, - 0, 0, 0, 0, 0, 42, 23, 44, 30, 36, - 39, 22, 0, 33, 0, 37, 41, 0, 0, 99, - 0, 0, 31, 32, 24, 0, 0, 18, 0, 0, - 28, 0, 27, 0, 45, 93, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 98, 0, 0, 87, - 88, 89, 90, 91, 92, 94, 43, 29, 0, 0, - 0, 0, 0, 0, 0, 0, 46, 47, 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, 23, 44, 30, - 36, 39, 22, 0, 33, 0, 37, 41, 0, 0, - 99, 0, 0, 31, 32, 24, 0, 93, 101, 0, - 0, 28, 0, 27, 0, 0, 0, 0, 0, 0, - 0, 87, 88, 89, 90, 91, 92, 94, 43, 29, - 0, 236, 101, 0, 0, 28, 0, 27, 46, 47, - 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, 23, - 44, 30, 36, 39, 22, 0, 33, 0, 37, 41, - 0, 0, 99, 0, 239, 31, 32, 24, 0, 0, - 0, 0, 0, 0, 0, 98, 97, 0, 0, 0, - 0, 0, 0, 0, 240, 43, 29, 18, 0, 0, - 28, 0, 27, 0, 45, 46, 47, 0, 34, 0, - 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 75, 0, 0, 0, 38, 0, 0, - 0, 0, 0, 0, 0, 42, 23, 44, 30, 36, - 39, 22, 0, 33, 0, 37, 41, 0, 0, 99, - 0, 0, 31, 32, 24, 43, 29, 0, 0, 0, - 73, 0, 0, 0, 0, 46, 47, 0, 34, 0, - 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 0, 77, 78, 38, 0, 0, - 0, 0, 0, 0, 0, 42, 23, 44, 30, 36, - 39, 22, 0, 33, 0, 37, 41, 0, 0, 26, - 0, 0, 31, 32, 24, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 239, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 98, 97, 0, 0, - 0, 0, 0, 0, 0, 240, 43, 29, 0, 0, - 0, 0, 0, 0, 0, 0, 46, 47, 0, 34, - 0, 35, 101, 0, 0, 28, 0, 27, 0, 0, - 43, 29, 0, 0, 0, 0, 0, 0, 38, 0, - 46, 47, 0, 34, 0, 35, 42, 23, 44, 30, - 36, 39, 22, 0, 33, 0, 37, 41, 0, 0, - 99, 0, 38, 31, 32, 24, 0, 0, 0, 0, - 42, 23, 44, 30, 36, 39, 22, 0, 12, 13, - 37, 41, 0, 0, 99, 0, 0, 31, 32, 24, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 43, 29, 74, 0, 0, - 0, 0, 15, 0, 14, 46, 47, 0, 34, 0, - 35, 0, 0, 0, 0, 0, 106, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, - 0, 0, 0, 0, 0, 42, 23, 44, 30, 36, - 39, 22, 0, 33, 0, 37, 41, 0, 15, 26, - 15, 0, 31, 32, 24, 141, 0, 0, 145, 18, - 0, 0, 28, 150, 27, 0, 45, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, - 0, 0, 170, 172, 174, 175, 176, 177, 178, 179, - 180, 182, 0, 0, 0, 0, 0, 0, 0, 185, - 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 199, 0, 0, 0, 0, 0, 199, 199, 0, - 0, 0, 0, 206, 207, 208, 199, 211, 212, 0, - 0, 18, 0, 0, 28, 0, 27, 0, 45, 239, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 98, 101, 0, 0, 28, 230, 27, 0, 106, 240, - 43, 29, 0, 0, 244, 0, 0, 0, 0, 0, - 46, 47, 0, 34, 0, 35, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 253, 0, 254, 0, - 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, - 42, 23, 44, 30, 36, 39, 22, 0, 33, 0, - 37, 41, 0, 0, 99, 0, 0, 31, 32, 24, - 0, 0, 0, 281, 0, 0, 28, 0, 27, 0, - 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 199, 0, 281, 0, 0, 28, 294, 27, 0, - 45, 0, 0, 296, 0, 0, 0, 0, 297, 300, - 0, 0, 302, 303, 304, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, - 0, 0, 140, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 281, 0, 0, 28, 0, - 27, 0, 45, 0, 0, 330, 0, 43, 29, 0, - 0, 0, 0, 0, 0, 0, 0, 46, 47, 337, - 34, 0, 35, 0, 0, 341, 0, 342, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, - 0, 0, 0, 0, 0, 0, 0, 42, 23, 44, - 30, 36, 39, 22, 252, 33, 0, 37, 41, 0, - 0, 26, 0, 0, 31, 32, 24, 18, 202, 0, - 28, 0, 27, 0, 45, 0, 0, 0, 239, 43, - 29, 0, 0, 0, 0, 0, 0, 0, 0, 46, - 47, 0, 34, 0, 35, 0, 0, 0, 240, 43, - 29, 0, 0, 0, 0, 0, 0, 0, 0, 46, - 47, 38, 34, 0, 35, 0, 0, 0, 0, 42, - 23, 44, 30, 36, 39, 22, 0, 33, 0, 37, - 41, 38, 0, 26, 0, 0, 31, 32, 24, 42, - 23, 44, 30, 36, 39, 22, 173, 33, 0, 37, - 41, 0, 0, 99, 0, 0, 31, 32, 24, 0, - 18, 200, 0, 28, 0, 27, 171, 45, 0, 0, - 0, 43, 29, 0, 0, 0, 0, 0, 0, 0, - 18, 46, 47, 28, 34, 27, 35, 45, 0, 0, - 0, 43, 29, 0, 0, 0, 0, 0, 0, 0, - 0, 46, 47, 38, 34, 0, 35, 0, 0, 0, - 0, 42, 23, 44, 30, 36, 39, 22, 252, 33, - 0, 37, 41, 38, 0, 26, 0, 0, 31, 32, - 24, 42, 23, 44, 30, 36, 39, 22, 0, 33, - 0, 37, 41, 43, 29, 26, 0, 0, 31, 32, - 24, 0, 18, 46, 47, 28, 34, 27, 35, 45, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, - 0, 0, 0, 42, 23, 44, 30, 36, 39, 22, - 0, 33, 0, 37, 41, 0, 0, 26, 0, 0, - 31, 32, 24, 0, 18, 0, 0, 28, 0, 27, - 0, 45, 0, 0, 0, 43, 29, 0, 0, 0, - 0, 0, 0, 0, 281, 46, 47, 28, 34, 27, - 35, 45, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, - 0, 0, 0, 0, 0, 42, 23, 44, 30, 36, - 39, 22, 0, 33, 0, 37, 41, 0, 0, 26, - 0, 0, 31, 32, 24, 0, 160, 0, 0, 28, - 0, 27, 0, 45, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, - 0, 0, 28, 173, 27, 0, 45, 0, 43, 29, - 0, 0, 0, 0, 0, 0, 0, 0, 46, 47, - 0, 34, 0, 35, 0, 0, 0, 0, 43, 29, - 0, 0, 0, 0, 0, 0, 0, 0, 46, 47, - 38, 34, 0, 35, 0, 0, 0, 0, 42, 23, - 44, 30, 36, 39, 22, 0, 33, 0, 37, 41, - 38, 0, 26, 0, 0, 31, 32, 24, 42, 23, - 44, 30, 36, 39, 22, 171, 33, 0, 37, 41, - 0, 0, 26, 0, 0, 31, 32, 24, 101, 0, - 0, 28, 0, 27, 0, 0, 0, 0, 0, 0, - 43, 29, 0, 0, 0, 0, 0, 0, 0, 0, - 46, 47, 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, 23, 44, 30, 36, 39, 22, 0, 33, 0, - 37, 41, 43, 29, 26, 0, 0, 31, 32, 24, - 0, 0, 46, 47, 0, 34, 0, 35, 0, 0, - 0, 0, 43, 29, 0, 0, 0, 0, 0, 0, - 0, 0, 46, 47, 38, 34, 0, 35, 0, 0, - 0, 0, 42, 23, 44, 30, 36, 39, 22, 0, - 33, 0, 37, 41, 38, 0, 26, 0, 0, 31, - 32, 24, 42, 23, 44, 30, 36, 39, 22, 0, - 33, 0, 37, 41, 43, 29, 26, 0, 0, 31, - 32, 24, 0, 0, 46, 47, 0, 34, 0, 35, - 0, 0, 0, 0, 0, 0, 0, 43, 29, 0, - 0, 0, 0, 0, 0, 0, 38, 46, 47, 0, - 34, 0, 35, 0, 42, 23, 44, 30, 36, 39, - 22, 0, 33, 0, 37, 41, 0, 0, 26, 38, - 0, 31, 32, 24, 0, 0, 0, 42, 23, 44, - 30, 36, 39, 22, 0, 33, 0, 37, 41, 0, - 0, 26, 0, 0, 31, 32, 24, 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, 43, 29, 0, 0, - 0, 0, 0, 0, 0, 0, 46, 47, 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, 23, 44, 30, - 36, 39, 22, 0, 33, 0, 37, 41, 0, 0, - 99, 0, 0, 31, 32, 24 }; -int yypact[]={ - - 15, -1000, -1000, -1000, 3047, 20, -1000, -1000, 12, -1000, - 45, 370, -33, -33, -291, 2547, -1000, -304, 3904, -1000, - -23, 3, -1000, -1000, 4088, -1000, 3999, 4088, 4088, 125, - 124, -275, -275, -282, 123, 121, -1000, 120, 118, -1000, - 116, 115, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 3047, 370, 3904, -1000, 955, -1000, 4, 3904, 4, -176, - 3359, -1000, 1015, 370, 4, 3359, 4, -1000, -183, -1000, - 114, 113, 3976, -245, 2547, -1000, 108, -1000, -1000, 370, - 370, 105, -1000, -1000, 3904, 3852, 3780, 3904, 3904, 3904, - 3904, 3904, 3904, 3904, -245, -319, -23, -1000, -1000, 4088, - -337, 3904, 3904, -1000, -1000, 93, 1525, 4088, 4088, 4088, - 4088, 4088, 4088, 3904, -1000, -1000, -334, -334, -334, 3760, - 3667, -1000, -1000, -228, 4088, 3904, 3904, 3904, 3904, 3904, - 3904, -317, -1000, 814, -33, -1000, -1000, -1000, -179, -183, - -1000, 1452, -1000, -1000, 1015, 1452, -1000, -286, 753, -1000, - 1452, -1000, -1000, 1015, -1000, -179, 2857, 3904, -66, 61, - 3904, 2948, -307, -1000, -23, 2, 3904, 693, 632, -298, - 2455, -1000, 2638, -1000, 2720, 2972, 2972, 2972, 2972, 2972, - 2972, -1000, 2972, -1000, -275, 2330, 2547, -236, 3431, -1000, - 3431, -1000, -16, -16, -334, -334, -334, -334, 48, 2547, - -1000, 92, -1000, 91, 4088, -23, 2238, 2238, 2238, 80, - 61, 2238, 2238, 52, -1000, 370, -1000, -1000, -1000, -1000, - -1000, 491, -1000, -182, -1000, -1000, -1000, 37, -46, -1000, - 2144, 4088, 4088, 4088, 3595, 76, 3924, 3543, 3523, 3924, - -245, -23, 3924, 3904, 2144, -1000, -1000, 75, -1000, 3904, - -1000, -245, -1000, 2547, 2547, 3431, -1000, -1000, -1000, -23, - 3431, 3431, -202, -1000, 3431, 3431, 3431, -1000, 431, -325, - -1000, -1000, -1000, 10, -245, -193, -1000, -23, -23, -23, - 2948, 3904, -243, 2797, 3212, 3451, -1000, 2972, -1000, 2948, - 47, -193, -193, -240, 2547, -1000, 2547, 2058, 98, 97, - 1988, 62, 1378, 1296, 1128, -1000, 104, 3904, -183, 74, - -1000, 60, -245, 3924, -1000, -33, -1000, -1000, -1000, -1000, - -1000, 3431, -1000, -1000, -252, -1000, -252, 3431, -1000, 3904, - 1892, 2857, -193, -243, -1000, 2948, 370, 1806, 86, 82, - 81, 1716, 1628, -183, 74, 1015, 273, -1000, -1000, -1000, - -1000, -1000, 4, 2857, -193, -1000, -1000, -1000, 74, 1015, - -193, -1000, 1015, -1000 }; -int yypgo[]={ - - 0, 220, 3337, 282, 64, 219, 129, 218, 199, 826, - 97, 98, 216, 157, 2, 5, 1382, 50, 0, 194, - 211, 210, 206, 204, 203, 202, 184, 501, 12, 2248, - 49, 56, 259, 182, 201, 198, 197, 195, 192, 191, - 190, 188, 174, 172, 170, 1, 169, 167, 166 }; -int yyr1[]={ - - 0, 36, 36, 32, 32, 33, 33, 29, 29, 37, - 37, 38, 38, 39, 22, 40, 22, 41, 22, 20, - 20, 23, 27, 27, 30, 30, 31, 31, 26, 26, - 15, 15, 1, 1, 10, 11, 11, 11, 11, 11, - 11, 11, 42, 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, 35, 35, 25, 25, 25, - 25, 43, 43, 9, 9, 44, 13, 28, 28, 14, - 14, 14, 14, 14, 14, 14, 14, 45, 45, 16, - 16, 16, 46, 47, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 48, 16, 16, 17, 17, - 34, 34, 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, 18, 21, 21, 21, - 19, 19, 19, 24 }; -int 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, 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, 3, 5, 1, 3, 7, - 3, 3, 3, 9 }; -int yychk[]={ - - -1000, -36, -1, 256, -26, -25, 263, 59, -12, -11, - -10, -27, 261, 262, 297, -2, 123, -18, 40, -9, - -8, -19, 334, 329, 347, -13, 342, 45, 43, 289, - 331, 345, 346, 336, 301, 303, 332, 338, 320, 333, - -34, 339, 328, 288, 330, 47, 298, 299, 263, 59, - -26, -27, 44, 263, -17, -16, 290, 291, 292, -37, - 295, -22, -23, -27, 304, 337, -14, -24, 59, 294, - 296, 300, -35, 293, -2, 256, 340, 318, 319, -27, - -27, -20, 328, 331, 63, -33, -32, 281, 282, 283, - 284, 285, 286, 267, 287, 124, -8, 279, 278, 342, - -18, 40, 311, 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, -44, -11, -17, -10, 125, -16, -45, -30, 59, - 263, -2, -45, 263, -46, -2, -45, -16, -17, -45, - -2, -45, -45, -48, -31, -30, 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, -29, 44, - -29, 41, -8, -8, -8, -8, -8, -8, -6, -2, - 41, -6, 41, -6, 285, -8, -2, -2, -2, -6, - -13, -2, -2, 335, 125, -27, 263, -31, -45, -16, - -45, -38, 321, -43, 125, -45, -16, -15, -19, -14, - -2, 124, 280, 283, -29, -4, 63, -33, -32, 267, - 287, -8, 311, 91, -2, 125, 125, -21, 328, 58, - -18, 287, 263, -2, -2, -29, 93, 41, 41, -8, - -29, -29, -29, 41, -29, -29, -29, 47, -17, -47, - 263, -16, 263, 59, 287, -28, 41, -8, -8, -8, - -3, 40, 41, -3, -3, -3, -13, -3, -19, -3, - -6, -28, -28, -29, -2, -19, -2, -2, -13, -13, - -2, -19, -2, -2, -2, 125, 340, -31, 59, -19, - 263, -4, 287, 58, 93, -42, 328, 41, 41, 41, - 41, -29, 41, 41, -29, 41, -29, -29, 41, 40, - -2, -31, -28, 41, -19, -3, -27, -2, -13, -18, - -18, -2, -2, 59, -15, -41, -17, 41, 41, 41, - 41, 41, 41, -31, -28, -16, 125, -45, -15, -40, - -28, -16, -39, -16 }; -int yydef[]={ - - -2, -2, 1, 2, 32, 29, 87, 88, 28, 44, - 35, 0, 0, 0, 0, 34, 22, 171, 0, 76, - 77, 172, 174, 175, 0, 93, 0, 0, 0, 143, - 0, 0, 0, 153, 0, 0, 159, 0, 0, 164, - 0, 0, 180, 181, 182, 95, 130, 131, 89, 90, - 33, 0, 0, 23, 0, 128, 0, 0, 0, 112, - 0, 117, 0, 0, 0, 0, 0, 125, 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, - 171, 0, 0, 148, 149, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 176, 94, 140, 138, 139, 0, - 0, 146, 147, 152, 0, 0, 0, 0, 0, 0, - 0, 0, 45, 0, 37, 39, 129, 109, 107, 26, - 24, 0, 111, 10, 0, 0, 116, 119, 0, 121, - 0, 123, 124, 0, 127, 27, -2, 0, 102, 83, - 0, 80, 171, 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, 156, 132, 133, 134, 135, 136, 137, 0, 46, - 141, 0, 144, 0, 0, 151, 0, 0, 0, 0, - 93, 0, 0, 0, 36, 0, 25, 108, 110, 113, - 115, 0, 11, 120, 91, 122, 126, 0, 172, 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, 173, 142, 145, 150, - 0, 0, 0, 163, 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, 154, 155, 157, - 158, 0, 162, 165, 0, 166, 0, 0, 170, 0, - 0, -2, 17, 0, 55, 49, 0, 0, 93, 0, - 0, 0, 0, 26, 0, 0, 0, 160, 161, 167, - 168, 169, 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 - -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 */ -}; - -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 : 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 : 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/lib/yaccpar" -/* @(#)yaccpar 1.10 89/04/04 SMI; from S5R3 1.10 */ - -/* -** Skeleton parser driver for yacc output -*/ - -/* -** yacc user known macros and defines -*/ -#define YYERROR goto yyerrlab -#define YYACCEPT { free(yys); free(yyv); return(0); } -#define YYABORT { free(yys); free(yyv); 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) -#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 (-1000) - -/* -** static variables used by the parser -*/ -static YYSTYPE *yyv; /* value stack */ -static int *yys; /* state stack */ - -static YYSTYPE *yypv; /* top of value stack */ -static int *yyps; /* top of state stack */ - -static int yystate; /* current state */ -static int yytmp; /* extra var (lasts between blocks) */ - -int yynerrs; /* number of errors */ - -int yyerrflag; /* error recovery flag */ -int yychar; /* current input token number */ - - -/* -** yyparse - return 0 if worked, 1 if syntax error not recovered from -*/ -int -yyparse(void) -{ - register YYSTYPE *yypvt; /* top of value stack for $vars */ - unsigned yymaxdepth = YYMAXDEPTH; - - /* - ** Initialize externals - yyparse may be called more than once - */ - yyv = (YYSTYPE*)malloc(yymaxdepth*sizeof(YYSTYPE)); - yys = (int*)malloc(yymaxdepth*sizeof(int)); - if (!yyv || !yys) - { - yyerror( "out of memory" ); - return(1); - } - 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; - - (void)printf( "State %d, token ", yy_state ); - if ( yychar == 0 ) - (void)printf( "end-of-file\n" ); - else if ( yychar < 0 ) - (void)printf( "-none-\n" ); - else - { - for ( yy_i = 0; yytoks[yy_i].t_val >= 0; - yy_i++ ) - { - if ( yytoks[yy_i].t_val == yychar ) - break; - } - (void)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 - */ - int yyps_index = (yy_ps - yys); - int yypv_index = (yy_pv - yyv); - int yypvt_index = (yypvt - yyv); - yymaxdepth += YYMAXDEPTH; - yyv = (YYSTYPE*)realloc((char*)yyv, - yymaxdepth * sizeof(YYSTYPE)); - yys = (int*)realloc((char*)yys, - yymaxdepth * sizeof(int)); - if (!yyv || !yys) - { - yyerror( "yacc stack overflow" ); - return(1); - } - 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; - - (void)printf( "Received token " ); - if ( yychar == 0 ) - (void)printf( "end-of-file\n" ); - else if ( yychar < 0 ) - (void)printf( "-none-\n" ); - else - { - for ( yy_i = 0; yytoks[yy_i].t_val >= 0; - yy_i++ ) - { - if ( yytoks[yy_i].t_val == yychar ) - break; - } - (void)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; - - (void)printf( "Received token " ); - if ( yychar == 0 ) - (void)printf( "end-of-file\n" ); - else if ( yychar < 0 ) - (void)printf( "-none-\n" ); - else - { - for ( yy_i = 0; - yytoks[yy_i].t_val >= 0; - yy_i++ ) - { - if ( yytoks[yy_i].t_val - == yychar ) - { - break; - } - } - (void)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( "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; - 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 ) - (void)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; - - (void)printf( "Error recovery discards " ); - if ( yychar == 0 ) - (void)printf( "token end-of-file\n" ); - else if ( yychar < 0 ) - (void)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; - } - } - (void)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 ) - (void)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 94 "awk.g.y" -{ if (errorflag==0) - winner = (Node *)stat3(PROGRAM, beginloc, yypvt[-0].p, endloc); } break; -case 2: -# line 96 "awk.g.y" -{ yyclearin; bracecheck(); ERROR "bailing out" SYNTAX; } break; -case 13: -# line 120 "awk.g.y" -{inloop++;} break; -case 14: -# line 121 "awk.g.y" -{ --inloop; yyval.p = stat4(FOR, yypvt[-9].p, notnull(yypvt[-6].p), yypvt[-3].p, yypvt[-0].p); } break; -case 15: -# line 122 "awk.g.y" -{inloop++;} break; -case 16: -# line 123 "awk.g.y" -{ --inloop; yyval.p = stat4(FOR, yypvt[-7].p, NIL, yypvt[-3].p, yypvt[-0].p); } break; -case 17: -# line 124 "awk.g.y" -{inloop++;} break; -case 18: -# line 125 "awk.g.y" -{ --inloop; yyval.p = stat3(IN, yypvt[-5].p, makearr(yypvt[-3].p), yypvt[-0].p); } break; -case 19: -# line 129 "awk.g.y" -{ setfname(yypvt[-0].cp); } break; -case 20: -# line 130 "awk.g.y" -{ setfname(yypvt[-0].cp); } break; -case 21: -# line 134 "awk.g.y" -{ yyval.p = notnull(yypvt[-1].p); } break; -case 26: -# line 146 "awk.g.y" -{ yyval.i = 0; } break; -case 28: -# line 151 "awk.g.y" -{ yyval.i = 0; } break; -case 30: -# line 157 "awk.g.y" -{ yyval.p = 0; } break; -case 32: -# line 162 "awk.g.y" -{ yyval.p = 0; } break; -case 33: -# line 163 "awk.g.y" -{ yyval.p = yypvt[-1].p; } break; -case 34: -# line 167 "awk.g.y" -{ yyval.p = notnull(yypvt[-0].p); } break; -case 35: -# line 171 "awk.g.y" -{ yyval.p = stat2(PASTAT, yypvt[-0].p, stat2(PRINT, rectonode(), NIL)); } break; -case 36: -# line 172 "awk.g.y" -{ yyval.p = stat2(PASTAT, yypvt[-3].p, yypvt[-1].p); } break; -case 37: -# line 173 "awk.g.y" -{ yyval.p = pa2stat(yypvt[-2].p, yypvt[-0].p, stat2(PRINT, rectonode(), NIL)); } break; -case 38: -# line 174 "awk.g.y" -{ yyval.p = pa2stat(yypvt[-5].p, yypvt[-3].p, yypvt[-1].p); } break; -case 39: -# line 175 "awk.g.y" -{ yyval.p = stat2(PASTAT, NIL, yypvt[-1].p); } break; -case 40: -# line 177 "awk.g.y" -{ beginloc = linkum(beginloc, yypvt[-1].p); yyval.p = 0; } break; -case 41: -# line 179 "awk.g.y" -{ endloc = linkum(endloc, yypvt[-1].p); yyval.p = 0; } break; -case 42: -# line 180 "awk.g.y" -{infunc++;} break; -case 43: -# line 181 "awk.g.y" -{ infunc--; curfname=0; defn((Cell *)yypvt[-7].p, yypvt[-5].p, yypvt[-1].p); yyval.p = 0; } break; -case 45: -# line 186 "awk.g.y" -{ yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break; -case 47: -# line 191 "awk.g.y" -{ yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break; -case 48: -# line 195 "awk.g.y" -{ yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break; -case 49: -# line 197 "awk.g.y" -{ yyval.p = op3(CONDEXPR, notnull(yypvt[-4].p), yypvt[-2].p, yypvt[-0].p); } break; -case 50: -# line 199 "awk.g.y" -{ yyval.p = op2(BOR, notnull(yypvt[-2].p), notnull(yypvt[-0].p)); } break; -case 51: -# line 201 "awk.g.y" -{ yyval.p = op2(AND, notnull(yypvt[-2].p), notnull(yypvt[-0].p)); } break; -case 52: -# line 202 "awk.g.y" -{ yyval.p = op3(yypvt[-1].i, NIL, yypvt[-2].p, (Node*)makedfa(yypvt[-0].s, 0)); } break; -case 53: -# line 204 "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 54: -# line 208 "awk.g.y" -{ yyval.p = op2(INTEST, yypvt[-2].p, makearr(yypvt[-0].p)); } break; -case 55: -# line 209 "awk.g.y" -{ yyval.p = op2(INTEST, yypvt[-3].p, makearr(yypvt[-0].p)); } break; -case 56: -# line 210 "awk.g.y" -{ yyval.p = op2(CAT, yypvt[-1].p, yypvt[-0].p); } break; -case 59: -# line 216 "awk.g.y" -{ yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break; -case 60: -# line 218 "awk.g.y" -{ yyval.p = op3(CONDEXPR, notnull(yypvt[-4].p), yypvt[-2].p, yypvt[-0].p); } break; -case 61: -# line 220 "awk.g.y" -{ yyval.p = op2(BOR, notnull(yypvt[-2].p), notnull(yypvt[-0].p)); } break; -case 62: -# line 222 "awk.g.y" -{ yyval.p = op2(AND, notnull(yypvt[-2].p), notnull(yypvt[-0].p)); } break; -case 63: -# line 223 "awk.g.y" -{ yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break; -case 64: -# line 224 "awk.g.y" -{ yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break; -case 65: -# line 225 "awk.g.y" -{ yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break; -case 66: -# line 226 "awk.g.y" -{ yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break; -case 67: -# line 227 "awk.g.y" -{ yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break; -case 68: -# line 228 "awk.g.y" -{ yyval.p = op2(yypvt[-1].i, yypvt[-2].p, yypvt[-0].p); } break; -case 69: -# line 229 "awk.g.y" -{ yyval.p = op3(yypvt[-1].i, NIL, yypvt[-2].p, (Node*)makedfa(yypvt[-0].s, 0)); } break; -case 70: -# line 231 "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 71: -# line 235 "awk.g.y" -{ yyval.p = op2(INTEST, yypvt[-2].p, makearr(yypvt[-0].p)); } break; -case 72: -# line 236 "awk.g.y" -{ yyval.p = op2(INTEST, yypvt[-3].p, makearr(yypvt[-0].p)); } break; -case 73: -# line 237 "awk.g.y" -{ yyval.p = op3(GETLINE, yypvt[-0].p, (Node*)yypvt[-2].i, yypvt[-3].p); } break; -case 74: -# line 238 "awk.g.y" -{ yyval.p = op3(GETLINE, (Node*)0, (Node*)yypvt[-1].i, yypvt[-2].p); } break; -case 75: -# line 239 "awk.g.y" -{ yyval.p = op2(CAT, yypvt[-1].p, yypvt[-0].p); } break; -case 78: -# line 245 "awk.g.y" -{ yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break; -case 79: -# line 246 "awk.g.y" -{ yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break; -case 81: -# line 251 "awk.g.y" -{ yyval.p = linkum(yypvt[-2].p, yypvt[-0].p); } break; -case 82: -# line 255 "awk.g.y" -{ yyval.p = rectonode(); } break; -case 84: -# line 257 "awk.g.y" -{ yyval.p = yypvt[-1].p; } break; -case 93: -# line 274 "awk.g.y" -{ yyval.p = op3(MATCH, NIL, rectonode(), (Node*)makedfa(yypvt[-0].s, 0)); } break; -case 94: -# line 275 "awk.g.y" -{ yyval.p = op1(NOT, notnull(yypvt[-0].p)); } break; -case 95: -# line 279 "awk.g.y" -{startreg();} break; -case 96: -# line 279 "awk.g.y" -{ yyval.s = yypvt[-1].s; } break; -case 99: -# line 287 "awk.g.y" -{ yyval.p = stat3(yypvt[-3].i, yypvt[-2].p, (Node *) yypvt[-1].i, yypvt[-0].p); } break; -case 100: -# line 288 "awk.g.y" -{ yyval.p = stat3(yypvt[-3].i, yypvt[-2].p, (Node *) yypvt[-1].i, yypvt[-0].p); } break; -case 101: -# line 289 "awk.g.y" -{ yyval.p = stat3(yypvt[-3].i, yypvt[-2].p, (Node *) yypvt[-1].i, yypvt[-0].p); } break; -case 102: -# line 290 "awk.g.y" -{ yyval.p = stat3(yypvt[-1].i, yypvt[-0].p, NIL, NIL); } break; -case 103: -# line 291 "awk.g.y" -{ yyval.p = stat2(DELETE, makearr(yypvt[-3].p), yypvt[-1].p); } break; -case 104: -# line 292 "awk.g.y" -{ yyclearin; ERROR "you can only delete array[element]" SYNTAX; yyval.p = stat1(DELETE, yypvt[-0].p); } break; -case 105: -# line 293 "awk.g.y" -{ yyval.p = exptostat(yypvt[-0].p); } break; -case 106: -# line 294 "awk.g.y" -{ yyclearin; ERROR "illegal statement" SYNTAX; } break; -case 109: -# line 302 "awk.g.y" -{ if (!inloop) ERROR "break illegal outside of loops" SYNTAX; - yyval.p = stat1(BREAK, NIL); } break; -case 110: -# line 304 "awk.g.y" -{ yyval.p = stat1(CLOSE, yypvt[-1].p); } break; -case 111: -# line 305 "awk.g.y" -{ if (!inloop) ERROR "continue illegal outside of loops" SYNTAX; - yyval.p = stat1(CONTINUE, NIL); } break; -case 112: -# line 307 "awk.g.y" -{inloop++;} break; -case 113: -# line 307 "awk.g.y" -{--inloop;} break; -case 114: -# line 308 "awk.g.y" -{ yyval.p = stat2(DO, yypvt[-6].p, notnull(yypvt[-2].p)); } break; -case 115: -# line 309 "awk.g.y" -{ yyval.p = stat1(EXIT, yypvt[-1].p); } break; -case 116: -# line 310 "awk.g.y" -{ yyval.p = stat1(EXIT, NIL); } break; -case 118: -# line 312 "awk.g.y" -{ yyval.p = stat3(IF, yypvt[-3].p, yypvt[-2].p, yypvt[-0].p); } break; -case 119: -# line 313 "awk.g.y" -{ yyval.p = stat3(IF, yypvt[-1].p, yypvt[-0].p, NIL); } break; -case 120: -# line 314 "awk.g.y" -{ yyval.p = yypvt[-1].p; } break; -case 121: -# line 315 "awk.g.y" -{ if (infunc) - ERROR "next is illegal inside a function" SYNTAX; - yyval.p = stat1(NEXT, NIL); } break; -case 122: -# line 318 "awk.g.y" -{ yyval.p = stat1(RETURN, yypvt[-1].p); } break; -case 123: -# line 319 "awk.g.y" -{ yyval.p = stat1(RETURN, NIL); } break; -case 125: -# line 321 "awk.g.y" -{inloop++;} break; -case 126: -# line 321 "awk.g.y" -{ --inloop; yyval.p = stat2(WHILE, yypvt[-2].p, yypvt[-0].p); } break; -case 127: -# line 322 "awk.g.y" -{ yyval.p = 0; } break; -case 129: -# line 327 "awk.g.y" -{ yyval.p = linkum(yypvt[-1].p, yypvt[-0].p); } break; -case 132: -# line 335 "awk.g.y" -{ yyval.p = op2(ADD, yypvt[-2].p, yypvt[-0].p); } break; -case 133: -# line 336 "awk.g.y" -{ yyval.p = op2(MINUS, yypvt[-2].p, yypvt[-0].p); } break; -case 134: -# line 337 "awk.g.y" -{ yyval.p = op2(MULT, yypvt[-2].p, yypvt[-0].p); } break; -case 135: -# line 338 "awk.g.y" -{ yyval.p = op2(DIVIDE, yypvt[-2].p, yypvt[-0].p); } break; -case 136: -# line 339 "awk.g.y" -{ yyval.p = op2(MOD, yypvt[-2].p, yypvt[-0].p); } break; -case 137: -# line 340 "awk.g.y" -{ yyval.p = op2(POWER, yypvt[-2].p, yypvt[-0].p); } break; -case 138: -# line 341 "awk.g.y" -{ yyval.p = op1(UMINUS, yypvt[-0].p); } break; -case 139: -# line 342 "awk.g.y" -{ yyval.p = yypvt[-0].p; } break; -case 140: -# line 343 "awk.g.y" -{ yyval.p = op1(NOT, notnull(yypvt[-0].p)); } break; -case 141: -# line 344 "awk.g.y" -{ yyval.p = op2(BLTIN, (Node *) yypvt[-2].i, rectonode()); } break; -case 142: -# line 345 "awk.g.y" -{ yyval.p = op2(BLTIN, (Node *) yypvt[-3].i, yypvt[-1].p); } break; -case 143: -# line 346 "awk.g.y" -{ yyval.p = op2(BLTIN, (Node *) yypvt[-0].i, rectonode()); } break; -case 144: -# line 347 "awk.g.y" -{ yyval.p = op2(CALL, valtonode(yypvt[-2].cp,CVAR), NIL); } break; -case 145: -# line 348 "awk.g.y" -{ yyval.p = op2(CALL, valtonode(yypvt[-3].cp,CVAR), yypvt[-1].p); } break; -case 146: -# line 349 "awk.g.y" -{ yyval.p = op1(PREDECR, yypvt[-0].p); } break; -case 147: -# line 350 "awk.g.y" -{ yyval.p = op1(PREINCR, yypvt[-0].p); } break; -case 148: -# line 351 "awk.g.y" -{ yyval.p = op1(POSTDECR, yypvt[-1].p); } break; -case 149: -# line 352 "awk.g.y" -{ yyval.p = op1(POSTINCR, yypvt[-1].p); } break; -case 150: -# line 353 "awk.g.y" -{ yyval.p = op3(GETLINE, yypvt[-2].p, (Node *)yypvt[-1].i, yypvt[-0].p); } break; -case 151: -# line 354 "awk.g.y" -{ yyval.p = op3(GETLINE, NIL, (Node *)yypvt[-1].i, yypvt[-0].p); } break; -case 152: -# line 355 "awk.g.y" -{ yyval.p = op3(GETLINE, yypvt[-0].p, NIL, NIL); } break; -case 153: -# line 356 "awk.g.y" -{ yyval.p = op3(GETLINE, NIL, NIL, NIL); } break; -case 154: -# line 358 "awk.g.y" -{ yyval.p = op2(INDEX, yypvt[-3].p, yypvt[-1].p); } break; -case 155: -# line 360 "awk.g.y" -{ ERROR "index() doesn't permit regular expressions" SYNTAX; - yyval.p = op2(INDEX, yypvt[-3].p, (Node*)yypvt[-1].s); } break; -case 156: -# line 362 "awk.g.y" -{ yyval.p = yypvt[-1].p; } break; -case 157: -# line 364 "awk.g.y" -{ yyval.p = op3(MATCHFCN, NIL, yypvt[-3].p, (Node*)makedfa(yypvt[-1].s, 1)); } break; -case 158: -# line 366 "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 159: -# line 370 "awk.g.y" -{ yyval.p = valtonode(yypvt[-0].cp, CCON); } break; -case 160: -# line 372 "awk.g.y" -{ yyval.p = op4(SPLIT, yypvt[-5].p, makearr(yypvt[-3].p), yypvt[-1].p, (Node*)STRING); } break; -case 161: -# line 374 "awk.g.y" -{ yyval.p = op4(SPLIT, yypvt[-5].p, makearr(yypvt[-3].p), (Node*)makedfa(yypvt[-1].s, 1), (Node *)REGEXPR); } break; -case 162: -# line 376 "awk.g.y" -{ yyval.p = op4(SPLIT, yypvt[-3].p, makearr(yypvt[-1].p), NIL, (Node*)STRING); } break; -case 163: -# line 377 "awk.g.y" -{ yyval.p = op1(yypvt[-3].i, yypvt[-1].p); } break; -case 164: -# line 378 "awk.g.y" -{ yyval.p = valtonode(yypvt[-0].cp, CCON); } break; -case 165: -# line 380 "awk.g.y" -{ yyval.p = op4(yypvt[-5].i, NIL, (Node*)makedfa(yypvt[-3].s, 1), yypvt[-1].p, rectonode()); } break; -case 166: -# line 382 "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 167: -# line 387 "awk.g.y" -{ yyval.p = op4(yypvt[-7].i, NIL, (Node*)makedfa(yypvt[-5].s, 1), yypvt[-3].p, yypvt[-1].p); } break; -case 168: -# line 389 "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 169: -# line 394 "awk.g.y" -{ yyval.p = op3(SUBSTR, yypvt[-5].p, yypvt[-3].p, yypvt[-1].p); } break; -case 170: -# line 396 "awk.g.y" -{ yyval.p = op3(SUBSTR, yypvt[-3].p, yypvt[-1].p, NIL); } break; -case 173: -# line 402 "awk.g.y" -{ yyval.p = op2(ARRAY, makearr(yypvt[-3].p), yypvt[-1].p); } break; -case 174: -# line 403 "awk.g.y" -{ yyval.p = valtonode(yypvt[-0].cp, CFLD); } break; -case 175: -# line 404 "awk.g.y" -{ yyval.p = op1(INDIRECT, valtonode(yypvt[-0].cp, CVAR)); } break; -case 176: -# line 405 "awk.g.y" -{ yyval.p = op1(INDIRECT, yypvt[-0].p); } break; -case 177: -# line 409 "awk.g.y" -{ arglist = yyval.p = 0; } break; -case 178: -# line 410 "awk.g.y" -{ arglist = yyval.p = valtonode(yypvt[-0].cp,CVAR); } break; -case 179: -# line 411 "awk.g.y" -{ arglist = yyval.p = linkum(yypvt[-2].p,valtonode(yypvt[-0].cp,CVAR)); } break; -case 180: -# line 415 "awk.g.y" -{ yyval.p = valtonode(yypvt[-0].cp, CVAR); } break; -case 181: -# line 416 "awk.g.y" -{ yyval.p = op1(ARG, (Node *) yypvt[-0].i); } break; -case 182: -# line 417 "awk.g.y" -{ yyval.p = op1(VARNF, (Node *) yypvt[-0].cp); } break; -case 183: -# line 422 "awk.g.y" -{ yyval.p = notnull(yypvt[-1].p); } break; - } - goto yystack; /* reset registers in driver code */ -} + END OF ARCHIVE