1 2 #line 26 "/sys/src/cmd/awk/awkgram.y" 3 #include <stdio.h> 4 #include <string.h> 5 #include "awk.h" 6 7 #define makedfa(a,b) compre(a) 8 9 void checkdup(Node *list, Cell *item); 10 int yywrap(void) { return(1); } 11 12 Node *beginloc = 0; 13 Node *endloc = 0; 14 int infunc = 0; /* = 1 if in arglist or body of func */ 15 int inloop = 0; /* = 1 if in while, for, do */ 16 char *curfname = 0; /* current function name */ 17 Node *arglist = 0; /* list of args for current function */ 18 19 #line 43 "/sys/src/cmd/awk/awkgram.y" 20 typedef union { 21 Node *p; 22 Cell *cp; 23 int i; 24 char *s; 25 } YYSTYPE; 26 extern int yyerrflag; 27 #ifndef YYMAXDEPTH 28 #define YYMAXDEPTH 150 29 #endif 30 YYSTYPE yylval; 31 YYSTYPE yyval; 32 #define FIRSTTOKEN 57346 33 #define PROGRAM 57347 34 #define PASTAT 57348 35 #define PASTAT2 57349 36 #define XBEGIN 57350 37 #define XEND 57351 38 #define NL 57352 39 #define ARRAY 57353 40 #define MATCH 57354 41 #define NOTMATCH 57355 42 #define MATCHOP 57356 43 #define FINAL 57357 44 #define DOT 57358 45 #define ALL 57359 46 #define CCL 57360 47 #define NCCL 57361 48 #define CHAR 57362 49 #define OR 57363 50 #define STAR 57364 51 #define QUEST 57365 52 #define PLUS 57366 53 #define AND 57367 54 #define BOR 57368 55 #define APPEND 57369 56 #define EQ 57370 57 #define GE 57371 58 #define GT 57372 59 #define LE 57373 60 #define LT 57374 61 #define NE 57375 62 #define IN 57376 63 #define ARG 57377 64 #define BLTIN 57378 65 #define BREAK 57379 66 #define CLOSE 57380 67 #define CONTINUE 57381 68 #define DELETE 57382 69 #define DO 57383 70 #define EXIT 57384 71 #define FOR 57385 72 #define FUNC 57386 73 #define SUB 57387 74 #define GSUB 57388 75 #define IF 57389 76 #define INDEX 57390 77 #define LSUBSTR 57391 78 #define MATCHFCN 57392 79 #define NEXT 57393 80 #define NEXTFILE 57394 81 #define ADD 57395 82 #define MINUS 57396 83 #define MULT 57397 84 #define DIVIDE 57398 85 #define MOD 57399 86 #define ASSIGN 57400 87 #define ASGNOP 57401 88 #define ADDEQ 57402 89 #define SUBEQ 57403 90 #define MULTEQ 57404 91 #define DIVEQ 57405 92 #define MODEQ 57406 93 #define POWEQ 57407 94 #define PRINT 57408 95 #define PRINTF 57409 96 #define SPRINTF 57410 97 #define ELSE 57411 98 #define INTEST 57412 99 #define CONDEXPR 57413 100 #define POSTINCR 57414 101 #define PREINCR 57415 102 #define POSTDECR 57416 103 #define PREDECR 57417 104 #define VAR 57418 105 #define IVAR 57419 106 #define VARNF 57420 107 #define CALL 57421 108 #define NUMBER 57422 109 #define STRING 57423 110 #define REGEXPR 57424 111 #define GETLINE 57425 112 #define RETURN 57426 113 #define SPLIT 57427 114 #define SUBSTR 57428 115 #define WHILE 57429 116 #define CAT 57430 117 #define NOT 57431 118 #define UMINUS 57432 119 #define POWER 57433 120 #define DECR 57434 121 #define INCR 57435 122 #define INDIRECT 57436 123 #define LASTTOKEN 57437 124 #define YYEOFCODE 1 125 #define YYERRCODE 2 126 127 #line 447 "/sys/src/cmd/awk/awkgram.y" 128 129 130 void setfname(Cell *p) 131 { 132 if (isarr(p)) 133 SYNTAX("%s is an array, not a function", p->nval); 134 else if (isfcn(p)) 135 SYNTAX("you can't define function %s more than once", p->nval); 136 curfname = p->nval; 137 } 138 139 int constnode(Node *p) 140 { 141 return isvalue(p) && ((Cell *) (p->narg[0]))->csub == CCON; 142 } 143 144 char *strnode(Node *p) 145 { 146 return ((Cell *)(p->narg[0]))->sval; 147 } 148 149 Node *notnull(Node *n) 150 { 151 switch (n->nobj) { 152 case LE: case LT: case EQ: case NE: case GT: case GE: 153 case BOR: case AND: case NOT: 154 return n; 155 default: 156 return op2(NE, n, nullnode); 157 } 158 } 159 160 void checkdup(Node *vl, Cell *cp) /* check if name already in list */ 161 { 162 char *s = cp->nval; 163 for ( ; vl; vl = vl->nnext) { 164 if (strcmp(s, ((Cell *)(vl->narg[0]))->nval) == 0) { 165 SYNTAX("duplicate argument %s", s); 166 break; 167 } 168 } 169 } 170 short yyexca[] = 171 {-1, 0, 172 1, 28, 173 8, 28, 174 9, 28, 175 12, 28, 176 13, 28, 177 16, 28, 178 45, 28, 179 46, 28, 180 54, 28, 181 55, 28, 182 56, 28, 183 58, 28, 184 60, 28, 185 78, 28, 186 86, 28, 187 87, 28, 188 88, 28, 189 89, 28, 190 90, 28, 191 91, 28, 192 95, 28, 193 97, 28, 194 98, 28, 195 101, 28, 196 102, 28, 197 105, 28, 198 108, 28, 199 109, 28, 200 110, 28, 201 -2, 0, 202 -1, 1, 203 1, -1, 204 -2, 0, 205 -1, 157, 206 15, 30, 207 -2, 0, 208 -1, 176, 209 14, 0, 210 24, 0, 211 38, 0, 212 39, 0, 213 40, 0, 214 41, 0, 215 42, 0, 216 43, 0, 217 44, 0, 218 -2, 63, 219 -1, 177, 220 14, 0, 221 24, 0, 222 38, 0, 223 39, 0, 224 40, 0, 225 41, 0, 226 42, 0, 227 43, 0, 228 44, 0, 229 -2, 64, 230 -1, 178, 231 14, 0, 232 24, 0, 233 38, 0, 234 39, 0, 235 40, 0, 236 41, 0, 237 42, 0, 238 43, 0, 239 44, 0, 240 -2, 65, 241 -1, 179, 242 14, 0, 243 24, 0, 244 38, 0, 245 39, 0, 246 40, 0, 247 41, 0, 248 42, 0, 249 43, 0, 250 44, 0, 251 -2, 66, 252 -1, 180, 253 14, 0, 254 24, 0, 255 38, 0, 256 39, 0, 257 40, 0, 258 41, 0, 259 42, 0, 260 43, 0, 261 44, 0, 262 -2, 67, 263 -1, 181, 264 14, 0, 265 24, 0, 266 38, 0, 267 39, 0, 268 40, 0, 269 41, 0, 270 42, 0, 271 43, 0, 272 44, 0, 273 -2, 68, 274 -1, 183, 275 14, 0, 276 24, 0, 277 38, 0, 278 39, 0, 279 40, 0, 280 41, 0, 281 42, 0, 282 43, 0, 283 44, 0, 284 -2, 70, 285 -1, 290, 286 24, 0, 287 44, 0, 288 -2, 53, 289 -1, 334, 290 17, 30, 291 -2, 0, 292 -1, 356, 293 17, 30, 294 -2, 0, 295 }; 296 #define YYNPROD 185 297 #define YYPRIVATE 57344 298 #define YYLAST 4170 299 short yyact[] = 300 { 301 17, 278, 254, 137, 244, 229, 102, 200, 53, 66, 302 24, 105, 42, 155, 103, 104, 100, 138, 112, 309, 303 54, 185, 215, 42, 100, 254, 100, 100, 100, 250, 304 224, 121, 122, 123, 9, 107, 82, 42, 315, 83, 305 162, 254, 107, 103, 104, 103, 104, 124, 253, 206, 306 42, 190, 245, 41, 22, 43, 113, 113, 279, 133, 307 317, 142, 10, 146, 41, 353, 43, 149, 150, 152, 308 153, 148, 352, 163, 136, 100, 42, 23, 41, 22, 309 43, 277, 147, 351, 132, 62, 156, 85, 168, 169, 310 11, 41, 22, 43, 322, 321, 50, 190, 79, 80, 311 100, 319, 23, 86, 182, 270, 259, 100, 100, 100, 312 100, 100, 100, 100, 134, 23, 276, 41, 233, 43, 313 108, 109, 110, 111, 332, 100, 112, 203, 205, 110, 314 111, 190, 190, 112, 140, 11, 211, 336, 325, 139, 315 212, 234, 100, 140, 235, 220, 100, 170, 311, 222, 316 190, 167, 100, 219, 136, 227, 279, 156, 190, 158, 317 190, 157, 190, 100, 285, 221, 266, 231, 261, 136, 318 130, 129, 100, 237, 100, 228, 100, 100, 100, 100, 319 100, 100, 100, 128, 100, 190, 252, 100, 100, 136, 320 136, 260, 190, 3, 100, 6, 127, 126, 188, 19, 321 7, 6, 100, 47, 313, 125, 7, 100, 48, 100, 322 100, 100, 120, 119, 100, 100, 51, 16, 16, 190, 323 217, 140, 275, 218, 143, 115, 271, 154, 272, 4, 324 144, 131, 318, 100, 100, 100, 100, 163, 49, 163, 325 163, 163, 163, 20, 274, 163, 348, 100, 294, 362, 326 239, 295, 289, 293, 365, 1, 100, 100, 72, 96, 327 39, 225, 5, 58, 67, 223, 240, 114, 61, 116, 328 117, 118, 164, 60, 301, 302, 249, 283, 81, 286, 329 287, 288, 290, 8, 100, 292, 159, 100, 100, 100, 330 310, 100, 136, 100, 156, 160, 314, 2, 100, 0, 331 100, 100, 0, 0, 100, 0, 100, 100, 100, 0, 332 0, 0, 0, 0, 335, 0, 165, 163, 96, 0, 333 0, 0, 0, 0, 0, 334, 0, 0, 342, 156, 334 343, 0, 0, 0, 100, 341, 0, 0, 0, 100, 335 347, 100, 0, 116, 231, 100, 100, 0, 349, 357, 336 96, 194, 195, 196, 197, 198, 199, 338, 0, 360, 337 356, 0, 361, 363, 156, 0, 231, 0, 207, 358, 338 136, 239, 0, 0, 239, 239, 239, 0, 239, 0, 339 239, 0, 0, 364, 0, 96, 366, 240, 0, 96, 340 240, 240, 240, 0, 240, 96, 240, 0, 0, 0, 341 258, 0, 0, 0, 339, 0, 243, 0, 0, 0, 342 0, 0, 0, 0, 0, 96, 0, 96, 21, 96, 343 96, 96, 96, 96, 96, 96, 239, 96, 0, 0, 344 96, 96, 0, 0, 0, 0, 164, 257, 164, 164, 345 164, 164, 240, 0, 164, 96, 0, 0, 0, 0, 346 262, 0, 96, 96, 96, 0, 0, 96, 96, 0, 347 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 348 0, 0, 0, 0, 0, 0, 96, 280, 281, 282, 349 165, 0, 165, 165, 165, 165, 0, 0, 165, 0, 350 96, 0, 166, 0, 0, 0, 0, 0, 0, 96, 351 96, 0, 0, 0, 0, 74, 189, 191, 0, 0, 352 15, 0, 0, 184, 0, 0, 164, 0, 0, 0, 353 0, 0, 0, 0, 106, 0, 0, 243, 0, 0, 354 243, 243, 243, 0, 243, 0, 243, 0, 0, 0, 355 0, 96, 0, 96, 96, 0, 0, 96, 0, 96, 356 96, 96, 0, 0, 0, 15, 0, 15, 0, 0, 357 165, 236, 141, 0, 0, 145, 0, 0, 0, 0, 358 0, 151, 0, 0, 0, 0, 230, 96, 0, 0, 359 0, 0, 243, 0, 96, 0, 0, 0, 96, 96, 360 171, 173, 175, 176, 177, 178, 179, 180, 181, 183, 361 0, 0, 0, 0, 0, 0, 0, 186, 187, 263, 362 264, 265, 0, 267, 268, 269, 0, 0, 0, 201, 363 0, 0, 0, 0, 0, 201, 201, 0, 0, 0, 364 0, 208, 209, 210, 201, 213, 214, 0, 189, 0, 365 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 366 296, 0, 0, 0, 0, 0, 0, 0, 241, 0, 367 0, 291, 0, 0, 232, 0, 0, 106, 0, 98, 368 97, 0, 298, 246, 0, 0, 0, 0, 242, 42, 369 28, 0, 0, 0, 304, 0, 0, 0, 0, 45, 370 46, 0, 33, 0, 34, 255, 312, 256, 0, 0, 371 0, 0, 0, 0, 0, 324, 327, 329, 330, 0, 372 0, 0, 37, 0, 0, 189, 0, 0, 0, 0, 373 41, 22, 43, 29, 35, 38, 0, 238, 316, 32, 374 0, 36, 40, 0, 337, 27, 26, 0, 0, 99, 375 0, 0, 30, 31, 23, 0, 0, 0, 0, 0, 376 0, 201, 0, 0, 0, 0, 0, 297, 0, 0, 377 0, 0, 0, 0, 299, 0, 0, 0, 0, 300, 378 303, 0, 0, 305, 306, 307, 0, 0, 0, 0, 379 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 380 106, 0, 0, 0, 0, 0, 75, 0, 0, 0, 381 0, 0, 0, 0, 0, 0, 16, 18, 0, 68, 382 44, 0, 359, 0, 0, 0, 333, 0, 0, 0, 383 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 384 340, 0, 0, 0, 0, 0, 344, 0, 345, 42, 385 28, 55, 56, 57, 73, 69, 59, 70, 0, 45, 386 46, 71, 33, 0, 34, 63, 64, 0, 0, 0, 387 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 388 77, 78, 37, 52, 0, 16, 18, 0, 68, 44, 389 41, 22, 43, 29, 35, 38, 0, 0, 0, 32, 390 65, 36, 40, 76, 0, 27, 26, 0, 0, 25, 391 0, 0, 30, 31, 23, 0, 0, 0, 42, 28, 392 55, 56, 57, 73, 69, 59, 70, 0, 45, 46, 393 71, 33, 0, 34, 63, 64, 0, 0, 0, 0, 394 0, 0, 75, 0, 0, 0, 0, 0, 0, 77, 395 78, 37, 16, 18, 0, 68, 44, 0, 308, 41, 396 22, 43, 29, 35, 38, 0, 0, 0, 32, 65, 397 36, 40, 76, 0, 27, 26, 0, 0, 25, 0, 398 0, 30, 31, 23, 0, 42, 28, 55, 56, 57, 399 73, 69, 59, 70, 0, 45, 46, 71, 33, 0, 400 34, 63, 64, 0, 0, 0, 0, 0, 0, 0, 401 0, 75, 0, 0, 0, 0, 77, 78, 37, 273, 402 0, 16, 18, 0, 68, 44, 41, 22, 43, 29, 403 35, 38, 0, 0, 0, 32, 65, 36, 40, 76, 404 0, 27, 26, 0, 0, 25, 0, 0, 30, 31, 405 23, 0, 0, 0, 42, 28, 55, 56, 57, 73, 406 69, 59, 70, 0, 45, 46, 71, 33, 0, 34, 407 63, 64, 0, 0, 0, 0, 0, 0, 75, 0, 408 0, 0, 0, 0, 0, 77, 78, 37, 16, 18, 409 0, 68, 44, 0, 248, 41, 22, 43, 29, 35, 410 38, 0, 0, 0, 32, 65, 36, 40, 76, 0, 411 27, 26, 0, 0, 25, 0, 0, 30, 31, 23, 412 0, 42, 28, 55, 56, 57, 73, 69, 59, 70, 413 0, 45, 46, 71, 33, 0, 34, 63, 64, 0, 414 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 415 0, 0, 77, 78, 37, 16, 18, 0, 68, 44, 416 0, 247, 41, 22, 43, 29, 35, 38, 0, 0, 417 0, 32, 65, 36, 40, 76, 0, 27, 26, 0, 418 0, 25, 0, 0, 30, 31, 23, 0, 42, 28, 419 55, 56, 57, 73, 69, 59, 70, 0, 45, 46, 420 71, 33, 0, 34, 63, 64, 0, 0, 0, 0, 421 0, 0, 75, 0, 0, 0, 0, 0, 0, 77, 422 78, 37, 16, 18, 0, 68, 44, 0, 226, 41, 423 22, 43, 29, 35, 38, 0, 0, 0, 32, 65, 424 36, 40, 76, 0, 27, 26, 0, 0, 25, 0, 425 0, 30, 31, 23, 0, 42, 28, 55, 56, 57, 426 73, 69, 59, 70, 0, 45, 46, 71, 33, 0, 427 34, 63, 64, 0, 0, 0, 0, 0, 0, 75, 428 0, 0, 0, 0, 0, 0, 77, 78, 37, 16, 429 18, 0, 68, 44, 0, 216, 41, 22, 43, 29, 430 35, 38, 0, 0, 0, 32, 65, 36, 40, 76, 431 0, 27, 26, 0, 0, 25, 0, 0, 30, 31, 432 23, 0, 42, 28, 55, 56, 57, 73, 69, 59, 433 70, 0, 45, 46, 71, 33, 0, 34, 63, 64, 434 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 435 0, 0, 0, 77, 78, 37, 16, 18, 0, 68, 436 44, 0, 135, 41, 22, 43, 29, 35, 38, 0, 437 0, 0, 32, 65, 36, 40, 76, 0, 27, 26, 438 0, 0, 25, 0, 0, 30, 31, 23, 0, 42, 439 28, 55, 56, 57, 73, 69, 59, 70, 0, 45, 440 46, 71, 33, 0, 34, 63, 64, 0, 0, 0, 441 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 442 77, 78, 37, 16, 18, 0, 68, 44, 0, 0, 443 41, 22, 43, 29, 35, 38, 0, 0, 0, 32, 444 65, 36, 40, 76, 0, 27, 26, 0, 0, 25, 445 0, 0, 30, 31, 23, 0, 42, 28, 55, 56, 446 57, 73, 69, 59, 70, 0, 45, 46, 71, 33, 447 0, 34, 63, 64, 0, 0, 0, 0, 0, 0, 448 0, 0, 0, 0, 0, 0, 0, 77, 78, 37, 449 0, 0, 0, 0, 0, 0, 0, 41, 22, 43, 450 29, 35, 38, 0, 0, 0, 32, 65, 36, 40, 451 76, 0, 27, 26, 0, 0, 25, 0, 0, 30, 452 31, 23, 190, 0, 101, 95, 0, 0, 331, 0, 453 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 454 0, 0, 0, 0, 0, 0, 98, 97, 0, 87, 455 88, 89, 90, 91, 92, 94, 42, 28, 0, 0, 456 0, 0, 0, 0, 0, 0, 45, 46, 0, 33, 457 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 458 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 459 0, 0, 0, 0, 0, 0, 0, 41, 22, 43, 460 29, 35, 38, 0, 84, 0, 32, 0, 36, 40, 461 0, 0, 27, 26, 0, 0, 99, 0, 0, 30, 462 31, 23, 190, 0, 101, 95, 0, 0, 328, 0, 463 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 464 0, 0, 0, 0, 0, 0, 98, 97, 0, 87, 465 88, 89, 90, 91, 92, 94, 42, 28, 0, 0, 466 0, 0, 0, 0, 0, 0, 45, 46, 0, 33, 467 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 468 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 469 0, 0, 0, 0, 0, 0, 0, 41, 22, 43, 470 29, 35, 38, 0, 84, 0, 32, 0, 36, 40, 471 0, 0, 27, 26, 0, 0, 99, 0, 0, 30, 472 31, 23, 190, 0, 101, 95, 0, 0, 326, 0, 473 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 474 0, 0, 0, 0, 0, 0, 98, 97, 0, 87, 475 88, 89, 90, 91, 92, 94, 42, 28, 0, 0, 476 0, 0, 0, 0, 0, 0, 45, 46, 0, 33, 477 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 478 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 479 0, 0, 0, 0, 0, 0, 0, 41, 22, 43, 480 29, 35, 38, 0, 84, 0, 32, 0, 36, 40, 481 0, 0, 27, 26, 0, 0, 99, 0, 0, 30, 482 31, 23, 140, 0, 0, 101, 95, 139, 0, 0, 483 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 484 0, 0, 0, 0, 0, 0, 0, 98, 97, 0, 485 87, 88, 89, 90, 91, 92, 94, 42, 28, 0, 486 0, 0, 0, 0, 0, 0, 0, 45, 46, 0, 487 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 488 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 489 37, 0, 0, 0, 0, 0, 0, 0, 41, 22, 490 43, 29, 35, 38, 0, 84, 0, 32, 0, 36, 491 40, 0, 0, 27, 26, 0, 0, 99, 0, 0, 492 30, 31, 23, 190, 0, 101, 95, 0, 0, 192, 493 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 494 0, 0, 0, 0, 0, 0, 0, 98, 97, 0, 495 87, 88, 89, 90, 91, 92, 94, 42, 28, 0, 496 0, 0, 0, 0, 0, 0, 0, 45, 46, 0, 497 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 498 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 499 37, 0, 0, 0, 0, 0, 0, 0, 41, 22, 500 43, 29, 35, 38, 0, 84, 0, 32, 0, 36, 501 40, 0, 0, 27, 26, 101, 95, 99, 0, 355, 502 30, 31, 23, 0, 0, 0, 93, 0, 0, 0, 503 0, 0, 0, 0, 0, 0, 0, 98, 97, 0, 504 87, 88, 89, 90, 91, 92, 94, 42, 28, 0, 505 0, 0, 0, 0, 0, 0, 0, 45, 46, 0, 506 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 507 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 508 37, 0, 0, 0, 0, 0, 0, 0, 41, 22, 509 43, 29, 35, 38, 0, 84, 0, 32, 0, 36, 510 40, 0, 0, 27, 26, 101, 95, 99, 0, 354, 511 30, 31, 23, 0, 0, 0, 93, 0, 0, 0, 512 0, 0, 0, 0, 0, 0, 0, 98, 97, 0, 513 87, 88, 89, 90, 91, 92, 94, 42, 28, 0, 514 0, 0, 0, 0, 0, 0, 0, 45, 46, 0, 515 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 516 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 517 37, 0, 0, 0, 0, 0, 0, 0, 41, 22, 518 43, 29, 35, 38, 0, 84, 0, 32, 0, 36, 519 40, 0, 0, 27, 26, 101, 95, 99, 0, 350, 520 30, 31, 23, 0, 0, 0, 93, 0, 0, 0, 521 0, 0, 0, 0, 0, 0, 0, 98, 97, 0, 522 87, 88, 89, 90, 91, 92, 94, 42, 28, 0, 523 0, 0, 0, 0, 0, 0, 0, 45, 46, 0, 524 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 525 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 526 37, 0, 0, 0, 0, 0, 0, 0, 41, 22, 527 43, 29, 35, 38, 0, 84, 0, 32, 0, 36, 528 40, 0, 0, 27, 26, 0, 0, 99, 0, 0, 529 30, 31, 23, 101, 95, 346, 0, 0, 0, 0, 530 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 531 0, 0, 0, 0, 0, 98, 97, 0, 87, 88, 532 89, 90, 91, 92, 94, 42, 28, 0, 0, 0, 533 0, 0, 0, 0, 0, 45, 46, 0, 33, 0, 534 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 535 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 536 0, 0, 0, 0, 0, 0, 41, 22, 43, 29, 537 35, 38, 0, 84, 0, 32, 0, 36, 40, 0, 538 0, 27, 26, 101, 95, 99, 0, 323, 30, 31, 539 23, 0, 0, 0, 93, 0, 0, 0, 0, 0, 540 0, 0, 0, 0, 0, 98, 97, 0, 87, 88, 541 89, 90, 91, 92, 94, 42, 28, 0, 0, 0, 542 0, 0, 0, 0, 0, 45, 46, 0, 33, 0, 543 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 544 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 545 0, 0, 0, 0, 0, 0, 41, 22, 43, 29, 546 35, 38, 0, 84, 0, 32, 0, 36, 40, 0, 547 0, 27, 26, 101, 95, 99, 0, 320, 30, 31, 548 23, 0, 0, 0, 93, 0, 0, 0, 0, 0, 549 0, 0, 0, 0, 0, 98, 97, 0, 87, 88, 550 89, 90, 91, 92, 94, 42, 28, 0, 0, 0, 551 0, 0, 0, 0, 0, 45, 46, 0, 33, 0, 552 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 553 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 554 0, 0, 0, 0, 0, 0, 41, 22, 43, 29, 555 35, 38, 0, 84, 0, 32, 0, 36, 40, 0, 556 0, 27, 26, 101, 95, 99, 0, 279, 30, 31, 557 23, 0, 0, 0, 93, 0, 0, 0, 0, 0, 558 0, 0, 0, 0, 0, 98, 97, 0, 87, 88, 559 89, 90, 91, 92, 94, 42, 28, 0, 0, 0, 560 0, 0, 0, 0, 0, 45, 46, 0, 33, 0, 561 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 562 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 563 0, 0, 0, 0, 0, 0, 41, 22, 43, 29, 564 35, 38, 0, 84, 0, 32, 0, 36, 40, 0, 565 0, 27, 26, 0, 190, 99, 101, 95, 30, 31, 566 23, 0, 0, 0, 0, 0, 0, 93, 0, 0, 567 0, 0, 0, 0, 0, 0, 0, 0, 98, 97, 568 0, 87, 88, 89, 90, 91, 92, 94, 42, 28, 569 0, 0, 0, 0, 0, 0, 0, 0, 45, 46, 570 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 571 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 572 0, 37, 0, 0, 0, 0, 0, 0, 0, 41, 573 22, 43, 29, 35, 38, 0, 84, 0, 32, 0, 574 36, 40, 0, 0, 27, 26, 101, 95, 99, 0, 575 192, 30, 31, 23, 0, 0, 0, 93, 0, 0, 576 0, 0, 0, 0, 0, 0, 0, 0, 98, 97, 577 0, 87, 88, 89, 90, 91, 92, 94, 42, 28, 578 0, 0, 0, 0, 0, 0, 0, 0, 45, 46, 579 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 580 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 581 0, 37, 0, 0, 0, 0, 0, 0, 0, 41, 582 22, 43, 29, 35, 38, 0, 84, 0, 32, 0, 583 36, 40, 0, 0, 27, 26, 101, 95, 99, 0, 584 0, 30, 31, 23, 0, 0, 0, 93, 0, 0, 585 0, 0, 0, 0, 0, 0, 0, 0, 98, 97, 586 0, 87, 88, 89, 90, 91, 92, 94, 42, 28, 587 0, 0, 0, 0, 0, 0, 0, 0, 45, 46, 588 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 589 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 590 0, 37, 0, 0, 0, 0, 0, 0, 0, 41, 591 22, 43, 29, 35, 38, 0, 84, 251, 32, 0, 592 36, 40, 0, 0, 27, 26, 101, 95, 99, 0, 593 0, 30, 31, 23, 0, 0, 0, 93, 0, 0, 594 0, 0, 0, 0, 0, 0, 0, 0, 98, 97, 595 0, 87, 88, 89, 90, 91, 92, 94, 42, 28, 596 0, 0, 0, 0, 0, 0, 0, 0, 45, 46, 597 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 598 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 599 0, 37, 0, 0, 0, 0, 0, 0, 0, 41, 600 22, 43, 29, 35, 38, 0, 84, 0, 32, 0, 601 36, 40, 0, 0, 27, 26, 101, 95, 99, 0, 602 0, 30, 31, 23, 0, 0, 0, 93, 0, 0, 603 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 604 0, 87, 88, 89, 90, 91, 92, 94, 42, 28, 605 0, 0, 0, 0, 0, 0, 0, 0, 45, 46, 606 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 607 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 608 0, 37, 0, 0, 0, 0, 0, 0, 0, 41, 609 22, 43, 29, 35, 38, 101, 95, 0, 32, 0, 610 36, 40, 0, 0, 27, 26, 93, 0, 99, 0, 611 0, 30, 31, 23, 0, 0, 0, 0, 0, 0, 612 87, 88, 89, 90, 91, 92, 94, 42, 28, 0, 613 0, 0, 0, 0, 0, 0, 0, 45, 46, 0, 614 33, 0, 34, 0, 0, 75, 0, 0, 0, 0, 615 0, 0, 0, 0, 0, 0, 18, 0, 0, 44, 616 37, 0, 0, 0, 0, 0, 0, 0, 41, 22, 617 43, 29, 35, 38, 0, 0, 0, 32, 0, 36, 618 40, 0, 0, 27, 26, 0, 0, 99, 42, 28, 619 30, 31, 23, 73, 0, 0, 0, 0, 45, 46, 620 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 621 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 622 78, 37, 0, 0, 101, 0, 0, 0, 0, 41, 623 22, 43, 29, 35, 38, 241, 0, 0, 32, 0, 624 36, 40, 0, 0, 27, 26, 98, 97, 25, 0, 625 0, 30, 31, 23, 0, 242, 42, 28, 0, 0, 626 0, 0, 0, 0, 0, 0, 45, 46, 0, 33, 627 0, 34, 0, 0, 0, 0, 0, 12, 13, 0, 628 0, 16, 18, 0, 0, 44, 0, 0, 0, 37, 629 0, 0, 0, 0, 0, 0, 0, 41, 22, 43, 630 29, 35, 38, 0, 238, 0, 32, 0, 36, 40, 631 0, 0, 27, 26, 42, 28, 99, 0, 0, 30, 632 31, 23, 0, 14, 45, 46, 0, 33, 0, 34, 633 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 634 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 635 101, 0, 0, 0, 0, 41, 22, 43, 29, 35, 636 38, 241, 0, 0, 32, 0, 36, 40, 0, 0, 637 27, 26, 98, 0, 25, 0, 0, 30, 31, 23, 638 0, 242, 42, 28, 0, 0, 0, 0, 0, 0, 639 0, 0, 45, 46, 0, 33, 0, 34, 0, 0, 640 0, 0, 0, 0, 0, 140, 0, 0, 18, 0, 641 139, 44, 0, 0, 0, 37, 0, 0, 0, 0, 642 0, 0, 0, 41, 22, 43, 29, 35, 38, 0, 643 254, 0, 32, 18, 36, 40, 44, 0, 27, 26, 644 42, 28, 99, 0, 0, 30, 31, 23, 0, 0, 645 45, 46, 0, 33, 0, 34, 0, 0, 0, 0, 646 0, 0, 0, 0, 0, 42, 28, 0, 0, 0, 647 0, 0, 0, 37, 0, 45, 46, 0, 33, 0, 648 34, 41, 22, 43, 29, 35, 38, 0, 0, 0, 649 32, 0, 36, 40, 0, 0, 27, 26, 37, 0, 650 25, 101, 0, 30, 31, 23, 41, 22, 43, 29, 651 35, 38, 241, 0, 0, 32, 0, 36, 40, 0, 652 0, 27, 26, 0, 0, 25, 0, 0, 30, 31, 653 23, 0, 242, 42, 28, 0, 0, 0, 0, 0, 654 0, 0, 0, 45, 46, 0, 33, 0, 34, 0, 655 0, 0, 0, 0, 0, 0, 174, 0, 0, 284, 656 0, 0, 44, 0, 0, 0, 37, 0, 0, 0, 657 0, 0, 0, 0, 41, 22, 43, 29, 35, 38, 658 0, 172, 0, 32, 284, 36, 40, 44, 0, 27, 659 26, 42, 28, 99, 0, 0, 30, 31, 23, 0, 660 0, 45, 46, 0, 33, 0, 34, 0, 0, 0, 661 0, 0, 0, 0, 0, 0, 42, 28, 0, 0, 662 0, 0, 0, 0, 37, 0, 45, 46, 0, 33, 663 0, 34, 41, 22, 43, 29, 35, 38, 0, 254, 664 0, 32, 284, 36, 40, 44, 0, 27, 26, 37, 665 0, 25, 0, 0, 30, 31, 23, 41, 22, 43, 666 29, 35, 38, 0, 0, 0, 32, 18, 36, 40, 667 44, 204, 27, 26, 42, 28, 25, 0, 0, 30, 668 31, 23, 0, 0, 45, 46, 0, 33, 0, 34, 669 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 670 28, 0, 0, 0, 0, 0, 0, 37, 0, 45, 671 46, 0, 33, 0, 34, 41, 22, 43, 29, 35, 672 38, 0, 0, 0, 32, 18, 36, 40, 44, 202, 673 27, 26, 37, 0, 25, 0, 0, 30, 31, 23, 674 41, 22, 43, 29, 35, 38, 0, 174, 0, 32, 675 18, 36, 40, 44, 0, 27, 26, 42, 28, 25, 676 0, 0, 30, 31, 23, 0, 0, 45, 46, 0, 677 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 678 0, 0, 42, 28, 0, 0, 0, 0, 0, 0, 679 37, 0, 45, 46, 0, 33, 0, 34, 41, 22, 680 43, 29, 35, 38, 0, 172, 0, 32, 18, 36, 681 40, 44, 0, 27, 26, 37, 0, 25, 0, 0, 682 30, 31, 23, 41, 22, 43, 29, 35, 38, 0, 683 0, 0, 32, 18, 36, 40, 44, 0, 27, 26, 684 42, 28, 25, 0, 0, 30, 31, 23, 0, 0, 685 45, 46, 0, 33, 0, 34, 0, 0, 0, 0, 686 0, 0, 0, 0, 0, 42, 28, 0, 0, 0, 687 0, 0, 0, 37, 0, 45, 46, 0, 33, 0, 688 34, 41, 22, 43, 29, 35, 38, 0, 0, 0, 689 32, 284, 36, 40, 44, 0, 27, 26, 37, 0, 690 25, 0, 0, 30, 31, 23, 41, 22, 43, 29, 691 35, 38, 0, 0, 0, 32, 101, 36, 40, 0, 692 0, 27, 26, 42, 28, 25, 0, 0, 30, 31, 693 23, 0, 0, 45, 46, 0, 33, 0, 34, 0, 694 0, 0, 0, 0, 0, 0, 0, 0, 42, 28, 695 0, 0, 0, 0, 0, 0, 37, 0, 45, 46, 696 0, 33, 0, 34, 41, 22, 43, 29, 35, 38, 697 0, 0, 193, 32, 161, 36, 40, 44, 0, 27, 698 26, 37, 0, 25, 0, 0, 30, 31, 23, 41, 699 22, 43, 29, 35, 38, 0, 0, 0, 32, 101, 700 36, 40, 44, 0, 27, 26, 42, 28, 99, 0, 701 0, 30, 31, 23, 0, 0, 45, 46, 0, 33, 702 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 703 0, 42, 28, 0, 0, 0, 0, 0, 0, 37, 704 0, 45, 46, 0, 33, 0, 34, 41, 22, 43, 705 29, 35, 38, 0, 0, 0, 32, 101, 36, 40, 706 0, 0, 27, 26, 37, 0, 25, 0, 0, 30, 707 31, 23, 41, 22, 43, 29, 35, 38, 0, 0, 708 0, 32, 101, 36, 40, 0, 0, 27, 26, 42, 709 28, 25, 0, 0, 30, 31, 23, 0, 0, 45, 710 46, 0, 33, 0, 34, 0, 0, 0, 0, 0, 711 0, 0, 0, 0, 42, 28, 0, 0, 0, 0, 712 0, 0, 37, 0, 45, 46, 0, 33, 0, 34, 713 41, 22, 43, 29, 35, 38, 0, 0, 0, 32, 714 0, 36, 40, 0, 0, 27, 26, 37, 0, 99, 715 0, 0, 30, 31, 23, 41, 22, 43, 29, 35, 716 38, 0, 0, 0, 0, 0, 36, 40, 0, 0, 717 27, 26, 0, 0, 99, 0, 0, 30, 31, 23 718 }; 719 short yypact[] = 720 { 721 191,-1000,-1000,-1000,3259, 193,-1000,-1000, 185,-1000, 722 205, 863, 206, 206, -50,2903,-1000, -63,3810,-1000, 723 19, 38,-1000,4034,-1000,3976,4034,4034, 200, 199, 724 -33, -33, 5, 192, 184,-1000, 183, 170,-1000, 158, 725 157,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,3259, 726 863,3810,-1000,1334,-1000, 124,3810, 124, 214,3385, 727 -1000,1401, 863, 124, 124,3385, 124,-1000, 211,-1000, 728 148, 146,3951, -22,2903,-1000, 138,-1000,-1000, 863, 729 863, 134,-1000,-1000,3810,3785,3727,3810,3810,3810, 730 3810,3810,3810,3810, -22, -74, 19,-1000,-1000,4034, 731 -94,3810,3810,-1000,-1000, 181,1902,3893,4034,4034, 732 4034,4034,4034,3810,-1000,-1000, -89, -89, -89,3702, 733 3644,-1000,-1000, 7,4034,3810,3810,3810,3810,3810, 734 3810, -70,-1000,1267, 206,-1000,-1000,-1000, 213, 211, 735 -1000,1802,-1000,-1000,1401,1802,-1000, -49,1200,-1000, 736 -1000,1802,-1000,-1000,1401,-1000, 213,3133,3810, 104, 737 208,3810,3201, -65,-1000, 19, 33,3810,1133,1066, 738 -57,2813,-1000,2993,-1000,3072,4059,4059,4059,4059, 739 4059,4059,-1000,4059,-1000, -33,2723,2903, 4,3410, 740 -1000,3410,-1000,4034, -89, 26, 26, -89, -89, -89, 741 86,2903,-1000, 174,-1000, 151,4034, 19,2633,2633, 742 2633, 149, 208,2633,2633, 89,-1000, 863,-1000,-1000, 743 -1000,-1000,-1000, 999,-1000, 212,-1000,-1000,-1000, 101, 744 37,-1000,2540,4034,4034,4034,3619, 147,3868,3561, 745 3536,3868, -22, 19,3868,3810,2540,-1000,-1000, 139, 746 -1000,3810,-1000, -22,-1000,2903,2903, 19,3410,-1000, 747 -1000,-1000, 19,3410,3410, 31,-1000,3410,3410,3410, 748 -1000, 930, -80,-1000,-1000,-1000, 133, -22, 194,-1000, 749 19, 19, 19,3201,3810, -6, 634,3327,3478,-1000, 750 4059,-1000,3201, 40, 194, 194, 15,2903,-1000,2903, 751 2450, 78, 77,2360, 121,1701,1601,1501,-1000, 111, 752 3810, 211, 41,-1000, 120, -22,3868,-1000, 206,-1000, 753 -1000,-1000,-1000,-1000,3410,-1000,-1000, -8,-1000, -8, 754 3410,-1000,3810,2270,3133, 194, -6,-1000,3201, 863, 755 2172, 66, 55, 48,2082,1992, 211, 41,1401, 794, 756 -1000,-1000,-1000,-1000,-1000, 124,3133, 194,-1000,-1000, 757 -1000, 41,1401, 194,-1000,1401,-1000 758 }; 759 short yypgo[] = 760 { 761 0, 297, 505, 40, 11, 295, 7, 286, 243, 199, 762 62, 34, 283, 10, 9, 5, 20, 8, 0, 418, 763 278, 276, 273, 268, 265, 264, 263, 3, 262, 229, 764 85, 261, 1, 400, 17, 13, 103, 87, 260, 258, 765 255, 254, 249, 246, 232, 231, 230, 228, 227 766 }; 767 short yyr1[] = 768 { 769 0, 40, 40, 36, 36, 37, 37, 33, 33, 26, 770 26, 24, 24, 41, 22, 42, 22, 43, 22, 20, 771 20, 23, 30, 30, 34, 34, 35, 35, 29, 29, 772 15, 15, 1, 1, 10, 11, 11, 11, 11, 11, 773 11, 11, 44, 11, 12, 12, 6, 6, 3, 3, 774 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 775 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 776 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 777 5, 5, 7, 7, 7, 39, 39, 28, 28, 28, 778 28, 31, 31, 9, 9, 45, 13, 32, 32, 14, 779 14, 14, 14, 14, 14, 14, 14, 27, 27, 16, 780 16, 16, 46, 47, 16, 16, 16, 16, 16, 16, 781 16, 16, 16, 16, 16, 16, 48, 16, 16, 17, 782 17, 38, 38, 8, 8, 8, 8, 8, 8, 8, 783 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 784 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 785 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 786 8, 8, 8, 8, 18, 18, 18, 18, 21, 21, 787 21, 19, 19, 19, 25 788 }; 789 short yyr2[] = 790 { 791 0, 1, 1, 1, 2, 1, 2, 1, 2, 1, 792 2, 1, 2, 0, 12, 0, 10, 0, 8, 1, 793 1, 4, 1, 2, 1, 2, 0, 1, 0, 1, 794 0, 1, 1, 3, 1, 1, 4, 3, 6, 3, 795 4, 4, 0, 9, 1, 3, 1, 3, 3, 5, 796 3, 3, 3, 3, 3, 5, 2, 1, 1, 3, 797 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 798 3, 3, 5, 4, 3, 2, 1, 1, 3, 3, 799 1, 3, 0, 1, 3, 1, 1, 1, 1, 2, 800 2, 1, 2, 1, 2, 0, 4, 1, 2, 4, 801 4, 4, 2, 5, 2, 1, 1, 1, 2, 2, 802 3, 2, 0, 0, 9, 3, 2, 1, 4, 2, 803 3, 2, 2, 3, 2, 2, 0, 3, 2, 1, 804 2, 1, 1, 4, 3, 3, 3, 3, 3, 3, 805 2, 2, 2, 3, 4, 1, 3, 4, 2, 2, 806 2, 2, 4, 3, 2, 1, 6, 6, 3, 6, 807 6, 1, 8, 8, 6, 4, 1, 6, 6, 8, 808 8, 8, 6, 1, 1, 4, 1, 2, 0, 1, 809 3, 1, 1, 1, 4 810 }; 811 short yychk[] = 812 { 813 -1000, -40, -1, 2, -29, -28, 10, 15, -12, -11, 814 -10, -30, 8, 9, 54, -2, 12, -18, 13, -9, 815 -8, -19, 87, 110, -13, 105, 102, 101, 46, 89, 816 108, 109, 95, 58, 60, 90, 97, 78, 91, -38, 817 98, 86, 45, 88, 16, 55, 56, 10, 15, -29, 818 -30, 11, 10, -17, -16, 47, 48, 49, -26, 52, 819 -22, -23, -30, 61, 62, 96, -14, -25, 15, 51, 820 53, 57, -39, 50, -2, 2, 99, 76, 77, -30, 821 -30, -20, 86, 89, 93, -37, -36, 38, 39, 40, 822 41, 42, 43, 24, 44, 14, -8, 36, 35, 105, 823 -18, 13, 69, 108, 109, -4, -2, 16, 101, 102, 824 103, 104, 107, 19, -8, -9, -8, -8, -8, 13, 825 13, -18, -18, -18, 42, 13, 13, 13, 13, 13, 826 13, -45, -11, -17, -10, 18, -16, -27, -34, 15, 827 10, -2, -27, 10, -46, -2, -27, -16, -17, -27, 828 -27, -2, -27, -27, -48, -35, -34, 13, 13, -7, 829 -5, 13, -3, -18, -9, -8, -19, 13, -17, -17, 830 13, -2, 10, -2, 10, -2, -2, -2, -2, -2, 831 -2, -2, -13, -2, -19, 95, -2, -2, 17, -33, 832 11, -33, 17, 69, -8, -8, -8, -8, -8, -8, 833 -6, -2, 17, -6, 17, -6, 42, -8, -2, -2, 834 -2, -6, -13, -2, -2, 92, 18, -30, 10, -35, 835 -27, -16, -27, -24, 79, -31, 18, -27, -16, -15, 836 -19, -14, -2, 14, 37, 40, -33, -4, 93, -37, 837 -36, 24, 44, -8, 69, 19, -2, 18, 18, -21, 838 86, 94, -18, 44, 10, -2, -2, -8, -33, 20, 839 17, 17, -8, -33, -33, -33, 17, -33, -33, -33, 840 16, -17, -47, 10, -16, 10, 15, 44, -32, 17, 841 -8, -8, -8, -3, 13, 17, -3, -3, -3, -13, 842 -3, -19, -3, -6, -32, -32, -33, -2, -19, -2, 843 -2, -13, -13, -2, -19, -2, -2, -2, 18, 99, 844 -35, 15, -19, 10, -4, 44, 94, 20, -44, 86, 845 17, 17, 17, 17, -33, 17, 17, -33, 17, -33, 846 -33, 17, 13, -2, -35, -32, 17, -19, -3, -30, 847 -2, -13, -18, -18, -2, -2, 15, -15, -43, -17, 848 17, 17, 17, 17, 17, 17, -35, -32, -16, 18, 849 -27, -15, -42, -32, -16, -41, -16 850 }; 851 short yydef[] = 852 { 853 -2, -2, 1, 2, 32, 29, 87, 88, 28, 44, 854 35, 0, 0, 0, 0, 34, 22, 173, 0, 76, 855 77, 174, 176, 0, 93, 0, 0, 0, 145, 0, 856 0, 0, 155, 0, 0, 161, 0, 0, 166, 0, 857 0, 181, 182, 183, 95, 131, 132, 89, 90, 33, 858 0, 0, 23, 0, 129, 0, 0, 0, 112, 0, 859 117, 0, 0, 0, 0, 0, 0, 126, 26, 9, 860 0, 0, 82, 0, 105, 106, 0, 85, 86, 0, 861 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 862 0, 0, 0, 0, 0, 0, 75, 5, 3, 0, 863 173, 0, 0, 150, 151, 0, 0, 0, 0, 0, 864 0, 0, 0, 0, 177, 94, 142, 140, 141, 0, 865 0, 148, 149, 154, 0, 0, 0, 0, 0, 0, 866 0, 0, 45, 0, 37, 39, 130, 109, 107, 26, 867 24, 0, 111, 10, 0, 0, 116, 119, 0, 121, 868 122, 0, 124, 125, 0, 128, 27, -2, 0, 102, 869 83, 0, 80, 173, 57, 58, 104, 0, 0, 0, 870 178, 0, 6, 61, 4, 62, -2, -2, -2, -2, 871 -2, -2, 69, -2, 71, 74, 0, 59, 0, 0, 872 7, 0, 158, 0, 137, 134, 135, 136, 138, 139, 873 0, 46, 143, 0, 146, 0, 0, 153, 0, 0, 874 0, 0, 93, 0, 0, 0, 36, 0, 25, 108, 875 110, 113, 115, 0, 11, 120, 91, 123, 127, 0, 876 174, 31, 0, 0, 0, 0, 0, 0, 0, 0, 877 0, 0, 0, 56, 0, 0, 0, 40, 41, 0, 878 179, 0, 73, 0, 8, 79, 78, 133, 0, 175, 879 144, 147, 152, 0, 0, 0, 165, 0, 0, 0, 880 96, 0, 0, 12, 118, 92, 26, 0, 21, 97, 881 99, 100, 101, 81, 0, 84, 0, 50, 51, 52, 882 -2, 54, 48, 0, 184, 42, 0, 60, 72, 47, 883 0, 93, 93, 0, 0, 0, 0, 0, 38, 0, 884 0, 26, 0, 98, 0, 0, 0, 103, 0, 180, 885 156, 157, 159, 160, 0, 164, 167, 0, 168, 0, 886 0, 172, 0, 0, -2, 17, 0, 55, 49, 0, 887 0, 93, 0, 0, 0, 0, 26, 0, 0, 0, 888 162, 163, 169, 170, 171, 0, -2, 15, 18, 43, 889 114, 0, 0, 13, 16, 0, 14 890 }; 891 short yytok1[] = 892 { 893 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 894 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 895 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 896 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 897 13, 17, 103, 101, 11, 102, 0, 16, 0, 0, 898 0, 0, 0, 0, 0, 0, 0, 0, 94, 15, 899 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 900 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 901 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 902 0, 19, 0, 20, 0, 0, 0, 0, 0, 0, 903 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 904 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 905 0, 0, 0, 12, 14, 18 906 }; 907 short yytok2[] = 908 { 909 2, 3, 4, 5, 6, 7, 8, 9, 10, 21, 910 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 911 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 912 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 913 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 914 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 915 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 916 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 917 92, 95, 96, 97, 98, 99, 100, 105, 106, 107, 918 108, 109, 110, 111 919 }; 920 long yytok3[] = 921 { 922 0 923 }; 924 #define YYFLAG -1000 925 #define YYERROR goto yyerrlab 926 #define YYACCEPT return(0) 927 #define YYABORT return(1) 928 #define yyclearin yychar = -1 929 #define yyerrok yyerrflag = 0 930 931 #ifdef yydebug 932 #include "y.debug" 933 #else 934 #define yydebug 0 935 char* yytoknames[1]; /* for debugging */ 936 char* yystates[1]; /* for debugging */ 937 #endif 938 939 /* parser for yacc output */ 940 941 int yynerrs = 0; /* number of errors */ 942 int yyerrflag = 0; /* error recovery flag */ 943 944 char* 945 yytokname(int yyc) 946 { 947 static char x[16]; 948 949 if(yyc > 0 && yyc <= sizeof(yytoknames)/sizeof(yytoknames[0])) 950 if(yytoknames[yyc-1]) 951 return yytoknames[yyc-1]; 952 sprintf(x, "<%d>", yyc); 953 return x; 954 } 955 956 char* 957 yystatname(int yys) 958 { 959 static char x[16]; 960 961 if(yys >= 0 && yys < sizeof(yystates)/sizeof(yystates[0])) 962 if(yystates[yys]) 963 return yystates[yys]; 964 sprintf(x, "<%d>\n", yys); 965 return x; 966 } 967 968 long 969 yylex1(void) 970 { 971 long yychar; 972 long *t3p; 973 int c; 974 975 yychar = yylex(); 976 if(yychar <= 0) { 977 c = yytok1[0]; 978 goto out; 979 } 980 if(yychar < sizeof(yytok1)/sizeof(yytok1[0])) { 981 c = yytok1[yychar]; 982 goto out; 983 } 984 if(yychar >= YYPRIVATE) 985 if(yychar < YYPRIVATE+sizeof(yytok2)/sizeof(yytok2[0])) { 986 c = yytok2[yychar-YYPRIVATE]; 987 goto out; 988 } 989 for(t3p=yytok3;; t3p+=2) { 990 c = t3p[0]; 991 if(c == yychar) { 992 c = t3p[1]; 993 goto out; 994 } 995 if(c == 0) 996 break; 997 } 998 c = 0; 999 1000 out: 1001 if(c == 0) 1002 c = yytok2[1]; /* unknown char */ 1003 if(yydebug >= 3) 1004 printf("lex %.4lX %s\n", yychar, yytokname(c)); 1005 return c; 1006 } 1007 1008 int 1009 yyparse(void) 1010 { 1011 struct 1012 { 1013 YYSTYPE yyv; 1014 int yys; 1015 } yys[YYMAXDEPTH], *yyp, *yypt; 1016 short *yyxi; 1017 int yyj, yym, yystate, yyn, yyg; 1018 YYSTYPE save1, save2; 1019 int save3, save4; 1020 long yychar; 1021 1022 save1 = yylval; 1023 save2 = yyval; 1024 save3 = yynerrs; 1025 save4 = yyerrflag; 1026 1027 yystate = 0; 1028 yychar = -1; 1029 yynerrs = 0; 1030 yyerrflag = 0; 1031 yyp = &yys[-1]; 1032 goto yystack; 1033 1034 ret0: 1035 yyn = 0; 1036 goto ret; 1037 1038 ret1: 1039 yyn = 1; 1040 goto ret; 1041 1042 ret: 1043 yylval = save1; 1044 yyval = save2; 1045 yynerrs = save3; 1046 yyerrflag = save4; 1047 return yyn; 1048 1049 yystack: 1050 /* put a state and value onto the stack */ 1051 if(yydebug >= 4) 1052 printf("char %s in %s", yytokname(yychar), yystatname(yystate)); 1053 1054 yyp++; 1055 if(yyp >= &yys[YYMAXDEPTH]) { 1056 yyerror("yacc stack overflow"); 1057 goto ret1; 1058 } 1059 yyp->yys = yystate; 1060 yyp->yyv = yyval; 1061 1062 yynewstate: 1063 yyn = yypact[yystate]; 1064 if(yyn <= YYFLAG) 1065 goto yydefault; /* simple state */ 1066 if(yychar < 0) 1067 yychar = yylex1(); 1068 yyn += yychar; 1069 if(yyn < 0 || yyn >= YYLAST) 1070 goto yydefault; 1071 yyn = yyact[yyn]; 1072 if(yychk[yyn] == yychar) { /* valid shift */ 1073 yychar = -1; 1074 yyval = yylval; 1075 yystate = yyn; 1076 if(yyerrflag > 0) 1077 yyerrflag--; 1078 goto yystack; 1079 } 1080 1081 yydefault: 1082 /* default state action */ 1083 yyn = yydef[yystate]; 1084 if(yyn == -2) { 1085 if(yychar < 0) 1086 yychar = yylex1(); 1087 1088 /* look through exception table */ 1089 for(yyxi=yyexca;; yyxi+=2) 1090 if(yyxi[0] == -1 && yyxi[1] == yystate) 1091 break; 1092 for(yyxi += 2;; yyxi += 2) { 1093 yyn = yyxi[0]; 1094 if(yyn < 0 || yyn == yychar) 1095 break; 1096 } 1097 yyn = yyxi[1]; 1098 if(yyn < 0) 1099 goto ret0; 1100 } 1101 if(yyn == 0) { 1102 /* error ... attempt to resume parsing */ 1103 switch(yyerrflag) { 1104 case 0: /* brand new error */ 1105 yyerror("syntax error"); 1106 if(yydebug >= 1) { 1107 printf("%s", yystatname(yystate)); 1108 printf("saw %s\n", yytokname(yychar)); 1109 } 1110 yyerrlab: 1111 yynerrs++; 1112 1113 case 1: 1114 case 2: /* incompletely recovered error ... try again */ 1115 yyerrflag = 3; 1116 1117 /* find a state where "error" is a legal shift action */ 1118 while(yyp >= yys) { 1119 yyn = yypact[yyp->yys] + YYERRCODE; 1120 if(yyn >= 0 && yyn < YYLAST) { 1121 yystate = yyact[yyn]; /* simulate a shift of "error" */ 1122 if(yychk[yystate] == YYERRCODE) 1123 goto yystack; 1124 } 1125 1126 /* the current yyp has no shift onn "error", pop stack */ 1127 if(yydebug >= 2) 1128 printf("error recovery pops state %d, uncovers %d\n", 1129 yyp->yys, (yyp-1)->yys ); 1130 yyp--; 1131 } 1132 /* there is no state on the stack with an error shift ... abort */ 1133 goto ret1; 1134 1135 case 3: /* no shift yet; clobber input char */ 1136 if(yydebug >= YYEOFCODE) 1137 printf("error recovery discards %s\n", yytokname(yychar)); 1138 if(yychar == YYEOFCODE) 1139 goto ret1; 1140 yychar = -1; 1141 goto yynewstate; /* try again in the same state */ 1142 } 1143 } 1144 1145 /* reduction by production yyn */ 1146 if(yydebug >= 2) 1147 printf("reduce %d in:\n\t%s", yyn, yystatname(yystate)); 1148 1149 yypt = yyp; 1150 yyp -= yyr2[yyn]; 1151 yyval = (yyp+1)->yyv; 1152 yym = yyn; 1153 1154 /* consult goto table to find next state */ 1155 yyn = yyr1[yyn]; 1156 yyg = yypgo[yyn]; 1157 yyj = yyg + yyp->yys + 1; 1158 1159 if(yyj >= YYLAST || yychk[yystate=yyact[yyj]] != -yyn) 1160 yystate = yyact[yyg]; 1161 switch(yym) { 1162 1163 case 1: 1164 #line 100 "/sys/src/cmd/awk/awkgram.y" 1165 { if (errorflag==0) 1166 winner = (Node *)stat3(PROGRAM, beginloc, yypt[-0].yyv.p, endloc); } break; 1167 case 2: 1168 #line 102 "/sys/src/cmd/awk/awkgram.y" 1169 { yyclearin; bracecheck(); SYNTAX("bailing out"); } break; 1170 case 13: 1171 #line 126 "/sys/src/cmd/awk/awkgram.y" 1172 {inloop++;} break; 1173 case 14: 1174 #line 127 "/sys/src/cmd/awk/awkgram.y" 1175 { --inloop; yyval.p = stat4(FOR, yypt[-9].yyv.p, notnull(yypt[-6].yyv.p), yypt[-3].yyv.p, yypt[-0].yyv.p); } break; 1176 case 15: 1177 #line 128 "/sys/src/cmd/awk/awkgram.y" 1178 {inloop++;} break; 1179 case 16: 1180 #line 129 "/sys/src/cmd/awk/awkgram.y" 1181 { --inloop; yyval.p = stat4(FOR, yypt[-7].yyv.p, NIL, yypt[-3].yyv.p, yypt[-0].yyv.p); } break; 1182 case 17: 1183 #line 130 "/sys/src/cmd/awk/awkgram.y" 1184 {inloop++;} break; 1185 case 18: 1186 #line 131 "/sys/src/cmd/awk/awkgram.y" 1187 { --inloop; yyval.p = stat3(IN, yypt[-5].yyv.p, makearr(yypt[-3].yyv.p), yypt[-0].yyv.p); } break; 1188 case 19: 1189 #line 135 "/sys/src/cmd/awk/awkgram.y" 1190 { setfname(yypt[-0].yyv.cp); } break; 1191 case 20: 1192 #line 136 "/sys/src/cmd/awk/awkgram.y" 1193 { setfname(yypt[-0].yyv.cp); } break; 1194 case 21: 1195 #line 140 "/sys/src/cmd/awk/awkgram.y" 1196 { yyval.p = notnull(yypt[-1].yyv.p); } break; 1197 case 26: 1198 #line 152 "/sys/src/cmd/awk/awkgram.y" 1199 { yyval.i = 0; } break; 1200 case 28: 1201 #line 157 "/sys/src/cmd/awk/awkgram.y" 1202 { yyval.i = 0; } break; 1203 case 30: 1204 #line 163 "/sys/src/cmd/awk/awkgram.y" 1205 { yyval.p = 0; } break; 1206 case 32: 1207 #line 168 "/sys/src/cmd/awk/awkgram.y" 1208 { yyval.p = 0; } break; 1209 case 33: 1210 #line 169 "/sys/src/cmd/awk/awkgram.y" 1211 { yyval.p = yypt[-1].yyv.p; } break; 1212 case 34: 1213 #line 173 "/sys/src/cmd/awk/awkgram.y" 1214 { yyval.p = notnull(yypt[-0].yyv.p); } break; 1215 case 35: 1216 #line 177 "/sys/src/cmd/awk/awkgram.y" 1217 { yyval.p = stat2(PASTAT, yypt[-0].yyv.p, stat2(PRINT, rectonode(), NIL)); } break; 1218 case 36: 1219 #line 178 "/sys/src/cmd/awk/awkgram.y" 1220 { yyval.p = stat2(PASTAT, yypt[-3].yyv.p, yypt[-1].yyv.p); } break; 1221 case 37: 1222 #line 179 "/sys/src/cmd/awk/awkgram.y" 1223 { yyval.p = pa2stat(yypt[-2].yyv.p, yypt[-0].yyv.p, stat2(PRINT, rectonode(), NIL)); } break; 1224 case 38: 1225 #line 180 "/sys/src/cmd/awk/awkgram.y" 1226 { yyval.p = pa2stat(yypt[-5].yyv.p, yypt[-3].yyv.p, yypt[-1].yyv.p); } break; 1227 case 39: 1228 #line 181 "/sys/src/cmd/awk/awkgram.y" 1229 { yyval.p = stat2(PASTAT, NIL, yypt[-1].yyv.p); } break; 1230 case 40: 1231 #line 183 "/sys/src/cmd/awk/awkgram.y" 1232 { beginloc = linkum(beginloc, yypt[-1].yyv.p); yyval.p = 0; } break; 1233 case 41: 1234 #line 185 "/sys/src/cmd/awk/awkgram.y" 1235 { endloc = linkum(endloc, yypt[-1].yyv.p); yyval.p = 0; } break; 1236 case 42: 1237 #line 186 "/sys/src/cmd/awk/awkgram.y" 1238 {infunc++;} break; 1239 case 43: 1240 #line 187 "/sys/src/cmd/awk/awkgram.y" 1241 { infunc--; curfname=0; defn((Cell *)yypt[-7].yyv.p, yypt[-5].yyv.p, yypt[-1].yyv.p); yyval.p = 0; } break; 1242 case 45: 1243 #line 192 "/sys/src/cmd/awk/awkgram.y" 1244 { yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1245 case 47: 1246 #line 197 "/sys/src/cmd/awk/awkgram.y" 1247 { yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1248 case 48: 1249 #line 201 "/sys/src/cmd/awk/awkgram.y" 1250 { yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1251 case 49: 1252 #line 203 "/sys/src/cmd/awk/awkgram.y" 1253 { yyval.p = op3(CONDEXPR, notnull(yypt[-4].yyv.p), yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1254 case 50: 1255 #line 205 "/sys/src/cmd/awk/awkgram.y" 1256 { yyval.p = op2(BOR, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break; 1257 case 51: 1258 #line 207 "/sys/src/cmd/awk/awkgram.y" 1259 { yyval.p = op2(AND, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break; 1260 case 52: 1261 #line 208 "/sys/src/cmd/awk/awkgram.y" 1262 { yyval.p = op3(yypt[-1].yyv.i, NIL, yypt[-2].yyv.p, (Node*)makedfa(yypt[-0].yyv.s, 0)); } break; 1263 case 53: 1264 #line 210 "/sys/src/cmd/awk/awkgram.y" 1265 { if (constnode(yypt[-0].yyv.p)) 1266 yyval.p = op3(yypt[-1].yyv.i, NIL, yypt[-2].yyv.p, (Node*)makedfa(strnode(yypt[-0].yyv.p), 0)); 1267 else 1268 yyval.p = op3(yypt[-1].yyv.i, (Node *)1, yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1269 case 54: 1270 #line 214 "/sys/src/cmd/awk/awkgram.y" 1271 { yyval.p = op2(INTEST, yypt[-2].yyv.p, makearr(yypt[-0].yyv.p)); } break; 1272 case 55: 1273 #line 215 "/sys/src/cmd/awk/awkgram.y" 1274 { yyval.p = op2(INTEST, yypt[-3].yyv.p, makearr(yypt[-0].yyv.p)); } break; 1275 case 56: 1276 #line 216 "/sys/src/cmd/awk/awkgram.y" 1277 { yyval.p = op2(CAT, yypt[-1].yyv.p, yypt[-0].yyv.p); } break; 1278 case 59: 1279 #line 222 "/sys/src/cmd/awk/awkgram.y" 1280 { yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1281 case 60: 1282 #line 224 "/sys/src/cmd/awk/awkgram.y" 1283 { yyval.p = op3(CONDEXPR, notnull(yypt[-4].yyv.p), yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1284 case 61: 1285 #line 226 "/sys/src/cmd/awk/awkgram.y" 1286 { yyval.p = op2(BOR, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break; 1287 case 62: 1288 #line 228 "/sys/src/cmd/awk/awkgram.y" 1289 { yyval.p = op2(AND, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break; 1290 case 63: 1291 #line 229 "/sys/src/cmd/awk/awkgram.y" 1292 { yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1293 case 64: 1294 #line 230 "/sys/src/cmd/awk/awkgram.y" 1295 { yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1296 case 65: 1297 #line 231 "/sys/src/cmd/awk/awkgram.y" 1298 { yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1299 case 66: 1300 #line 232 "/sys/src/cmd/awk/awkgram.y" 1301 { yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1302 case 67: 1303 #line 233 "/sys/src/cmd/awk/awkgram.y" 1304 { yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1305 case 68: 1306 #line 234 "/sys/src/cmd/awk/awkgram.y" 1307 { yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1308 case 69: 1309 #line 235 "/sys/src/cmd/awk/awkgram.y" 1310 { yyval.p = op3(yypt[-1].yyv.i, NIL, yypt[-2].yyv.p, (Node*)makedfa(yypt[-0].yyv.s, 0)); } break; 1311 case 70: 1312 #line 237 "/sys/src/cmd/awk/awkgram.y" 1313 { if (constnode(yypt[-0].yyv.p)) 1314 yyval.p = op3(yypt[-1].yyv.i, NIL, yypt[-2].yyv.p, (Node*)makedfa(strnode(yypt[-0].yyv.p), 0)); 1315 else 1316 yyval.p = op3(yypt[-1].yyv.i, (Node *)1, yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1317 case 71: 1318 #line 241 "/sys/src/cmd/awk/awkgram.y" 1319 { yyval.p = op2(INTEST, yypt[-2].yyv.p, makearr(yypt[-0].yyv.p)); } break; 1320 case 72: 1321 #line 242 "/sys/src/cmd/awk/awkgram.y" 1322 { yyval.p = op2(INTEST, yypt[-3].yyv.p, makearr(yypt[-0].yyv.p)); } break; 1323 case 73: 1324 #line 243 "/sys/src/cmd/awk/awkgram.y" 1325 { 1326 if (safe) SYNTAX("cmd | getline is unsafe"); 1327 else yyval.p = op3(GETLINE, yypt[-0].yyv.p, itonp(yypt[-2].yyv.i), yypt[-3].yyv.p); } break; 1328 case 74: 1329 #line 246 "/sys/src/cmd/awk/awkgram.y" 1330 { 1331 if (safe) SYNTAX("cmd | getline is unsafe"); 1332 else yyval.p = op3(GETLINE, (Node*)0, itonp(yypt[-1].yyv.i), yypt[-2].yyv.p); } break; 1333 case 75: 1334 #line 249 "/sys/src/cmd/awk/awkgram.y" 1335 { yyval.p = op2(CAT, yypt[-1].yyv.p, yypt[-0].yyv.p); } break; 1336 case 78: 1337 #line 255 "/sys/src/cmd/awk/awkgram.y" 1338 { yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1339 case 79: 1340 #line 256 "/sys/src/cmd/awk/awkgram.y" 1341 { yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1342 case 81: 1343 #line 261 "/sys/src/cmd/awk/awkgram.y" 1344 { yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1345 case 82: 1346 #line 265 "/sys/src/cmd/awk/awkgram.y" 1347 { yyval.p = rectonode(); } break; 1348 case 84: 1349 #line 267 "/sys/src/cmd/awk/awkgram.y" 1350 { yyval.p = yypt[-1].yyv.p; } break; 1351 case 93: 1352 #line 284 "/sys/src/cmd/awk/awkgram.y" 1353 { yyval.p = op3(MATCH, NIL, rectonode(), (Node*)makedfa(yypt[-0].yyv.s, 0)); } break; 1354 case 94: 1355 #line 285 "/sys/src/cmd/awk/awkgram.y" 1356 { yyval.p = op1(NOT, notnull(yypt[-0].yyv.p)); } break; 1357 case 95: 1358 #line 289 "/sys/src/cmd/awk/awkgram.y" 1359 {startreg();} break; 1360 case 96: 1361 #line 289 "/sys/src/cmd/awk/awkgram.y" 1362 { yyval.s = yypt[-1].yyv.s; } break; 1363 case 99: 1364 #line 297 "/sys/src/cmd/awk/awkgram.y" 1365 { 1366 if (safe) SYNTAX("print | is unsafe"); 1367 else yyval.p = stat3(yypt[-3].yyv.i, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break; 1368 case 100: 1369 #line 300 "/sys/src/cmd/awk/awkgram.y" 1370 { 1371 if (safe) SYNTAX("print >> is unsafe"); 1372 else yyval.p = stat3(yypt[-3].yyv.i, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break; 1373 case 101: 1374 #line 303 "/sys/src/cmd/awk/awkgram.y" 1375 { 1376 if (safe) SYNTAX("print > is unsafe"); 1377 else yyval.p = stat3(yypt[-3].yyv.i, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break; 1378 case 102: 1379 #line 306 "/sys/src/cmd/awk/awkgram.y" 1380 { yyval.p = stat3(yypt[-1].yyv.i, yypt[-0].yyv.p, NIL, NIL); } break; 1381 case 103: 1382 #line 307 "/sys/src/cmd/awk/awkgram.y" 1383 { yyval.p = stat2(DELETE, makearr(yypt[-3].yyv.p), yypt[-1].yyv.p); } break; 1384 case 104: 1385 #line 308 "/sys/src/cmd/awk/awkgram.y" 1386 { yyval.p = stat2(DELETE, makearr(yypt[-0].yyv.p), 0); } break; 1387 case 105: 1388 #line 309 "/sys/src/cmd/awk/awkgram.y" 1389 { yyval.p = exptostat(yypt[-0].yyv.p); } break; 1390 case 106: 1391 #line 310 "/sys/src/cmd/awk/awkgram.y" 1392 { yyclearin; SYNTAX("illegal statement"); } break; 1393 case 109: 1394 #line 319 "/sys/src/cmd/awk/awkgram.y" 1395 { if (!inloop) SYNTAX("break illegal outside of loops"); 1396 yyval.p = stat1(BREAK, NIL); } break; 1397 case 110: 1398 #line 321 "/sys/src/cmd/awk/awkgram.y" 1399 { yyval.p = stat1(CLOSE, yypt[-1].yyv.p); } break; 1400 case 111: 1401 #line 322 "/sys/src/cmd/awk/awkgram.y" 1402 { if (!inloop) SYNTAX("continue illegal outside of loops"); 1403 yyval.p = stat1(CONTINUE, NIL); } break; 1404 case 112: 1405 #line 324 "/sys/src/cmd/awk/awkgram.y" 1406 {inloop++;} break; 1407 case 113: 1408 #line 324 "/sys/src/cmd/awk/awkgram.y" 1409 {--inloop;} break; 1410 case 114: 1411 #line 325 "/sys/src/cmd/awk/awkgram.y" 1412 { yyval.p = stat2(DO, yypt[-6].yyv.p, notnull(yypt[-2].yyv.p)); } break; 1413 case 115: 1414 #line 326 "/sys/src/cmd/awk/awkgram.y" 1415 { yyval.p = stat1(EXIT, yypt[-1].yyv.p); } break; 1416 case 116: 1417 #line 327 "/sys/src/cmd/awk/awkgram.y" 1418 { yyval.p = stat1(EXIT, NIL); } break; 1419 case 118: 1420 #line 329 "/sys/src/cmd/awk/awkgram.y" 1421 { yyval.p = stat3(IF, yypt[-3].yyv.p, yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1422 case 119: 1423 #line 330 "/sys/src/cmd/awk/awkgram.y" 1424 { yyval.p = stat3(IF, yypt[-1].yyv.p, yypt[-0].yyv.p, NIL); } break; 1425 case 120: 1426 #line 331 "/sys/src/cmd/awk/awkgram.y" 1427 { yyval.p = yypt[-1].yyv.p; } break; 1428 case 121: 1429 #line 332 "/sys/src/cmd/awk/awkgram.y" 1430 { if (infunc) 1431 SYNTAX("next is illegal inside a function"); 1432 yyval.p = stat1(NEXT, NIL); } break; 1433 case 122: 1434 #line 335 "/sys/src/cmd/awk/awkgram.y" 1435 { if (infunc) 1436 SYNTAX("nextfile is illegal inside a function"); 1437 yyval.p = stat1(NEXTFILE, NIL); } break; 1438 case 123: 1439 #line 338 "/sys/src/cmd/awk/awkgram.y" 1440 { yyval.p = stat1(RETURN, yypt[-1].yyv.p); } break; 1441 case 124: 1442 #line 339 "/sys/src/cmd/awk/awkgram.y" 1443 { yyval.p = stat1(RETURN, NIL); } break; 1444 case 126: 1445 #line 341 "/sys/src/cmd/awk/awkgram.y" 1446 {inloop++;} break; 1447 case 127: 1448 #line 341 "/sys/src/cmd/awk/awkgram.y" 1449 { --inloop; yyval.p = stat2(WHILE, yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1450 case 128: 1451 #line 342 "/sys/src/cmd/awk/awkgram.y" 1452 { yyval.p = 0; } break; 1453 case 130: 1454 #line 347 "/sys/src/cmd/awk/awkgram.y" 1455 { yyval.p = linkum(yypt[-1].yyv.p, yypt[-0].yyv.p); } break; 1456 case 133: 1457 #line 355 "/sys/src/cmd/awk/awkgram.y" 1458 { yyval.p = op2(DIVEQ, yypt[-3].yyv.p, yypt[-0].yyv.p); } break; 1459 case 134: 1460 #line 356 "/sys/src/cmd/awk/awkgram.y" 1461 { yyval.p = op2(ADD, yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1462 case 135: 1463 #line 357 "/sys/src/cmd/awk/awkgram.y" 1464 { yyval.p = op2(MINUS, yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1465 case 136: 1466 #line 358 "/sys/src/cmd/awk/awkgram.y" 1467 { yyval.p = op2(MULT, yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1468 case 137: 1469 #line 359 "/sys/src/cmd/awk/awkgram.y" 1470 { yyval.p = op2(DIVIDE, yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1471 case 138: 1472 #line 360 "/sys/src/cmd/awk/awkgram.y" 1473 { yyval.p = op2(MOD, yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1474 case 139: 1475 #line 361 "/sys/src/cmd/awk/awkgram.y" 1476 { yyval.p = op2(POWER, yypt[-2].yyv.p, yypt[-0].yyv.p); } break; 1477 case 140: 1478 #line 362 "/sys/src/cmd/awk/awkgram.y" 1479 { yyval.p = op1(UMINUS, yypt[-0].yyv.p); } break; 1480 case 141: 1481 #line 363 "/sys/src/cmd/awk/awkgram.y" 1482 { yyval.p = yypt[-0].yyv.p; } break; 1483 case 142: 1484 #line 364 "/sys/src/cmd/awk/awkgram.y" 1485 { yyval.p = op1(NOT, notnull(yypt[-0].yyv.p)); } break; 1486 case 143: 1487 #line 365 "/sys/src/cmd/awk/awkgram.y" 1488 { yyval.p = op2(BLTIN, itonp(yypt[-2].yyv.i), rectonode()); } break; 1489 case 144: 1490 #line 366 "/sys/src/cmd/awk/awkgram.y" 1491 { yyval.p = op2(BLTIN, itonp(yypt[-3].yyv.i), yypt[-1].yyv.p); } break; 1492 case 145: 1493 #line 367 "/sys/src/cmd/awk/awkgram.y" 1494 { yyval.p = op2(BLTIN, itonp(yypt[-0].yyv.i), rectonode()); } break; 1495 case 146: 1496 #line 368 "/sys/src/cmd/awk/awkgram.y" 1497 { yyval.p = op2(CALL, celltonode(yypt[-2].yyv.cp,CVAR), NIL); } break; 1498 case 147: 1499 #line 369 "/sys/src/cmd/awk/awkgram.y" 1500 { yyval.p = op2(CALL, celltonode(yypt[-3].yyv.cp,CVAR), yypt[-1].yyv.p); } break; 1501 case 148: 1502 #line 370 "/sys/src/cmd/awk/awkgram.y" 1503 { yyval.p = op1(PREDECR, yypt[-0].yyv.p); } break; 1504 case 149: 1505 #line 371 "/sys/src/cmd/awk/awkgram.y" 1506 { yyval.p = op1(PREINCR, yypt[-0].yyv.p); } break; 1507 case 150: 1508 #line 372 "/sys/src/cmd/awk/awkgram.y" 1509 { yyval.p = op1(POSTDECR, yypt[-1].yyv.p); } break; 1510 case 151: 1511 #line 373 "/sys/src/cmd/awk/awkgram.y" 1512 { yyval.p = op1(POSTINCR, yypt[-1].yyv.p); } break; 1513 case 152: 1514 #line 374 "/sys/src/cmd/awk/awkgram.y" 1515 { yyval.p = op3(GETLINE, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break; 1516 case 153: 1517 #line 375 "/sys/src/cmd/awk/awkgram.y" 1518 { yyval.p = op3(GETLINE, NIL, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break; 1519 case 154: 1520 #line 376 "/sys/src/cmd/awk/awkgram.y" 1521 { yyval.p = op3(GETLINE, yypt[-0].yyv.p, NIL, NIL); } break; 1522 case 155: 1523 #line 377 "/sys/src/cmd/awk/awkgram.y" 1524 { yyval.p = op3(GETLINE, NIL, NIL, NIL); } break; 1525 case 156: 1526 #line 379 "/sys/src/cmd/awk/awkgram.y" 1527 { yyval.p = op2(INDEX, yypt[-3].yyv.p, yypt[-1].yyv.p); } break; 1528 case 157: 1529 #line 381 "/sys/src/cmd/awk/awkgram.y" 1530 { SYNTAX("index() doesn't permit regular expressions"); 1531 yyval.p = op2(INDEX, yypt[-3].yyv.p, (Node*)yypt[-1].yyv.s); } break; 1532 case 158: 1533 #line 383 "/sys/src/cmd/awk/awkgram.y" 1534 { yyval.p = yypt[-1].yyv.p; } break; 1535 case 159: 1536 #line 385 "/sys/src/cmd/awk/awkgram.y" 1537 { yyval.p = op3(MATCHFCN, NIL, yypt[-3].yyv.p, (Node*)makedfa(yypt[-1].yyv.s, 1)); } break; 1538 case 160: 1539 #line 387 "/sys/src/cmd/awk/awkgram.y" 1540 { if (constnode(yypt[-1].yyv.p)) 1541 yyval.p = op3(MATCHFCN, NIL, yypt[-3].yyv.p, (Node*)makedfa(strnode(yypt[-1].yyv.p), 1)); 1542 else 1543 yyval.p = op3(MATCHFCN, (Node *)1, yypt[-3].yyv.p, yypt[-1].yyv.p); } break; 1544 case 161: 1545 #line 391 "/sys/src/cmd/awk/awkgram.y" 1546 { yyval.p = celltonode(yypt[-0].yyv.cp, CCON); } break; 1547 case 162: 1548 #line 393 "/sys/src/cmd/awk/awkgram.y" 1549 { yyval.p = op4(SPLIT, yypt[-5].yyv.p, makearr(yypt[-3].yyv.p), yypt[-1].yyv.p, (Node*)STRING); } break; 1550 case 163: 1551 #line 395 "/sys/src/cmd/awk/awkgram.y" 1552 { yyval.p = op4(SPLIT, yypt[-5].yyv.p, makearr(yypt[-3].yyv.p), (Node*)makedfa(yypt[-1].yyv.s, 1), (Node *)REGEXPR); } break; 1553 case 164: 1554 #line 397 "/sys/src/cmd/awk/awkgram.y" 1555 { yyval.p = op4(SPLIT, yypt[-3].yyv.p, makearr(yypt[-1].yyv.p), NIL, (Node*)STRING); } break; 1556 case 165: 1557 #line 398 "/sys/src/cmd/awk/awkgram.y" 1558 { yyval.p = op1(yypt[-3].yyv.i, yypt[-1].yyv.p); } break; 1559 case 166: 1560 #line 399 "/sys/src/cmd/awk/awkgram.y" 1561 { yyval.p = celltonode(yypt[-0].yyv.cp, CCON); } break; 1562 case 167: 1563 #line 401 "/sys/src/cmd/awk/awkgram.y" 1564 { yyval.p = op4(yypt[-5].yyv.i, NIL, (Node*)makedfa(yypt[-3].yyv.s, 1), yypt[-1].yyv.p, rectonode()); } break; 1565 case 168: 1566 #line 403 "/sys/src/cmd/awk/awkgram.y" 1567 { if (constnode(yypt[-3].yyv.p)) 1568 yyval.p = op4(yypt[-5].yyv.i, NIL, (Node*)makedfa(strnode(yypt[-3].yyv.p), 1), yypt[-1].yyv.p, rectonode()); 1569 else 1570 yyval.p = op4(yypt[-5].yyv.i, (Node *)1, yypt[-3].yyv.p, yypt[-1].yyv.p, rectonode()); } break; 1571 case 169: 1572 #line 408 "/sys/src/cmd/awk/awkgram.y" 1573 { yyval.p = op4(yypt[-7].yyv.i, NIL, (Node*)makedfa(yypt[-5].yyv.s, 1), yypt[-3].yyv.p, yypt[-1].yyv.p); } break; 1574 case 170: 1575 #line 410 "/sys/src/cmd/awk/awkgram.y" 1576 { if (constnode(yypt[-5].yyv.p)) 1577 yyval.p = op4(yypt[-7].yyv.i, NIL, (Node*)makedfa(strnode(yypt[-5].yyv.p), 1), yypt[-3].yyv.p, yypt[-1].yyv.p); 1578 else 1579 yyval.p = op4(yypt[-7].yyv.i, (Node *)1, yypt[-5].yyv.p, yypt[-3].yyv.p, yypt[-1].yyv.p); } break; 1580 case 171: 1581 #line 415 "/sys/src/cmd/awk/awkgram.y" 1582 { yyval.p = op3(SUBSTR, yypt[-5].yyv.p, yypt[-3].yyv.p, yypt[-1].yyv.p); } break; 1583 case 172: 1584 #line 417 "/sys/src/cmd/awk/awkgram.y" 1585 { yyval.p = op3(SUBSTR, yypt[-3].yyv.p, yypt[-1].yyv.p, NIL); } break; 1586 case 175: 1587 #line 423 "/sys/src/cmd/awk/awkgram.y" 1588 { yyval.p = op2(ARRAY, makearr(yypt[-3].yyv.p), yypt[-1].yyv.p); } break; 1589 case 176: 1590 #line 424 "/sys/src/cmd/awk/awkgram.y" 1591 { yyval.p = op1(INDIRECT, celltonode(yypt[-0].yyv.cp, CVAR)); } break; 1592 case 177: 1593 #line 425 "/sys/src/cmd/awk/awkgram.y" 1594 { yyval.p = op1(INDIRECT, yypt[-0].yyv.p); } break; 1595 case 178: 1596 #line 429 "/sys/src/cmd/awk/awkgram.y" 1597 { arglist = yyval.p = 0; } break; 1598 case 179: 1599 #line 430 "/sys/src/cmd/awk/awkgram.y" 1600 { arglist = yyval.p = celltonode(yypt[-0].yyv.cp,CVAR); } break; 1601 case 180: 1602 #line 431 "/sys/src/cmd/awk/awkgram.y" 1603 { 1604 checkdup(yypt[-2].yyv.p, yypt[-0].yyv.cp); 1605 arglist = yyval.p = linkum(yypt[-2].yyv.p,celltonode(yypt[-0].yyv.cp,CVAR)); } break; 1606 case 181: 1607 #line 437 "/sys/src/cmd/awk/awkgram.y" 1608 { yyval.p = celltonode(yypt[-0].yyv.cp, CVAR); } break; 1609 case 182: 1610 #line 438 "/sys/src/cmd/awk/awkgram.y" 1611 { yyval.p = op1(ARG, itonp(yypt[-0].yyv.i)); } break; 1612 case 183: 1613 #line 439 "/sys/src/cmd/awk/awkgram.y" 1614 { yyval.p = op1(VARNF, (Node *) yypt[-0].yyv.cp); } break; 1615 case 184: 1616 #line 444 "/sys/src/cmd/awk/awkgram.y" 1617 { yyval.p = notnull(yypt[-1].yyv.p); } break; 1618 } 1619 goto yystack; /* stack new state and value */ 1620 } 1621