1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <inttypes.h> 4 # define U(x) x 5 # define NLSTATE yyprevious=YYNEWLINE 6 # define BEGIN yybgin = yysvec + 1 + 7 # define INITIAL 0 8 # define YYLERR yysvec 9 # define YYSTATE (yyestate-yysvec-1) 10 # define YYOPTIM 1 11 # ifndef YYLMAX 12 # define YYLMAX BUFSIZ 13 # endif 14 #ifndef __cplusplus 15 # define output(c) (void)putc(c,yyout) 16 #else 17 # define lex_output(c) (void)putc(c,yyout) 18 #endif 19 20 #if defined(__cplusplus) || defined(__STDC__) 21 22 #if defined(__cplusplus) && defined(__EXTERN_C__) 23 extern "C" { 24 #endif 25 int yyback(int *, int); 26 int yyinput(void); 27 int yylook(void); 28 void yyoutput(int); 29 int yyracc(int); 30 int yyreject(void); 31 void yyunput(int); 32 int yylex(void); 33 #ifdef YYLEX_E 34 void yywoutput(wchar_t); 35 wchar_t yywinput(void); 36 void yywunput(wchar_t); 37 #endif 38 #ifndef yyless 39 int yyless(int); 40 #endif 41 #ifndef yywrap 42 int yywrap(void); 43 #endif 44 #ifdef LEXDEBUG 45 void allprint(char); 46 void sprint(char *); 47 #endif 48 #if defined(__cplusplus) && defined(__EXTERN_C__) 49 } 50 #endif 51 52 #ifdef __cplusplus 53 extern "C" { 54 #endif 55 void exit(int); 56 #ifdef __cplusplus 57 } 58 #endif 59 60 #endif 61 # define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;} 62 # define yymore() (yymorfg=1) 63 #ifndef __cplusplus 64 # define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar) 65 #else 66 # define lex_input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar) 67 #endif 68 #define ECHO fprintf(yyout, "%s",yytext) 69 # define REJECT { nstr = yyreject(); goto yyfussy;} 70 int yyleng; 71 #define YYISARRAY 72 char yytext[YYLMAX]; 73 int yymorfg; 74 extern char *yysptr, yysbuf[]; 75 int yytchar; 76 FILE *yyin = {stdin}, *yyout = {stdout}; 77 extern int yylineno; 78 struct yysvf { 79 struct yywork *yystoff; 80 struct yysvf *yyother; 81 int *yystops;}; 82 struct yysvf *yyestate; 83 extern struct yysvf yysvec[], *yybgin; 84 85 # line 3 "../itm_comp.l" 86 /* 87 * CDDL HEADER START 88 * 89 * The contents of this file are subject to the terms of the 90 * Common Development and Distribution License, Version 1.0 only 91 * (the "License"). You may not use this file except in compliance 92 * with the License. 93 * 94 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 95 * or http://www.opensolaris.org/os/licensing. 96 * See the License for the specific language governing permissions 97 * and limitations under the License. 98 * 99 * When distributing Covered Code, include this CDDL HEADER in each 100 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 101 * If applicable, add the following below this CDDL HEADER, with the 102 * fields enclosed by brackets "[]" replaced with your own identifying 103 * information: Portions Copyright [yyyy] [name of copyright owner] 104 * 105 * CDDL HEADER END 106 * 107 * Copyright (c) 1999 by Sun Microsystems, Inc. 108 * All rights reserved. 109 */ 110 111 #pragma ident "%Z%%M% %I% %E% SMI" 112 113 #include <assert.h> 114 #include <stdio.h> 115 #include <stdlib.h> 116 #include <unistd.h> 117 #include <libintl.h> 118 #include <string.h> 119 120 #include <regexpr.h> 121 122 #include "iconv_tm.h" 123 #include "itmcomp.h" 124 #include "y.tab.h" 125 126 static itm_data_t *hexadecimal_data(int, char *); 127 static itm_data_t *name_data(int, char *); 128 static void filename_lineno(void); 129 static int at_name_to_token(char *); 130 131 132 # define norm 2 133 # define comment 4 134 # define YYNEWLINE 10 135 int yylex(){ 136 int nstr; extern int yyprevious; 137 #ifdef __cplusplus 138 /* to avoid CC and lint complaining yyfussy not being used ...*/ 139 static int __lex_hack = 0; 140 if (__lex_hack) goto yyfussy; 141 #endif 142 while((nstr = yylook()) >= 0) 143 yyfussy: switch(nstr){ 144 case 0: 145 if(yywrap()) return(0); break; 146 case 1: 147 148 # line 62 "../itm_comp.l" 149 ; 150 break; 151 case 2: 152 153 # line 63 "../itm_comp.l" 154 ; 155 break; 156 case 3: 157 158 # line 65 "../itm_comp.l" 159 { 160 filename_lineno(); 161 } 162 break; 163 case 4: 164 165 # line 69 "../itm_comp.l" 166 { 167 if (NULL == cmd_opt.preprocess) { 168 itm_error( 169 gettext("warning: " 170 "preprocess may be required\n")); 171 } 172 } 173 break; 174 case 5: 175 176 # line 77 "../itm_comp.l" 177 { 178 yylval.num = strtoul(yytext, (char **)NULL, 10); 179 return (DECIMAL); 180 } 181 break; 182 case 6: 183 184 # line 82 "../itm_comp.l" 185 { yylval.num = strtoul(yytext, (char **)NULL, 8); 186 return (DECIMAL); 187 } 188 break; 189 case 7: 190 191 # line 86 "../itm_comp.l" 192 { yylval.data = hexadecimal_data(yyleng - 2, yytext + 2); 193 return (HEXADECIMAL); 194 } 195 break; 196 case 8: 197 198 # line 90 "../itm_comp.l" 199 { yylval.data = str_to_data(yyleng, yytext); 200 return (ITMNAME); 201 } 202 break; 203 case 9: 204 205 # line 94 "../itm_comp.l" 206 { return at_name_to_token(yytext); 207 } 208 break; 209 case 10: 210 211 # line 97 "../itm_comp.l" 212 { yylval.num = at_name_to_token(yytext); 213 yylval.data = name_data(yyleng, yytext); 214 return (MAPTYPE_NAME); 215 216 } 217 break; 218 case 11: 219 220 # line 103 "../itm_comp.l" 221 { yylval.num = at_name_to_token(yytext); 222 if (0 != yylval.num) { 223 return (yylval.num); 224 } else { 225 yylval.data = name_data(yyleng, yytext); 226 return (NAME); 227 } 228 } 229 break; 230 case 12: 231 232 # line 113 "../itm_comp.l" 233 {return (CBO);} 234 break; 235 case 13: 236 237 # line 114 "../itm_comp.l" 238 {return (CBC);} 239 break; 240 case 14: 241 242 # line 115 "../itm_comp.l" 243 {return (SBO);} 244 break; 245 case 15: 246 247 # line 116 "../itm_comp.l" 248 {return (SBC);} 249 break; 250 case 16: 251 252 # line 117 "../itm_comp.l" 253 {return (PO);} 254 break; 255 case 17: 256 257 # line 118 "../itm_comp.l" 258 {return (PC);} 259 break; 260 case 18: 261 262 # line 119 "../itm_comp.l" 263 {return (SC);} 264 break; 265 case 19: 266 267 # line 120 "../itm_comp.l" 268 {return (COMMA);} 269 break; 270 case 20: 271 272 # line 121 "../itm_comp.l" 273 {return (COLON);} 274 break; 275 case 21: 276 277 # line 122 "../itm_comp.l" 278 {return (ELLIPSES);} 279 break; 280 case 22: 281 282 # line 125 "../itm_comp.l" 283 {return (ASSIGN);} 284 break; 285 case 23: 286 287 # line 126 "../itm_comp.l" 288 {return (LOR);} 289 break; 290 case 24: 291 292 # line 127 "../itm_comp.l" 293 {return (LAND);} 294 break; 295 case 25: 296 297 # line 128 "../itm_comp.l" 298 {return (OR);} 299 break; 300 case 26: 301 302 # line 129 "../itm_comp.l" 303 {return (XOR);} 304 break; 305 case 27: 306 307 # line 130 "../itm_comp.l" 308 {return (AND);} 309 break; 310 case 28: 311 312 # line 131 "../itm_comp.l" 313 {return (EQ);} 314 break; 315 case 29: 316 317 # line 132 "../itm_comp.l" 318 {return (NE);} 319 break; 320 case 30: 321 322 # line 133 "../itm_comp.l" 323 {return (LT);} 324 break; 325 case 31: 326 327 # line 134 "../itm_comp.l" 328 {return (LE);} 329 break; 330 case 32: 331 332 # line 135 "../itm_comp.l" 333 {return (GT);} 334 break; 335 case 33: 336 337 # line 136 "../itm_comp.l" 338 {return (GE);} 339 break; 340 case 34: 341 342 # line 137 "../itm_comp.l" 343 {return (SHL);} 344 break; 345 case 35: 346 347 # line 138 "../itm_comp.l" 348 {return (SHR);} 349 break; 350 case 36: 351 352 # line 139 "../itm_comp.l" 353 {return (PLUS);} 354 break; 355 case 37: 356 357 # line 140 "../itm_comp.l" 358 {return (MINUS);} 359 break; 360 case 38: 361 362 # line 141 "../itm_comp.l" 363 {return (MUL);} 364 break; 365 case 39: 366 367 # line 142 "../itm_comp.l" 368 {return (DIV);} 369 break; 370 case 40: 371 372 # line 143 "../itm_comp.l" 373 {return (MOD);} 374 break; 375 case 41: 376 377 # line 144 "../itm_comp.l" 378 {return (NOT);} 379 break; 380 case 42: 381 382 # line 145 "../itm_comp.l" 383 {return (NEG);} 384 break; 385 case 43: 386 387 # line 147 "../itm_comp.l" 388 { itm_error( 389 gettext("Unrecognized token '%1$c' \n"), 390 cmd_opt.my_name, yytext[0]); 391 return (0); 392 } 393 break; 394 case -1: 395 break; 396 default: 397 (void)fprintf(yyout,"bad switch yylook %d",nstr); 398 } return(0); } 399 /* end of yylex */ 400 401 # line 154 "../itm_comp.l" 402 403 /* 404 * lexinit - starts the Lexical Analyzer off in the right start condition 405 */ 406 void 407 lexinit() 408 { 409 BEGIN norm; 410 } 411 412 /* does this really need to be here? */ 413 int 414 yywrap() 415 { 416 return (1); 417 } 418 419 void 420 yyerror(char *s) 421 { 422 extern int yylineno; 423 424 itm_error( 425 gettext("%1$s: file(%2$s) line(%3$d) last token(%4$s)\n"), 426 s, itm_input_file, yylineno, yytext); 427 428 exit(ITMC_STATUS_BT); 429 } 430 431 typedef struct { 432 char *name; 433 int token; 434 } at_name_token_t; 435 436 /* 437 * NOT: This table must be sorted alphabetically. 438 */ 439 static at_name_token_t at_table[] = { 440 "@automatic", MAPTYPE_AUTO, 441 "@binary", MAPTYPE_BINARY, 442 "@between", BETWEEN, 443 "@condition", CONDITION, 444 "@default", ITM_DEFAULT, 445 "@dense", MAPTYPE_DENSE, 446 "@direction", DIRECTION, 447 "@discard", DISCARD, 448 "@else", ITM_ELSE, 449 "@error", ERROR, 450 "@escapeseq", ESCAPESEQ, 451 "@false", ITM_FALSE, 452 "@hash", MAPTYPE_HASH, 453 "@identical", ITM_IDENTICAL, 454 "@if", ITM_IF, 455 "@in", ITM_IN, 456 "@index", MAPTYPE_INDEX, 457 "@init", ITM_INIT, 458 "@input", ITM_IN, 459 "@inputsize", ITM_INSIZE, 460 "@map", MAP, 461 "@maptype", MAPTYPE, 462 "@no_change_copy", ITM_IDENTICAL, 463 "@nop", NOP, 464 "@operation", OPERATION, 465 "@out", ITM_OUT, 466 "@output", ITM_OUT, 467 "@output_byte_length", RESULTLEN, 468 "@outputsize", ITM_OUTSIZE, 469 "@printchr", PRINTCHR, 470 "@printhd", PRINTHD, 471 "@printint", PRINTINT, 472 "@reset", RESET, 473 "@resultlen", RESULTLEN, 474 "@return", RETURN, 475 "@true", ITM_TRUE, 476 "automatic", MAPTYPE_AUTO, 477 "between", BETWEEN, 478 "binary", MAPTYPE_BINARY, 479 "break", BREAK, 480 "condition", CONDITION, 481 "default", ITM_DEFAULT, 482 "dense", MAPTYPE_DENSE, 483 "direction", DIRECTION, 484 "discard", DISCARD, 485 "else", ITM_ELSE, 486 "error", ERROR, 487 "escapeseq", ESCAPESEQ, 488 "false", ITM_FALSE, 489 "hash", MAPTYPE_HASH, 490 "if", ITM_IF, 491 "index", MAPTYPE_INDEX, 492 "init", ITM_INIT, 493 "input", ITM_IN, 494 "inputsize", ITM_INSIZE, 495 "map", MAP, 496 "maptype", MAPTYPE, 497 "no_change_copy", ITM_IDENTICAL, 498 "nop", NOP, 499 "operation", OPERATION, 500 "output", ITM_OUT, 501 "output_byte_length", RESULTLEN, 502 "outputsize", ITM_OUTSIZE, 503 "printchr", PRINTCHR, 504 "printhd", PRINTHD, 505 "printint", PRINTINT, 506 "reset", RESET, 507 "return", RETURN, 508 "true", ITM_TRUE, 509 }; 510 511 int 512 at_name_to_token(char *s) 513 { 514 int high; 515 int mid; 516 int low; 517 int result; 518 519 TRACE_MESSAGE('l', ("at_name_to_token: %s", s)); 520 for (low = 0, high = (sizeof (at_table) / 521 sizeof (at_name_token_t)); 522 low < high; /* NOP */) { 523 mid = (low + high) / 2; 524 result = strcmp(s, at_table[mid].name); 525 if (result < 0) { 526 high = mid; 527 } else if (0 < result) { 528 low = mid + 1; 529 } else { /* 0 == result */ 530 TRACE_MESSAGE('l', (" %d\n", at_table[mid].token)); 531 return (at_table[mid].token); 532 } 533 } 534 TRACE_MESSAGE('l', (" - not found\n")); 535 return (0); 536 } 537 538 static itm_data_t * 539 hexadecimal_data(int seqsize, char *seq) 540 { 541 itm_data_t *data; 542 char *binary; 543 int i, j; 544 int val; 545 int high; 546 int low; 547 int size; 548 549 /* size is assured to be multiple of 2 */ 550 assert(seqsize != 0); 551 size = seqsize + 1; 552 size /= 2; 553 if (size > MAXSEQUENCE) { 554 itm_error( 555 gettext(" specified sequence must be less than %$1d\n"), 556 MAXSEQUENCE); 557 return (NULL); 558 } 559 binary = malloc_vital(size); 560 i = j = 0; 561 if (seqsize % 2 != 0) { 562 low = *(seq); 563 if (('0' <= low) && (low <= '9')) { 564 val = (low - '0'); 565 } else if (('a' <= low) && (low <= 'f')) { 566 val = (low - 'a' + 10); 567 } else if (('A' <= low) && (low <= 'F')) { 568 val = (low - 'A' + 10); 569 } 570 *(binary + i) = val; 571 i++; 572 j++; 573 } 574 for (/* NOP */; i < size; i++, j += 2) { 575 high = *(seq + j); 576 low = *(seq + j + 1); 577 if (('0' <= high) && (high <= '9')) { 578 val = ((high - '0') << 4); 579 } else if (('a' <= high) && (high <= 'f')) { 580 val = ((high - 'a' + 10) << 4); 581 } else if (('A' <= high) && (high <= 'F')) { 582 val = ((high - 'A' + 10) << 4); 583 } 584 if (('0' <= low) && (low <= '9')) { 585 val |= (low - '0'); 586 } else if (('a' <= low) && (low <= 'f')) { 587 val |= (low - 'a' + 10); 588 } else if (('A' <= low) && (low <= 'F')) { 589 val |= (low - 'A' + 10); 590 } 591 *(binary + i) = val; 592 } 593 594 data = malloc_vital(sizeof (itm_data_t)); 595 596 data->size = size; 597 if (size <= sizeof (data->place)) { 598 (void) memmove(&(data->place), binary, size); 599 free(binary); 600 } else { 601 data->place.itm_ptr = (itm_place2_t)binary; 602 } 603 604 return (data); 605 } 606 607 static itm_data_t * 608 name_data(int size, char *seq) 609 { 610 itm_data_t *data; 611 612 613 if (size > MAXNAMELENGTH) { 614 itm_error(gettext("the length(%d) exceed limitation(%d)"), 615 size, MAXNAMELENGTH); 616 exit(ITMC_STATUS_BT2); 617 } 618 data = malloc_vital(sizeof (itm_data_t)); 619 620 data->size = size; 621 if (size <= sizeof (data->place)) { 622 (void) memmove(&(data->place), seq, size); 623 } else { 624 data->place.itm_ptr = (itm_place2_t)malloc_vital(size); 625 (void) memmove((char *)(data->place.itm_ptr), seq, size); 626 } 627 628 return (data); 629 } 630 631 static void 632 filename_lineno(void) 633 { 634 static char *re; 635 static char restr[] = 636 "^#[ \t]*\\([0-9]\\{1,\\}\\)[ \t]*\"\\(.*\\)\".*"; 637 int match; 638 extern char *braslist[]; 639 extern char *braelist[]; 640 static char *filename; 641 int len; 642 int lineno; 643 644 if (NULL == re) { 645 re = compile(restr, NULL, NULL); 646 if (NULL == re) { 647 itm_error( 648 gettext("REGEXP compile error\n")); 649 exit(ITMC_STATUS_BT); 650 } 651 } 652 match = step(yytext, re); 653 if (0 != match) { 654 lineno = atoi(braslist[0]); 655 free(filename); 656 len = braelist[1] - braslist[1]; 657 filename = malloc_vital(len + 1); 658 (void) memcpy(filename, braslist[1], len); 659 *(filename + len) = '\0'; 660 itm_input_file = filename; 661 yylineno = lineno; 662 } 663 } 664 int yyvstop[] = { 665 0, 666 667 43, 668 0, 669 670 1, 671 43, 672 0, 673 674 1, 675 0, 676 677 43, 678 0, 679 680 41, 681 43, 682 0, 683 684 40, 685 43, 686 0, 687 688 27, 689 43, 690 0, 691 692 16, 693 43, 694 0, 695 696 17, 697 43, 698 0, 699 700 38, 701 43, 702 0, 703 704 36, 705 43, 706 0, 707 708 19, 709 43, 710 0, 711 712 37, 713 43, 714 0, 715 716 43, 717 0, 718 719 39, 720 43, 721 0, 722 723 5, 724 43, 725 0, 726 727 5, 728 43, 729 0, 730 731 20, 732 43, 733 0, 734 735 18, 736 43, 737 0, 738 739 30, 740 43, 741 0, 742 743 22, 744 43, 745 0, 746 747 32, 748 43, 749 0, 750 751 43, 752 0, 753 754 11, 755 43, 756 0, 757 758 14, 759 43, 760 0, 761 762 15, 763 43, 764 0, 765 766 26, 767 43, 768 0, 769 770 11, 771 43, 772 0, 773 774 11, 775 43, 776 0, 777 778 11, 779 43, 780 0, 781 782 11, 783 43, 784 0, 785 786 11, 787 43, 788 0, 789 790 12, 791 43, 792 0, 793 794 25, 795 43, 796 0, 797 798 13, 799 43, 800 0, 801 802 42, 803 43, 804 0, 805 806 43, 807 0, 808 809 29, 810 0, 811 812 24, 813 0, 814 815 5, 816 0, 817 818 5, 819 0, 820 821 34, 822 0, 823 824 31, 825 0, 826 827 28, 828 0, 829 830 33, 831 0, 832 833 35, 834 0, 835 836 9, 837 0, 838 839 11, 840 0, 841 842 11, 843 0, 844 845 11, 846 0, 847 848 11, 849 0, 850 851 11, 852 0, 853 854 11, 855 0, 856 857 23, 858 0, 859 860 4, 861 0, 862 863 8, 864 0, 865 866 21, 867 0, 868 869 2, 870 0, 871 872 5, 873 6, 874 0, 875 876 7, 877 0, 878 879 11, 880 0, 881 882 11, 883 0, 884 885 11, 886 0, 887 888 11, 889 0, 890 891 11, 892 0, 893 894 8, 895 0, 896 897 8, 898 0, 899 900 11, 901 0, 902 903 11, 904 0, 905 906 11, 907 0, 908 909 10, 910 11, 911 0, 912 913 11, 914 0, 915 916 11, 917 0, 918 919 11, 920 0, 921 922 3, 923 4, 924 0, 925 926 8, 927 0, 928 929 8, 930 0, 931 932 11, 933 0, 934 935 11, 936 0, 937 938 11, 939 0, 940 0}; 941 # define YYTYPE unsigned char 942 struct yywork { YYTYPE verify, advance; } yycrank[] = { 943 0,0, 0,0, 1,7, 0,0, 944 0,0, 0,0, 0,0, 0,0, 945 0,0, 0,0, 1,8, 1,9, 946 8,9, 8,9, 1,10, 84,86, 947 0,0, 0,0, 0,0, 0,0, 948 0,0, 0,0, 0,0, 0,0, 949 0,0, 0,0, 0,0, 0,0, 950 69,69, 0,0, 66,69, 0,0, 951 0,0, 0,0, 1,11, 8,9, 952 0,0, 0,0, 1,12, 1,13, 953 84,94, 1,14, 1,15, 1,16, 954 1,17, 1,18, 1,19, 1,20, 955 1,21, 1,22, 1,23, 1,23, 956 1,23, 1,23, 1,23, 1,23, 957 1,23, 1,23, 66,70, 1,24, 958 1,25, 1,26, 1,27, 1,28, 959 0,0, 1,29, 1,30, 69,69, 960 0,0, 66,66, 0,0, 0,0, 961 1,30, 0,0, 0,0, 69,69, 962 0,0, 66,66, 0,0, 11,0, 963 11,0, 13,0, 13,0, 11,0, 964 0,0, 13,0, 71,86, 0,0, 965 0,0, 14,0, 14,0, 0,0, 966 1,31, 14,0, 1,32, 1,33, 967 0,0, 0,0, 1,34, 1,35, 968 0,0, 1,36, 11,0, 0,0, 969 13,0, 1,37, 1,38, 11,45, 970 0,0, 13,45, 13,47, 71,87, 971 14,0, 0,0, 71,70, 0,0, 972 0,0, 14,45, 0,0, 0,0, 973 0,0, 0,0, 0,0, 0,0, 974 1,39, 1,40, 1,41, 1,42, 975 2,11, 0,0, 2,43, 11,46, 976 2,12, 2,13, 0,0, 2,14, 977 2,15, 2,16, 2,17, 2,18, 978 2,19, 2,20, 2,21, 0,0, 979 2,23, 2,23, 2,23, 2,23, 980 2,23, 2,23, 2,23, 0,0, 981 0,0, 2,24, 2,25, 2,26, 982 2,27, 2,28, 0,0, 2,29, 983 0,0, 0,0, 15,0, 15,0, 984 0,0, 0,0, 15,0, 0,0, 985 16,0, 16,0, 0,0, 0,0, 986 16,0, 0,0, 17,0, 17,0, 987 86,86, 0,0, 17,0, 0,0, 988 18,0, 18,0, 0,0, 0,0, 989 18,0, 15,0, 2,31, 0,0, 990 2,32, 2,33, 15,45, 16,0, 991 2,34, 2,35, 0,0, 2,36, 992 16,45, 17,0, 0,0, 2,37, 993 2,38, 86,94, 17,45, 18,0, 994 0,0, 0,0, 0,0, 0,0, 995 18,45, 0,0, 0,0, 0,0, 996 0,0, 0,0, 0,0, 86,69, 997 0,0, 0,0, 2,39, 2,40, 998 2,41, 2,42, 3,11, 86,69, 999 0,0, 0,0, 3,12, 3,13, 1000 0,0, 3,14, 3,15, 3,16, 1001 3,17, 3,18, 3,19, 3,20, 1002 3,21, 0,0, 3,23, 3,23, 1003 3,23, 3,23, 3,23, 3,23, 1004 3,23, 0,0, 0,0, 3,24, 1005 3,25, 3,26, 3,27, 3,28, 1006 0,0, 3,29, 0,0, 0,0, 1007 19,0, 19,0, 0,0, 0,0, 1008 19,0, 0,0, 20,0, 20,0, 1009 0,0, 0,0, 20,0, 0,0, 1010 21,0, 21,0, 0,0, 0,0, 1011 21,0, 0,0, 24,0, 24,0, 1012 0,0, 0,0, 24,0, 19,0, 1013 3,31, 0,0, 3,32, 3,33, 1014 19,45, 20,0, 3,34, 3,35, 1015 0,0, 3,36, 20,45, 21,0, 1016 0,0, 3,37, 3,38, 0,0, 1017 21,45, 24,0, 0,0, 20,48, 1018 0,0, 0,0, 24,45, 0,0, 1019 0,0, 0,0, 21,49, 0,0, 1020 0,0, 0,0, 0,0, 0,0, 1021 3,39, 3,40, 3,41, 3,42, 1022 4,11, 0,0, 4,43, 0,0, 1023 4,12, 4,13, 0,0, 4,14, 1024 4,15, 4,16, 4,17, 4,18, 1025 4,19, 4,20, 4,21, 0,0, 1026 4,23, 4,23, 4,23, 4,23, 1027 4,23, 4,23, 4,23, 0,0, 1028 0,0, 4,24, 4,25, 4,26, 1029 4,27, 4,28, 0,0, 4,29, 1030 0,0, 0,0, 23,0, 23,0, 1031 0,0, 0,0, 23,0, 0,0, 1032 25,0, 25,0, 0,0, 0,0, 1033 25,0, 0,0, 31,0, 31,0, 1034 0,0, 0,0, 31,0, 0,0, 1035 32,0, 32,0, 0,0, 0,0, 1036 32,0, 23,0, 4,31, 0,0, 1037 4,32, 4,33, 23,45, 25,0, 1038 4,34, 4,35, 0,0, 4,36, 1039 25,45, 31,0, 0,0, 4,37, 1040 4,38, 23,51, 31,45, 32,0, 1041 0,0, 0,0, 0,0, 0,0, 1042 32,45, 23,51, 0,0, 0,0, 1043 0,0, 0,0, 0,0, 0,0, 1044 0,0, 0,0, 4,39, 4,40, 1045 4,41, 4,42, 5,11, 0,0, 1046 0,0, 0,0, 5,12, 5,13, 1047 0,0, 5,14, 5,15, 5,16, 1048 5,17, 5,18, 5,19, 5,20, 1049 5,21, 0,0, 5,23, 5,23, 1050 5,23, 5,23, 5,23, 5,23, 1051 5,23, 0,0, 0,0, 5,24, 1052 5,25, 5,26, 5,27, 5,28, 1053 0,0, 5,29, 0,0, 0,0, 1054 26,0, 26,0, 0,0, 0,0, 1055 26,0, 0,0, 0,0, 0,0, 1056 0,0, 0,0, 0,0, 27,0, 1057 27,0, 33,0, 33,0, 27,0, 1058 0,0, 33,0, 0,0, 0,0, 1059 0,0, 39,0, 39,0, 26,0, 1060 5,31, 39,0, 5,32, 5,33, 1061 26,45, 0,0, 5,34, 5,35, 1062 0,0, 5,36, 27,0, 0,0, 1063 33,0, 5,37, 5,38, 27,45, 1064 0,0, 33,45, 0,0, 0,0, 1065 39,0, 0,0, 0,0, 0,0, 1066 0,0, 39,45, 0,0, 26,53, 1067 26,54, 0,0, 0,0, 0,0, 1068 5,39, 5,40, 5,41, 5,42, 1069 6,11, 0,0, 6,43, 27,55, 1070 6,12, 6,13, 0,0, 6,14, 1071 6,15, 6,16, 6,17, 6,18, 1072 6,19, 6,20, 6,21, 0,0, 1073 6,23, 6,23, 6,23, 6,23, 1074 6,23, 6,23, 6,23, 0,0, 1075 0,0, 6,24, 6,25, 6,26, 1076 6,27, 6,28, 0,0, 6,29, 1077 7,44, 0,0, 22,0, 22,0, 1078 0,0, 0,0, 22,0, 0,0, 1079 7,0, 7,0, 0,0, 0,0, 1080 7,0, 0,0, 28,0, 28,0, 1081 0,0, 0,0, 28,0, 0,0, 1082 40,0, 40,0, 0,0, 0,0, 1083 40,0, 22,0, 6,31, 0,0, 1084 6,32, 6,33, 22,45, 7,0, 1085 6,34, 6,35, 0,0, 6,36, 1086 7,45, 28,0, 0,0, 6,37, 1087 6,38, 22,50, 28,45, 40,0, 1088 0,0, 0,0, 0,0, 7,44, 1089 40,45, 22,51, 29,0, 29,0, 1090 30,0, 30,0, 29,0, 7,44, 1091 30,0, 0,0, 6,39, 6,40, 1092 6,41, 6,42, 0,0, 0,0, 1093 7,44, 0,0, 28,56, 28,57, 1094 0,0, 0,0, 7,44, 0,0, 1095 0,0, 29,0, 34,44, 30,0, 1096 0,0, 0,0, 29,45, 0,0, 1097 30,45, 22,52, 34,0, 34,0, 1098 35,44, 0,0, 34,0, 0,0, 1099 0,0, 29,58, 0,0, 30,59, 1100 35,0, 35,0, 41,0, 41,0, 1101 35,0, 29,58, 41,0, 30,59, 1102 0,0, 0,0, 0,0, 0,0, 1103 0,0, 34,0, 29,58, 0,0, 1104 30,59, 0,0, 34,45, 0,0, 1105 29,58, 22,52, 30,59, 35,0, 1106 36,44, 41,0, 0,0, 0,0, 1107 35,45, 34,59, 41,45, 0,0, 1108 36,0, 36,0, 0,0, 0,0, 1109 36,0, 34,59, 0,0, 35,59, 1110 42,0, 42,0, 37,44, 40,65, 1111 42,0, 0,0, 34,59, 35,59, 1112 0,0, 0,0, 37,0, 37,0, 1113 34,59, 0,0, 37,0, 36,0, 1114 35,59, 0,0, 0,0, 0,0, 1115 36,45, 0,0, 35,59, 42,0, 1116 0,0, 0,0, 0,0, 0,0, 1117 42,45, 0,0, 0,0, 36,59, 1118 38,44, 37,0, 0,0, 0,0, 1119 0,0, 0,0, 37,45, 36,59, 1120 38,0, 38,0, 44,0, 44,0, 1121 38,0, 0,0, 44,0, 0,0, 1122 36,59, 37,59, 0,0, 0,0, 1123 43,66, 0,0, 36,59, 0,0, 1124 35,61, 37,59, 34,60, 0,0, 1125 43,67, 43,68, 0,0, 38,0, 1126 43,69, 44,0, 37,59, 0,0, 1127 38,45, 0,0, 44,45, 0,0, 1128 37,59, 45,72, 0,0, 0,0, 1129 0,0, 0,0, 0,0, 38,59, 1130 0,0, 45,0, 45,0, 0,0, 1131 36,62, 45,0, 0,0, 38,59, 1132 43,70, 46,0, 46,0, 47,0, 1133 47,0, 46,0, 0,0, 47,0, 1134 38,59, 0,0, 37,63, 43,71, 1135 0,0, 0,0, 38,59, 0,0, 1136 45,0, 0,0, 0,0, 43,71, 1137 0,0, 45,0, 0,0, 76,88, 1138 46,0, 0,0, 47,0, 0,0, 1139 43,66, 46,45, 0,0, 47,45, 1140 45,72, 49,49, 43,66, 48,0, 1141 48,0, 0,0, 0,0, 48,0, 1142 45,72, 49,74, 49,75, 50,0, 1143 50,0, 49,74, 0,0, 50,0, 1144 0,0, 45,72, 0,0, 0,0, 1145 0,0, 38,64, 0,0, 45,72, 1146 0,0, 0,0, 48,0, 0,0, 1147 0,0, 51,0, 51,0, 48,45, 1148 0,0, 51,0, 50,0, 0,0, 1149 0,0, 49,76, 76,88, 50,45, 1150 48,73, 52,0, 52,0, 0,0, 1151 0,0, 52,0, 76,88, 0,0, 1152 49,49, 0,0, 50,77, 0,0, 1153 51,0, 0,0, 0,0, 76,88, 1154 49,49, 51,45, 50,51, 53,0, 1155 53,0, 76,88, 0,0, 53,0, 1156 52,0, 49,49, 54,0, 54,0, 1157 51,51, 52,45, 54,0, 49,49, 1158 0,0, 55,0, 55,0, 0,0, 1159 51,51, 55,0, 0,0, 0,0, 1160 52,78, 0,0, 53,0, 0,0, 1161 0,0, 0,0, 88,88, 53,45, 1162 52,78, 54,0, 0,0, 56,0, 1163 56,0, 0,0, 54,45, 56,0, 1164 55,0, 52,78, 57,0, 57,0, 1165 0,0, 55,45, 57,0, 0,0, 1166 58,0, 58,0, 59,0, 59,0, 1167 58,0, 0,0, 59,0, 0,0, 1168 0,0, 0,0, 56,0, 0,0, 1169 60,44, 0,0, 0,0, 56,45, 1170 0,0, 57,0, 0,0, 0,0, 1171 60,0, 60,0, 57,45, 58,0, 1172 60,0, 59,0, 0,0, 0,0, 1173 58,45, 88,88, 59,45, 0,0, 1174 61,0, 61,0, 0,0, 0,0, 1175 61,0, 88,88, 0,0, 58,58, 1176 101,103, 59,59, 0,0, 60,0, 1177 0,0, 0,0, 88,88, 58,58, 1178 60,45, 59,59, 62,0, 62,0, 1179 88,88, 0,0, 62,0, 61,0, 1180 58,58, 0,0, 59,59, 60,59, 1181 61,45, 0,0, 58,58, 0,0, 1182 59,59, 0,0, 0,0, 60,59, 1183 0,0, 0,0, 0,0, 63,44, 1184 0,0, 62,0, 0,0, 0,0, 1185 60,59, 0,0, 62,45, 63,0, 1186 63,0, 0,0, 60,59, 63,0, 1187 64,44, 65,0, 65,0, 101,103, 1188 0,0, 65,0, 0,0, 67,69, 1189 64,0, 64,0, 0,0, 101,103, 1190 64,0, 0,0, 70,85, 67,67, 1191 67,68, 0,0, 63,0, 67,69, 1192 101,103, 0,0, 70,69, 63,45, 1193 65,0, 0,0, 101,103, 0,0, 1194 0,0, 65,45, 0,0, 64,0, 1195 0,0, 0,0, 63,59, 0,0, 1196 64,45, 72,0, 72,0, 0,0, 1197 0,0, 72,0, 63,59, 60,79, 1198 0,0, 0,0, 0,0, 64,59, 1199 0,0, 61,80, 0,0, 63,59, 1200 73,0, 73,0, 67,84, 64,59, 1201 73,0, 63,59, 0,0, 0,0, 1202 72,0, 70,85, 67,84, 0,0, 1203 64,59, 72,0, 0,0, 62,81, 1204 85,85, 70,85, 64,59, 67,69, 1205 0,0, 74,74, 0,0, 73,0, 1206 85,69, 67,69, 70,85, 0,0, 1207 73,45, 74,74, 74,75, 0,0, 1208 70,85, 74,74, 77,0, 77,0, 1209 78,0, 78,0, 77,0, 0,0, 1210 78,0, 0,0, 0,0, 79,44, 1211 80,0, 80,0, 0,0, 64,83, 1212 80,0, 63,82, 0,0, 79,0, 1213 79,0, 0,0, 0,0, 79,0, 1214 96,102, 77,0, 0,0, 78,0, 1215 0,0, 0,0, 77,45, 85,85, 1216 78,45, 81,0, 81,0, 80,0, 1217 74,74, 81,0, 0,0, 85,85, 1218 80,45, 77,77, 79,0, 78,78, 1219 74,74, 0,0, 0,0, 79,45, 1220 85,85, 77,51, 0,0, 78,78, 1221 0,0, 74,74, 85,85, 82,44, 1222 81,0, 96,103, 79,59, 74,74, 1223 78,78, 81,45, 0,0, 82,0, 1224 82,0, 0,0, 79,59, 82,0, 1225 87,87, 83,0, 83,0, 96,102, 1226 0,0, 83,0, 0,0, 79,59, 1227 87,94, 87,68, 0,0, 96,102, 1228 87,94, 79,59, 0,0, 0,0, 1229 0,0, 0,0, 82,0, 0,0, 1230 96,102, 91,0, 91,0, 82,45, 1231 83,0, 91,0, 96,102, 0,0, 1232 0,0, 83,45, 0,0, 89,44, 1233 80,90, 87,95, 82,59, 0,0, 1234 87,96, 0,0, 0,0, 89,0, 1235 89,0, 0,0, 82,59, 89,0, 1236 91,0, 0,0, 0,0, 87,87, 1237 0,0, 91,45, 0,0, 82,59, 1238 0,0, 79,89, 0,0, 87,87, 1239 0,0, 82,59, 0,0, 0,0, 1240 90,44, 0,0, 89,0, 0,0, 1241 87,87, 0,0, 0,0, 89,45, 1242 90,0, 90,0, 87,87, 81,91, 1243 90,0, 0,0, 0,0, 92,0, 1244 92,0, 0,0, 89,59, 92,0, 1245 93,44, 0,0, 0,0, 0,0, 1246 0,0, 0,0, 89,59, 0,0, 1247 93,0, 93,0, 82,92, 90,0, 1248 93,0, 83,93, 0,0, 89,59, 1249 90,45, 0,0, 92,0, 0,0, 1250 94,94, 89,59, 0,0, 92,45, 1251 0,0, 0,0, 0,0, 90,59, 1252 94,94, 94,68, 0,0, 93,0, 1253 94,94, 91,92, 92,59, 90,59, 1254 93,45, 97,0, 97,0, 102,102, 1255 95,95, 97,0, 92,59, 0,0, 1256 90,59, 0,0, 0,0, 93,59, 1257 95,99, 95,100, 90,59, 92,59, 1258 95,99, 94,99, 0,0, 93,59, 1259 0,0, 92,59, 0,0, 89,97, 1260 97,0, 0,0, 0,0, 0,0, 1261 93,59, 97,45, 103,103, 94,94, 1262 0,0, 98,44, 93,59, 99,99, 1263 102,103, 0,0, 0,0, 94,94, 1264 95,101, 98,0, 98,0, 99,99, 1265 99,100, 98,0, 0,0, 99,99, 1266 94,94, 0,0, 102,102, 95,95, 1267 0,0, 0,0, 94,94, 0,0, 1268 0,0, 90,98, 102,102, 95,95, 1269 0,0, 0,0, 0,0, 0,0, 1270 98,0, 0,0, 0,0, 102,102, 1271 95,95, 98,45, 0,0, 0,0, 1272 0,0, 102,102, 95,95, 0,0, 1273 0,0, 103,103, 0,0, 0,0, 1274 98,59, 0,0, 99,99, 93,92, 1275 0,0, 103,103, 0,0, 0,0, 1276 98,59, 97,104, 99,99, 104,0, 1277 104,0, 0,0, 103,103, 104,0, 1278 0,0, 98,59, 0,0, 99,99, 1279 103,103, 0,0, 0,0, 98,59, 1280 0,0, 99,99, 105,0, 105,0, 1281 106,44, 0,0, 105,0, 0,0, 1282 0,0, 0,0, 104,0, 0,0, 1283 106,0, 106,0, 0,0, 104,45, 1284 106,0, 0,0, 0,0, 0,0, 1285 0,0, 0,0, 0,0, 0,0, 1286 0,0, 105,0, 0,0, 0,0, 1287 0,0, 0,0, 105,45, 0,0, 1288 0,0, 0,0, 0,0, 106,0, 1289 0,0, 0,0, 0,0, 0,0, 1290 106,45, 0,0, 0,0, 0,0, 1291 0,0, 0,0, 0,0, 0,0, 1292 0,0, 98,92, 0,0, 106,59, 1293 0,0, 0,0, 0,0, 0,0, 1294 0,0, 0,0, 0,0, 106,59, 1295 0,0, 0,0, 0,0, 0,0, 1296 0,0, 0,0, 0,0, 0,0, 1297 106,59, 0,0, 0,0, 0,0, 1298 0,0, 0,0, 106,59, 0,0, 1299 0,0, 0,0, 0,0, 0,0, 1300 0,0, 0,0, 0,0, 0,0, 1301 0,0, 0,0, 0,0, 0,0, 1302 0,0, 0,0, 0,0, 0,0, 1303 0,0, 0,0, 104,105, 0,0, 1304 0,0, 0,0, 105,106, 0,0, 1305 0,0, 0,0, 106,92, 0,0, 1306 0,0}; 1307 struct yysvf yysvec[] = { 1308 0, 0, 0, 1309 yycrank+-1, 0, 0, 1310 yycrank+-95, yysvec+1, 0, 1311 yycrank+-189, yysvec+1, 0, 1312 yycrank+-283, yysvec+1, 0, 1313 yycrank+-377, yysvec+1, 0, 1314 yycrank+-471, yysvec+1, 0, 1315 yycrank+-535, 0, yyvstop+1, 1316 yycrank+3, 0, yyvstop+3, 1317 yycrank+0, yysvec+8, yyvstop+6, 1318 yycrank+0, 0, yyvstop+8, 1319 yycrank+-70, yysvec+7, yyvstop+10, 1320 yycrank+0, 0, yyvstop+13, 1321 yycrank+-72, yysvec+7, yyvstop+16, 1322 yycrank+-80, yysvec+7, yyvstop+19, 1323 yycrank+-153, yysvec+7, yyvstop+22, 1324 yycrank+-159, yysvec+7, yyvstop+25, 1325 yycrank+-165, yysvec+7, yyvstop+28, 1326 yycrank+-171, yysvec+7, yyvstop+31, 1327 yycrank+-247, yysvec+7, yyvstop+34, 1328 yycrank+-253, yysvec+7, yyvstop+37, 1329 yycrank+-259, yysvec+7, yyvstop+39, 1330 yycrank+-529, yysvec+7, yyvstop+42, 1331 yycrank+-341, yysvec+7, yyvstop+45, 1332 yycrank+-265, yysvec+7, yyvstop+48, 1333 yycrank+-347, yysvec+7, yyvstop+51, 1334 yycrank+-435, yysvec+7, yyvstop+54, 1335 yycrank+-446, yysvec+7, yyvstop+57, 1336 yycrank+-541, yysvec+7, yyvstop+60, 1337 yycrank+-577, yysvec+7, yyvstop+63, 1338 yycrank+-579, yysvec+7, yyvstop+65, 1339 yycrank+-353, yysvec+7, yyvstop+68, 1340 yycrank+-359, yysvec+7, yyvstop+71, 1341 yycrank+-448, yysvec+7, yyvstop+74, 1342 yycrank+-609, 0, yyvstop+77, 1343 yycrank+-619, 0, yyvstop+80, 1344 yycrank+-651, 0, yyvstop+83, 1345 yycrank+-669, 0, yyvstop+86, 1346 yycrank+-699, 0, yyvstop+89, 1347 yycrank+-456, yysvec+7, yyvstop+92, 1348 yycrank+-547, yysvec+7, yyvstop+95, 1349 yycrank+-621, yysvec+7, yyvstop+98, 1350 yycrank+-659, yysvec+7, yyvstop+101, 1351 yycrank+-719, 0, yyvstop+104, 1352 yycrank+-701, yysvec+7, 0, 1353 yycrank+-740, 0, 0, 1354 yycrank+-748, yysvec+7, yyvstop+106, 1355 yycrank+-750, yysvec+7, yyvstop+108, 1356 yycrank+-782, yysvec+7, 0, 1357 yycrank+-788, 0, 0, 1358 yycrank+-790, yysvec+7, yyvstop+110, 1359 yycrank+-808, yysvec+7, yyvstop+112, 1360 yycrank+-820, yysvec+7, 0, 1361 yycrank+-838, yysvec+7, yyvstop+114, 1362 yycrank+-845, yysvec+7, yyvstop+116, 1363 yycrank+-852, yysvec+7, yyvstop+118, 1364 yycrank+-870, yysvec+7, yyvstop+120, 1365 yycrank+-877, yysvec+7, yyvstop+122, 1366 yycrank+-883, yysvec+7, yyvstop+124, 1367 yycrank+-885, yysvec+7, yyvstop+126, 1368 yycrank+-903, 0, yyvstop+128, 1369 yycrank+-915, yysvec+38, yyvstop+130, 1370 yycrank+-933, yysvec+38, yyvstop+132, 1371 yycrank+-962, 0, yyvstop+134, 1372 yycrank+-975, 0, yyvstop+136, 1373 yycrank+-968, yysvec+7, yyvstop+138, 1374 yycrank+-21, yysvec+43, 0, 1375 yycrank+-982, 0, 0, 1376 yycrank+0, 0, yyvstop+140, 1377 yycrank+-19, yysvec+67, 0, 1378 yycrank+-989, yysvec+67, 0, 1379 yycrank+-77, yysvec+43, 0, 1380 yycrank+-1004, yysvec+45, yyvstop+142, 1381 yycrank+-1019, yysvec+7, yyvstop+144, 1382 yycrank+-1048, 0, 0, 1383 yycrank+0, 0, yyvstop+146, 1384 yycrank+-778, yysvec+74, 0, 1385 yycrank+-1053, yysvec+7, yyvstop+148, 1386 yycrank+-1055, yysvec+7, yyvstop+151, 1387 yycrank+-1070, 0, yyvstop+153, 1388 yycrank+-1063, yysvec+37, yyvstop+155, 1389 yycrank+-1084, yysvec+63, yyvstop+157, 1390 yycrank+-1114, 0, yyvstop+159, 1391 yycrank+-1120, yysvec+36, yyvstop+161, 1392 yycrank+-6, yysvec+67, 0, 1393 yycrank+-1043, yysvec+67, yyvstop+163, 1394 yycrank+-167, yysvec+67, 0, 1395 yycrank+-1127, 0, 0, 1396 yycrank+-873, yysvec+74, yyvstop+165, 1397 yycrank+-1158, 0, yyvstop+167, 1398 yycrank+-1187, 0, yyvstop+169, 1399 yycrank+-1140, yysvec+36, yyvstop+171, 1400 yycrank+-1194, yysvec+7, yyvstop+173, 1401 yycrank+-1207, 0, yyvstop+176, 1402 yycrank+-1227, 0, 0, 1403 yycrank+-1247, 0, 0, 1404 yycrank+-1083, yysvec+94, 0, 1405 yycrank+-1236, yysvec+37, yyvstop+178, 1406 yycrank+-1276, 0, yyvstop+180, 1407 yycrank+-1278, 0, 0, 1408 yycrank+0, 0, yyvstop+182, 1409 yycrank+-931, yysvec+99, 0, 1410 yycrank+-1246, yysvec+94, yyvstop+185, 1411 yycrank+-1273, yysvec+99, yyvstop+187, 1412 yycrank+-1326, yysvec+60, yyvstop+189, 1413 yycrank+-1341, yysvec+35, yyvstop+191, 1414 yycrank+-1351, 0, yyvstop+193, 1415 0, 0, 0}; 1416 struct yywork *yytop = yycrank+1450; 1417 struct yysvf *yybgin = yysvec+1; 1418 char yymatch[] = { 1419 0, 1, 1, 1, 1, 1, 1, 1, 1420 1, 9, 10, 1, 1, 13, 1, 1, 1421 1, 1, 1, 1, 1, 1, 1, 1, 1422 1, 1, 1, 1, 1, 1, 1, 1, 1423 9, 1, 1, 1, 1, 13, 1, 1, 1424 1, 1, 1, 1, 1, 1, 1, 1, 1425 48, 48, 48, 48, 48, 48, 48, 48, 1426 56, 56, 1, 1, 1, 1, 1, 1, 1427 1, 65, 65, 65, 65, 65, 65, 71, 1428 71, 71, 71, 71, 71, 71, 71, 71, 1429 71, 71, 71, 71, 71, 71, 71, 71, 1430 71, 71, 71, 1, 1, 1, 1, 71, 1431 1, 65, 65, 65, 65, 65, 65, 71, 1432 71, 71, 71, 71, 71, 71, 71, 71, 1433 71, 71, 71, 71, 71, 71, 71, 71, 1434 71, 71, 71, 1, 1, 1, 1, 1, 1435 1, 1, 1, 1, 1, 1, 1, 1, 1436 1, 1, 1, 1, 1, 1, 1, 1, 1437 1, 1, 1, 1, 1, 1, 1, 1, 1438 1, 1, 1, 1, 1, 1, 1, 1, 1439 1, 1, 1, 1, 1, 1, 1, 1, 1440 1, 1, 1, 1, 1, 1, 1, 1, 1441 1, 1, 1, 1, 1, 1, 1, 1, 1442 1, 1, 1, 1, 1, 1, 1, 1, 1443 1, 1, 1, 1, 1, 1, 1, 1, 1444 1, 1, 1, 1, 1, 1, 1, 1, 1445 1, 1, 1, 1, 1, 1, 1, 1, 1446 1, 1, 1, 1, 1, 1, 1, 1, 1447 1, 1, 1, 1, 1, 1, 1, 1, 1448 1, 1, 1, 1, 1, 1, 1, 1, 1449 1, 1, 1, 1, 1, 1, 1, 1, 1450 1, 1, 1, 1, 1, 1, 1, 1, 1451 0}; 1452 char yyextra[] = { 1453 0,0,0,0,0,0,0,0, 1454 0,0,0,0,0,0,0,0, 1455 0,0,0,0,0,0,0,0, 1456 0,0,0,0,0,0,0,0, 1457 0,0,0,0,0,0,0,0, 1458 0,0,0,0,0,0,0,0, 1459 0}; 1460 /* 1461 * CDDL HEADER START 1462 * 1463 * The contents of this file are subject to the terms of the 1464 * Common Development and Distribution License, Version 1.0 only 1465 * (the "License"). You may not use this file except in compliance 1466 * with the License. 1467 * 1468 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 1469 * or http://www.opensolaris.org/os/licensing. 1470 * See the License for the specific language governing permissions 1471 * and limitations under the License. 1472 * 1473 * When distributing Covered Code, include this CDDL HEADER in each 1474 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 1475 * If applicable, add the following below this CDDL HEADER, with the 1476 * fields enclosed by brackets "[]" replaced with your own identifying 1477 * information: Portions Copyright [yyyy] [name of copyright owner] 1478 * 1479 * CDDL HEADER END 1480 */ 1481 1482 /* Copyright (c) 1989 AT&T */ 1483 /* All Rights Reserved */ 1484 1485 #pragma ident "%Z%%M% %I% %E% SMI" 1486 1487 int yylineno =1; 1488 # define YYU(x) x 1489 # define NLSTATE yyprevious=YYNEWLINE 1490 struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp; 1491 char yysbuf[YYLMAX]; 1492 char *yysptr = yysbuf; 1493 int *yyfnd; 1494 extern struct yysvf *yyestate; 1495 int yyprevious = YYNEWLINE; 1496 #if defined(__cplusplus) || defined(__STDC__) 1497 int yylook(void) 1498 #else 1499 yylook() 1500 #endif 1501 { 1502 register struct yysvf *yystate, **lsp; 1503 register struct yywork *yyt; 1504 struct yysvf *yyz; 1505 int yych, yyfirst; 1506 struct yywork *yyr; 1507 # ifdef LEXDEBUG 1508 int debug; 1509 # endif 1510 char *yylastch; 1511 /* start off machines */ 1512 # ifdef LEXDEBUG 1513 debug = 0; 1514 # endif 1515 yyfirst=1; 1516 if (!yymorfg) 1517 yylastch = yytext; 1518 else { 1519 yymorfg=0; 1520 yylastch = yytext+yyleng; 1521 } 1522 for(;;){ 1523 lsp = yylstate; 1524 yyestate = yystate = yybgin; 1525 if (yyprevious==YYNEWLINE) yystate++; 1526 for (;;){ 1527 # ifdef LEXDEBUG 1528 if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1); 1529 # endif 1530 yyt = yystate->yystoff; 1531 if(yyt == yycrank && !yyfirst){ /* may not be any transitions */ 1532 yyz = yystate->yyother; 1533 if(yyz == 0)break; 1534 if(yyz->yystoff == yycrank)break; 1535 } 1536 #ifndef __cplusplus 1537 *yylastch++ = yych = input(); 1538 #else 1539 *yylastch++ = yych = lex_input(); 1540 #endif 1541 #ifdef YYISARRAY 1542 if(yylastch > &yytext[YYLMAX]) { 1543 fprintf(yyout,gettext("Input string too long, limit %d\n"),YYLMAX); 1544 exit(1); 1545 } 1546 #else 1547 if (yylastch >= &yytext[ yytextsz ]) { 1548 int x = yylastch - yytext; 1549 1550 yytextsz += YYTEXTSZINC; 1551 if (yytext == yy_tbuf) { 1552 yytext = (char *) malloc(yytextsz); 1553 memcpy(yytext, yy_tbuf, sizeof (yy_tbuf)); 1554 } 1555 else 1556 yytext = (char *) realloc(yytext, yytextsz); 1557 if (!yytext) { 1558 fprintf(yyout, 1559 gettext("Cannot realloc yytext\n")); 1560 exit(1); 1561 } 1562 yylastch = yytext + x; 1563 } 1564 #endif 1565 yyfirst=0; 1566 tryagain: 1567 # ifdef LEXDEBUG 1568 if(debug){ 1569 fprintf(yyout,"char "); 1570 allprint(yych); 1571 putchar('\n'); 1572 } 1573 # endif 1574 yyr = yyt; 1575 if ( (uintptr_t)yyt > (uintptr_t)yycrank){ 1576 yyt = yyr + yych; 1577 if (yyt <= yytop && yyt->verify+yysvec == yystate){ 1578 if(yyt->advance+yysvec == YYLERR) /* error transitions */ 1579 {unput(*--yylastch);break;} 1580 *lsp++ = yystate = yyt->advance+yysvec; 1581 if(lsp > &yylstate[YYLMAX]) { 1582 fprintf(yyout,gettext("Input string too long, limit %d\n"),YYLMAX); 1583 exit(1); 1584 } 1585 goto contin; 1586 } 1587 } 1588 # ifdef YYOPTIM 1589 else if((uintptr_t)yyt < (uintptr_t)yycrank) { /* r < yycrank */ 1590 yyt = yyr = yycrank+(yycrank-yyt); 1591 # ifdef LEXDEBUG 1592 if(debug)fprintf(yyout,"compressed state\n"); 1593 # endif 1594 yyt = yyt + yych; 1595 if(yyt <= yytop && yyt->verify+yysvec == yystate){ 1596 if(yyt->advance+yysvec == YYLERR) /* error transitions */ 1597 {unput(*--yylastch);break;} 1598 *lsp++ = yystate = yyt->advance+yysvec; 1599 if(lsp > &yylstate[YYLMAX]) { 1600 fprintf(yyout,gettext("Input string too long, limit %d\n"),YYLMAX); 1601 exit(1); 1602 } 1603 goto contin; 1604 } 1605 yyt = yyr + YYU(yymatch[yych]); 1606 # ifdef LEXDEBUG 1607 if(debug){ 1608 fprintf(yyout,"try fall back character "); 1609 allprint(YYU(yymatch[yych])); 1610 putchar('\n'); 1611 } 1612 # endif 1613 if(yyt <= yytop && yyt->verify+yysvec == yystate){ 1614 if(yyt->advance+yysvec == YYLERR) /* error transition */ 1615 {unput(*--yylastch);break;} 1616 *lsp++ = yystate = yyt->advance+yysvec; 1617 if(lsp > &yylstate[YYLMAX]) { 1618 fprintf(yyout,gettext("Input string too long, limit %d\n"),YYLMAX); 1619 exit(1); 1620 } 1621 goto contin; 1622 } 1623 } 1624 if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){ 1625 # ifdef LEXDEBUG 1626 if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1); 1627 # endif 1628 goto tryagain; 1629 } 1630 # endif 1631 else 1632 {unput(*--yylastch);break;} 1633 contin: 1634 # ifdef LEXDEBUG 1635 if(debug){ 1636 fprintf(yyout,"state %d char ",yystate-yysvec-1); 1637 allprint(yych); 1638 putchar('\n'); 1639 } 1640 # endif 1641 ; 1642 } 1643 # ifdef LEXDEBUG 1644 if(debug){ 1645 fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1); 1646 allprint(yych); 1647 putchar('\n'); 1648 } 1649 # endif 1650 while (lsp-- > yylstate){ 1651 *yylastch-- = 0; 1652 if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){ 1653 yyolsp = lsp; 1654 if(yyextra[*yyfnd]){ /* must backup */ 1655 while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){ 1656 lsp--; 1657 unput(*yylastch--); 1658 } 1659 } 1660 yyprevious = YYU(*yylastch); 1661 yylsp = lsp; 1662 yyleng = yylastch-yytext+1; 1663 yytext[yyleng] = 0; 1664 # ifdef LEXDEBUG 1665 if(debug){ 1666 fprintf(yyout,"\nmatch "); 1667 sprint(yytext); 1668 fprintf(yyout," action %d\n",*yyfnd); 1669 } 1670 # endif 1671 return(*yyfnd++); 1672 } 1673 unput(*yylastch); 1674 } 1675 if (yytext[0] == 0 /* && feof(yyin) */) 1676 { 1677 yysptr=yysbuf; 1678 return(0); 1679 } 1680 #ifndef __cplusplus 1681 yyprevious = yytext[0] = input(); 1682 if (yyprevious>0) 1683 output(yyprevious); 1684 #else 1685 yyprevious = yytext[0] = lex_input(); 1686 if (yyprevious>0) 1687 lex_output(yyprevious); 1688 #endif 1689 yylastch=yytext; 1690 # ifdef LEXDEBUG 1691 if(debug)putchar('\n'); 1692 # endif 1693 } 1694 } 1695 #if defined(__cplusplus) || defined(__STDC__) 1696 int yyback(int *p, int m) 1697 #else 1698 yyback(p, m) 1699 int *p; 1700 #endif 1701 { 1702 if (p==0) return(0); 1703 while (*p) { 1704 if (*p++ == m) 1705 return(1); 1706 } 1707 return(0); 1708 } 1709 /* the following are only used in the lex library */ 1710 #if defined(__cplusplus) || defined(__STDC__) 1711 int yyinput(void) 1712 #else 1713 yyinput() 1714 #endif 1715 { 1716 #ifndef __cplusplus 1717 return(input()); 1718 #else 1719 return(lex_input()); 1720 #endif 1721 } 1722 #if defined(__cplusplus) || defined(__STDC__) 1723 void yyoutput(int c) 1724 #else 1725 yyoutput(c) 1726 int c; 1727 #endif 1728 { 1729 #ifndef __cplusplus 1730 output(c); 1731 #else 1732 lex_output(c); 1733 #endif 1734 } 1735 #if defined(__cplusplus) || defined(__STDC__) 1736 void yyunput(int c) 1737 #else 1738 yyunput(c) 1739 int c; 1740 #endif 1741 { 1742 unput(c); 1743 } 1744