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