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 "poolcfg.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 2003 Sun Microsystems, Inc. All rights reserved. 108 * Use is subject to license terms. 109 */ 110 111 #pragma ident "%Z%%M% %I% %E% SMI" 112 #pragma error_messages(off, E_STATEMENT_NOT_REACHED) 113 114 115 # line 31 "poolcfg.l" 116 /* 117 * poolcfg.l 118 * 119 * Overview 120 * poolcfg.l implements a lexer for the poolcfg(1) utility.The lexer uses 121 * the token definitions generated by YACC in the file poolcfg_Grammar.h. 122 * To make token recognition simpler, the lexer uses a separate state for 123 * each of the different data types supported by poolcfg(1). 124 * 125 * States 126 * Lex provides the ability to minimise conflict between qualifying regexps 127 * by providing states. A regexp that is qualified by a state will only be 128 * used when the state is entered (using the BEGIN <state> command). (The 129 * exception to this rule, is that rules defined in the default state are 130 * available in all states.) 131 * 132 * poolcfg.l makes use of type states, one for each of the poolcfg(1) 133 * supported data types: 134 * 135 * ISTATE => int64_t 136 * USTATE => uint64_t 137 * BSTATE => uchar_t 138 * SSTATE => const char * 139 * DSTATE => double 140 * 141 * and a further state, CPUSTATE, to indicate the difference between matching 142 * a valid "name" (i.e. id) for a cpu and a valid name for other components of 143 * libpool. 144 * 145 * When a token indicating a variable declaration is matched, the corresponding 146 * state is saved in the state variable. Once the assignment ('=') token is 147 * matched, the stored state is entered and the additional state specific 148 * matching regular expressions become available. Once a state specific 149 * token is matched, the default state is restored. 150 * 151 */ 152 #include <stdlib.h> 153 #include <sys/types.h> 154 #include <assert.h> 155 #include <string.h> 156 #include <errno.h> 157 #include <libintl.h> 158 159 #include <pool.h> 160 #include "utils.h" 161 #include "poolcfg.h" 162 #include "poolcfg_grammar.h" 163 164 static int lex_lineno = 1; /* line-number for error reporting */ 165 static int state = INITIAL; /* state to be used */ 166 extern void yyerror(char *s); 167 extern int dofile; /* are we processing a file? */ 168 # define ISTATE 2 169 # define USTATE 4 170 # define BSTATE 6 171 # define SSTATE 8 172 # define DSTATE 10 173 # define CPUSTATE 12 174 # define YYNEWLINE 10 175 int yylex(){ 176 int nstr; extern int yyprevious; 177 #ifdef __cplusplus 178 /* to avoid CC and lint complaining yyfussy not being used ...*/ 179 static int __lex_hack = 0; 180 if (__lex_hack) goto yyfussy; 181 #endif 182 while((nstr = yylook()) >= 0) 183 yyfussy: switch(nstr){ 184 case 0: 185 if(yywrap()) return(0); break; 186 case 1: 187 188 # line 93 "poolcfg.l" 189 lex_lineno++; 190 break; 191 case 2: 192 193 # line 95 "poolcfg.l" 194 ; 195 break; 196 case 3: 197 198 # line 97 "poolcfg.l" 199 ; 200 break; 201 case 4: 202 203 # line 99 "poolcfg.l" 204 { return PCC_INFO; } 205 break; 206 case 5: 207 208 # line 101 "poolcfg.l" 209 { return PCC_CREATE; } 210 break; 211 case 6: 212 213 # line 103 "poolcfg.l" 214 { return PCC_DESTROY; } 215 break; 216 case 7: 217 218 # line 105 "poolcfg.l" 219 { return PCC_MODIFY; } 220 break; 221 case 8: 222 223 # line 107 "poolcfg.l" 224 { return PCC_ASSOC; } 225 break; 226 case 9: 227 228 # line 109 "poolcfg.l" 229 { 230 BEGIN USTATE; 231 return PCC_TRANSFER; 232 } 233 break; 234 case 10: 235 236 # line 114 "poolcfg.l" 237 { return PCC_DISC; } 238 break; 239 case 11: 240 241 # line 116 "poolcfg.l" 242 { return PCC_RENAME; } 243 break; 244 case 12: 245 246 # line 118 "poolcfg.l" 247 { return PCK_TO; } 248 break; 249 case 13: 250 251 # line 120 "poolcfg.l" 252 { return PCK_FROM; } 253 break; 254 case 14: 255 256 # line 122 "poolcfg.l" 257 { 258 state=ISTATE; 259 return PCT_INT; 260 } 261 break; 262 case 15: 263 264 # line 127 "poolcfg.l" 265 { 266 state=USTATE; 267 return PCT_UINT; 268 } 269 break; 270 case 16: 271 272 # line 132 "poolcfg.l" 273 { 274 state=BSTATE; 275 return PCT_BOOLEAN; 276 } 277 break; 278 case 17: 279 280 # line 137 "poolcfg.l" 281 { 282 state=SSTATE; 283 return PCT_STRING; 284 } 285 break; 286 case 18: 287 288 # line 142 "poolcfg.l" 289 { 290 state=DSTATE; 291 return PCT_FLOAT; 292 } 293 break; 294 case 19: 295 296 # line 147 "poolcfg.l" 297 { 298 BEGIN CPUSTATE; 299 return PCE_CPU; 300 } 301 break; 302 case 20: 303 304 # line 152 "poolcfg.l" 305 { return PCE_PSET; } 306 break; 307 case 21: 308 309 # line 154 "poolcfg.l" 310 { return PCE_POOL; } 311 break; 312 case 22: 313 314 # line 156 "poolcfg.l" 315 { return PCE_SYSTEM; } 316 break; 317 case 23: 318 319 # line 158 "poolcfg.l" 320 { return PCK_OPENLST; } 321 break; 322 case 24: 323 324 # line 160 "poolcfg.l" 325 { return PCK_CLOSELST; } 326 break; 327 case 25: 328 329 # line 162 "poolcfg.l" 330 { 331 BEGIN state; 332 return PCK_ASSIGN; 333 } 334 break; 335 case 26: 336 337 # line 167 "poolcfg.l" 338 { return PCK_SEPLST; } 339 break; 340 case 27: 341 342 # line 169 "poolcfg.l" 343 { return PCK_UNDEF; } 344 break; 345 case 28: 346 347 # line 171 "poolcfg.l" 348 { 349 yylval.ival = strtoll(yytext, NULL, 0); 350 if (errno == EINVAL || errno == ERANGE) { 351 yyerror(gettext("Invalid value")); 352 exit(E_ERROR); 353 } 354 BEGIN INITIAL; 355 return PCV_VAL_INT; 356 } 357 break; 358 case 29: 359 360 # line 181 "poolcfg.l" 361 { 362 yylval.uval = strtoull(yytext, NULL, 0); 363 if (errno == EINVAL || errno == ERANGE) { 364 yyerror(gettext("Invalid value")); 365 exit(E_ERROR); 366 } 367 BEGIN INITIAL; 368 return PCV_VAL_UINT; 369 } 370 break; 371 case 30: 372 373 # line 192 "poolcfg.l" 374 { 375 if (strcmp(yytext, "true") == 0) 376 yylval.bval = 1; 377 else 378 yylval.bval = 0; 379 BEGIN INITIAL; 380 return PCV_VAL_BOOLEAN; 381 } 382 break; 383 case 31: 384 385 # line 201 "poolcfg.l" 386 { 387 if((yylval.sval = strdup(yytext+1)) == NULL) { 388 yyerror(gettext("Out of memory")); 389 exit(E_ERROR); 390 } 391 if (yylval.sval[yyleng-2] =='"') 392 yylval.sval[yyleng-2] = 0; 393 BEGIN INITIAL; 394 return PCV_VAL_STRING; 395 } 396 break; 397 case 32: 398 399 # line 212 "poolcfg.l" 400 { 401 yylval.dval = strtod(yytext, (char **)NULL); 402 if (errno == EINVAL || errno == ERANGE) { 403 yyerror(gettext("Invalid value")); 404 exit(E_ERROR); 405 } 406 BEGIN INITIAL; 407 return PCV_VAL_FLOAT; 408 } 409 break; 410 case 33: 411 412 # line 222 "poolcfg.l" 413 { 414 if ((yylval.sval = strdup(yytext)) == NULL) { 415 yyerror(gettext("Out of memory")); 416 exit(E_ERROR); 417 } 418 return PCV_SYMBOL; 419 } 420 break; 421 case 34: 422 423 # line 230 "poolcfg.l" 424 { 425 if ((yylval.sval = strdup(yytext)) == NULL) { 426 yyerror(gettext("Out of memory")); 427 exit(E_ERROR); 428 } 429 BEGIN INITIAL; 430 return PCV_SYMBOL; 431 } 432 break; 433 case 35: 434 435 # line 238 "poolcfg.l" 436 { 437 yyerror(gettext("Illegal character")); 438 exit(E_ERROR); 439 } 440 break; 441 case -1: 442 break; 443 default: 444 (void)fprintf(yyout,"bad switch yylook %d",nstr); 445 } return(0); } 446 /* end of yylex */ 447 448 # line 244 "poolcfg.l" 449 450 void 451 yyerror(char *s) 452 { 453 if (dofile == PO_TRUE) { 454 if (yytext[0] == '\0') { 455 (void) warn(gettext("line %d, %s, token expected\n"), 456 lex_lineno, s); 457 return; 458 } 459 (void) warn(gettext("line %d, %s at '%s'\n"), lex_lineno, s, 460 yytext); 461 } else { 462 if (yytext[0] == '\0') { 463 (void) warn(gettext("%s, token expected\n"), s); 464 return; 465 } 466 (void) warn(gettext("%s at '%s'\n"), s, yytext); 467 } 468 } 469 470 int yyvstop[] = { 471 0, 472 473 35, 474 0, 475 476 2, 477 35, 478 0, 479 480 1, 481 0, 482 483 3, 484 35, 485 0, 486 487 23, 488 35, 489 0, 490 491 24, 492 35, 493 0, 494 495 26, 496 35, 497 0, 498 499 25, 500 35, 501 0, 502 503 33, 504 35, 505 0, 506 507 33, 508 35, 509 0, 510 511 33, 512 35, 513 0, 514 515 33, 516 35, 517 0, 518 519 33, 520 35, 521 0, 522 523 33, 524 35, 525 0, 526 527 33, 528 35, 529 0, 530 531 33, 532 35, 533 0, 534 535 33, 536 35, 537 0, 538 539 33, 540 35, 541 0, 542 543 33, 544 35, 545 0, 546 547 33, 548 35, 549 0, 550 551 33, 552 35, 553 0, 554 555 27, 556 35, 557 0, 558 559 35, 560 0, 561 562 28, 563 35, 564 0, 565 566 29, 567 35, 568 0, 569 570 33, 571 35, 572 0, 573 574 33, 575 35, 576 0, 577 578 35, 579 0, 580 581 35, 582 0, 583 584 32, 585 35, 586 0, 587 588 34, 589 35, 590 0, 591 592 2, 593 0, 594 595 3, 596 0, 597 598 33, 599 0, 600 601 33, 602 0, 603 604 33, 605 0, 606 607 33, 608 0, 609 610 33, 611 0, 612 613 33, 614 0, 615 616 33, 617 0, 618 619 33, 620 0, 621 622 33, 623 0, 624 625 33, 626 0, 627 628 33, 629 0, 630 631 33, 632 0, 633 634 33, 635 0, 636 637 33, 638 0, 639 640 33, 641 0, 642 643 33, 644 0, 645 646 12, 647 33, 648 0, 649 650 33, 651 0, 652 653 33, 654 0, 655 656 28, 657 0, 658 659 29, 660 0, 661 662 33, 663 0, 664 665 33, 666 0, 667 668 31, 669 0, 670 671 32, 672 0, 673 674 32, 675 0, 676 677 34, 678 0, 679 680 33, 681 0, 682 683 33, 684 0, 685 686 19, 687 33, 688 0, 689 690 33, 691 0, 692 693 33, 694 0, 695 696 33, 697 0, 698 699 33, 700 0, 701 702 33, 703 0, 704 705 33, 706 0, 707 708 14, 709 33, 710 0, 711 712 33, 713 0, 714 715 33, 716 0, 717 718 33, 719 0, 720 721 33, 722 0, 723 724 33, 725 0, 726 727 33, 728 0, 729 730 33, 731 0, 732 733 33, 734 0, 735 736 33, 737 0, 738 739 33, 740 0, 741 742 33, 743 0, 744 745 33, 746 0, 747 748 33, 749 0, 750 751 33, 752 0, 753 754 33, 755 0, 756 757 33, 758 0, 759 760 13, 761 33, 762 0, 763 764 4, 765 33, 766 0, 767 768 33, 769 0, 770 771 21, 772 33, 773 0, 774 775 20, 776 33, 777 0, 778 779 33, 780 0, 781 782 33, 783 0, 784 785 33, 786 0, 787 788 33, 789 0, 790 791 15, 792 33, 793 0, 794 795 33, 796 0, 797 798 30, 799 33, 800 0, 801 802 32, 803 0, 804 805 33, 806 0, 807 808 33, 809 0, 810 811 33, 812 0, 813 814 33, 815 0, 816 817 33, 818 0, 819 820 18, 821 33, 822 0, 823 824 33, 825 0, 826 827 33, 828 0, 829 830 33, 831 0, 832 833 33, 834 0, 835 836 33, 837 0, 838 839 33, 840 0, 841 842 33, 843 0, 844 845 5, 846 33, 847 0, 848 849 33, 850 0, 851 852 33, 853 0, 854 855 7, 856 33, 857 0, 858 859 11, 860 33, 861 0, 862 863 17, 864 33, 865 0, 866 867 22, 868 33, 869 0, 870 871 33, 872 0, 873 874 33, 875 0, 876 877 16, 878 33, 879 0, 880 881 6, 882 33, 883 0, 884 885 33, 886 0, 887 888 33, 889 0, 890 891 33, 892 0, 893 894 10, 895 33, 896 0, 897 898 9, 899 33, 900 0, 901 902 8, 903 33, 904 0, 905 0}; 906 # define YYTYPE unsigned char 907 struct yywork { YYTYPE verify, advance; } yycrank[] = { 908 0,0, 0,0, 1,15, 0,0, 909 0,0, 0,0, 0,0, 0,0, 910 0,0, 0,0, 1,16, 1,17, 911 47,0, 0,0, 16,46, 0,0, 912 0,0, 0,0, 0,0, 0,0, 913 0,0, 0,0, 0,0, 0,0, 914 0,0, 0,0, 0,0, 0,0, 915 0,0, 0,0, 0,0, 0,0, 916 0,0, 0,0, 0,0, 1,15, 917 1,18, 16,46, 0,0, 0,0, 918 0,0, 1,19, 1,20, 0,0, 919 1,15, 1,15, 1,15, 0,0, 920 0,0, 1,15, 0,0, 0,0, 921 0,0, 0,0, 0,0, 0,0, 922 0,0, 0,0, 2,18, 0,0, 923 1,21, 0,0, 1,22, 2,19, 924 2,20, 0,0, 1,23, 0,0, 925 0,0, 0,0, 1,23, 37,67, 926 37,67, 37,67, 37,67, 37,67, 927 37,67, 37,67, 37,67, 37,67, 928 37,67, 3,18, 2,21, 0,0, 929 2,22, 0,0, 3,19, 3,20, 930 0,0, 0,0, 0,0, 3,37, 931 0,0, 0,0, 3,38, 0,0, 932 0,0, 0,0, 1,24, 1,25, 933 1,26, 1,27, 58,87, 1,28, 934 27,53, 3,21, 1,29, 3,22, 935 27,54, 32,61, 1,30, 35,66, 936 29,57, 1,31, 25,50, 1,32, 937 1,33, 1,34, 1,35, 24,49, 938 2,24, 2,25, 2,26, 2,27, 939 26,51, 2,28, 26,52, 1,36, 940 2,29, 30,58, 28,55, 34,64, 941 2,30, 49,77, 34,65, 2,31, 942 28,56, 2,32, 2,33, 2,34, 943 2,35, 50,78, 33,62, 3,24, 944 3,25, 3,26, 3,27, 33,63, 945 3,28, 2,36, 31,59, 3,29, 946 51,79, 52,80, 31,60, 3,30, 947 40,69, 53,81, 3,31, 54,82, 948 3,32, 3,33, 3,34, 3,35, 949 4,18, 41,64, 55,83, 40,55, 950 41,70, 4,19, 4,20, 56,84, 951 3,36, 40,56, 4,37, 57,85, 952 59,88, 4,38, 60,89, 61,90, 953 62,91, 63,92, 65,93, 66,94, 954 69,95, 70,93, 5,18, 73,97, 955 4,21, 57,86, 4,22, 5,19, 956 5,20, 77,98, 78,99, 80,100, 957 81,101, 82,102, 83,103, 5,39, 958 84,104, 85,105, 87,106, 88,107, 959 89,108, 70,96, 90,109, 91,110, 960 92,111, 6,18, 5,21, 93,112, 961 5,22, 94,113, 6,19, 6,20, 962 95,114, 96,115, 98,118, 73,97, 963 99,119, 100,120, 6,39, 101,121, 964 102,122, 103,123, 4,24, 4,25, 965 4,26, 4,27, 106,124, 4,28, 966 109,125, 6,21, 4,29, 6,22, 967 110,126, 111,127, 4,30, 112,128, 968 114,115, 4,31, 118,129, 4,32, 969 4,33, 4,34, 4,35, 119,130, 970 5,24, 5,25, 5,26, 5,27, 971 120,131, 5,28, 121,132, 4,36, 972 5,29, 122,133, 124,134, 125,135, 973 5,30, 126,136, 127,137, 5,31, 974 128,138, 5,32, 5,33, 5,34, 975 5,35, 129,139, 130,140, 6,24, 976 6,25, 6,26, 6,27, 7,18, 977 6,28, 5,36, 132,141, 6,29, 978 7,19, 7,20, 133,142, 6,30, 979 138,143, 139,144, 6,31, 142,145, 980 6,32, 6,33, 6,34, 6,35, 981 143,146, 144,147, 0,0, 0,0, 982 0,0, 8,18, 0,0, 7,21, 983 6,36, 7,22, 8,19, 8,20, 984 39,68, 39,68, 39,68, 39,68, 985 39,68, 39,68, 39,68, 39,68, 986 39,68, 39,68, 0,0, 0,0, 987 0,0, 0,0, 0,0, 9,42, 988 9,18, 8,21, 0,0, 8,22, 989 0,0, 9,19, 9,20, 43,73, 990 43,73, 43,73, 43,73, 43,73, 991 43,73, 43,73, 43,73, 43,73, 992 43,73, 7,24, 7,25, 7,26, 993 7,27, 0,0, 7,40, 0,0, 994 9,21, 7,29, 9,22, 0,0, 995 0,0, 7,30, 0,0, 0,0, 996 7,31, 0,0, 7,32, 7,33, 997 7,41, 7,35, 0,0, 8,24, 998 8,25, 8,26, 8,27, 0,0, 999 8,40, 0,0, 7,36, 8,29, 1000 0,0, 0,0, 0,0, 8,30, 1001 18,47, 0,0, 8,31, 0,0, 1002 8,32, 8,33, 8,41, 8,35, 1003 18,47, 18,0, 9,24, 9,25, 1004 9,26, 9,27, 0,0, 9,28, 1005 8,36, 0,0, 9,29, 0,0, 1006 0,0, 0,0, 9,30, 0,0, 1007 0,0, 9,31, 0,0, 9,32, 1008 9,33, 9,34, 9,35, 10,42, 1009 10,18, 18,47, 0,0, 0,0, 1010 0,0, 10,19, 10,20, 9,36, 1011 0,0, 0,0, 18,47, 18,47, 1012 18,47, 0,0, 0,0, 18,47, 1013 0,0, 0,0, 0,0, 0,0, 1014 0,0, 0,0, 11,18, 0,0, 1015 10,21, 0,0, 10,22, 11,19, 1016 11,20, 0,0, 0,0, 0,0, 1017 18,47, 11,43, 0,0, 11,44, 1018 18,47, 0,0, 0,0, 0,0, 1019 0,0, 0,0, 0,0, 0,0, 1020 0,0, 12,18, 11,21, 0,0, 1021 11,22, 0,0, 12,19, 12,20, 1022 0,0, 0,0, 0,0, 0,0, 1023 12,43, 0,0, 12,44, 0,0, 1024 0,0, 0,0, 10,24, 10,25, 1025 10,26, 10,27, 0,0, 10,28, 1026 0,0, 12,21, 10,29, 12,22, 1027 0,0, 0,0, 10,30, 0,0, 1028 0,0, 10,31, 0,0, 10,32, 1029 10,33, 10,34, 10,35, 0,0, 1030 11,24, 11,25, 11,26, 11,27, 1031 0,0, 11,28, 0,0, 10,36, 1032 11,29, 0,0, 0,0, 0,0, 1033 11,30, 0,0, 0,0, 11,31, 1034 0,0, 11,32, 11,33, 11,34, 1035 11,35, 0,0, 0,0, 12,24, 1036 12,25, 12,26, 12,27, 0,0, 1037 12,28, 11,36, 0,0, 12,29, 1038 0,0, 0,0, 0,0, 12,30, 1039 0,0, 0,0, 12,31, 0,0, 1040 12,32, 12,33, 12,34, 12,35, 1041 13,18, 0,0, 0,0, 0,0, 1042 0,0, 13,19, 13,20, 42,71, 1043 12,36, 0,0, 0,0, 0,0, 1044 0,0, 13,45, 0,0, 42,71, 1045 42,72, 0,0, 0,0, 0,0, 1046 0,0, 0,0, 14,18, 0,0, 1047 13,21, 0,0, 13,22, 14,19, 1048 14,20, 0,0, 0,0, 0,0, 1049 0,0, 0,0, 0,0, 14,45, 1050 0,0, 0,0, 0,0, 0,0, 1051 42,72, 0,0, 0,0, 0,0, 1052 0,0, 0,0, 14,21, 0,0, 1053 14,22, 42,71, 42,71, 42,71, 1054 0,0, 0,0, 42,71, 0,0, 1055 0,0, 0,0, 0,0, 0,0, 1056 0,0, 0,0, 13,24, 13,25, 1057 13,26, 13,27, 0,0, 13,28, 1058 0,0, 0,0, 13,29, 42,71, 1059 0,0, 0,0, 13,30, 42,71, 1060 0,0, 13,31, 0,0, 13,32, 1061 13,33, 13,34, 13,35, 0,0, 1062 14,24, 14,25, 14,26, 14,27, 1063 0,0, 14,28, 0,0, 13,36, 1064 14,29, 0,0, 0,0, 0,0, 1065 14,30, 0,0, 0,0, 14,31, 1066 0,0, 14,32, 14,33, 14,34, 1067 14,35, 0,0, 0,0, 0,0, 1068 0,0, 0,0, 23,48, 23,48, 1069 23,48, 14,36, 23,48, 23,48, 1070 23,48, 23,48, 23,48, 23,48, 1071 23,48, 23,48, 23,48, 23,48, 1072 0,0, 0,0, 0,0, 0,0, 1073 0,0, 0,0, 0,0, 23,48, 1074 23,48, 23,48, 23,48, 23,48, 1075 23,48, 23,48, 23,48, 23,48, 1076 23,48, 23,48, 23,48, 23,48, 1077 23,48, 23,48, 23,48, 23,48, 1078 23,48, 23,48, 23,48, 23,48, 1079 23,48, 23,48, 23,48, 23,48, 1080 23,48, 0,0, 0,0, 0,0, 1081 0,0, 23,48, 0,0, 23,48, 1082 23,48, 23,48, 23,48, 23,48, 1083 23,48, 23,48, 23,48, 23,48, 1084 23,48, 23,48, 23,48, 23,48, 1085 23,48, 23,48, 23,48, 23,48, 1086 23,48, 23,48, 23,48, 23,48, 1087 23,48, 23,48, 23,48, 23,48, 1088 23,48, 44,74, 0,0, 44,75, 1089 44,75, 44,75, 44,75, 44,75, 1090 44,75, 44,75, 44,75, 44,75, 1091 44,75, 45,76, 45,76, 45,76, 1092 45,76, 45,76, 45,76, 45,76, 1093 45,76, 45,76, 45,76, 97,116, 1094 0,0, 97,116, 0,0, 0,0, 1095 97,117, 97,117, 97,117, 97,117, 1096 97,117, 97,117, 97,117, 97,117, 1097 97,117, 97,117, 116,117, 116,117, 1098 116,117, 116,117, 116,117, 116,117, 1099 116,117, 116,117, 116,117, 116,117, 1100 0,0}; 1101 struct yysvf yysvec[] = { 1102 0, 0, 0, 1103 yycrank+-1, 0, 0, 1104 yycrank+-23, yysvec+1, 0, 1105 yycrank+-46, yysvec+1, 0, 1106 yycrank+-129, yysvec+1, 0, 1107 yycrank+-151, yysvec+1, 0, 1108 yycrank+-174, yysvec+1, 0, 1109 yycrank+-240, yysvec+1, 0, 1110 yycrank+-262, yysvec+1, 0, 1111 yycrank+-285, yysvec+1, 0, 1112 yycrank+-369, yysvec+1, 0, 1113 yycrank+-391, yysvec+1, 0, 1114 yycrank+-414, yysvec+1, 0, 1115 yycrank+-497, yysvec+1, 0, 1116 yycrank+-519, yysvec+1, 0, 1117 yycrank+0, 0, yyvstop+1, 1118 yycrank+5, 0, yyvstop+3, 1119 yycrank+0, 0, yyvstop+6, 1120 yycrank+-371, 0, yyvstop+8, 1121 yycrank+0, 0, yyvstop+11, 1122 yycrank+0, 0, yyvstop+14, 1123 yycrank+0, 0, yyvstop+17, 1124 yycrank+0, 0, yyvstop+20, 1125 yycrank+598, 0, yyvstop+23, 1126 yycrank+4, yysvec+23, yyvstop+26, 1127 yycrank+3, yysvec+23, yyvstop+29, 1128 yycrank+12, yysvec+23, yyvstop+32, 1129 yycrank+3, yysvec+23, yyvstop+35, 1130 yycrank+22, yysvec+23, yyvstop+38, 1131 yycrank+2, yysvec+23, yyvstop+41, 1132 yycrank+18, yysvec+23, yyvstop+44, 1133 yycrank+39, yysvec+23, yyvstop+47, 1134 yycrank+8, yysvec+23, yyvstop+50, 1135 yycrank+26, yysvec+23, yyvstop+53, 1136 yycrank+20, yysvec+23, yyvstop+56, 1137 yycrank+6, yysvec+23, yyvstop+59, 1138 yycrank+0, 0, yyvstop+62, 1139 yycrank+23, 0, yyvstop+65, 1140 yycrank+0, yysvec+37, yyvstop+67, 1141 yycrank+256, 0, yyvstop+70, 1142 yycrank+59, yysvec+23, yyvstop+73, 1143 yycrank+54, yysvec+23, yyvstop+76, 1144 yycrank+-538, 0, yyvstop+79, 1145 yycrank+279, 0, yyvstop+81, 1146 yycrank+675, 0, yyvstop+83, 1147 yycrank+685, 0, yyvstop+86, 1148 yycrank+0, yysvec+16, yyvstop+89, 1149 yycrank+-2, yysvec+18, yyvstop+91, 1150 yycrank+0, yysvec+23, yyvstop+93, 1151 yycrank+18, yysvec+23, yyvstop+95, 1152 yycrank+30, yysvec+23, yyvstop+97, 1153 yycrank+35, yysvec+23, yyvstop+99, 1154 yycrank+52, yysvec+23, yyvstop+101, 1155 yycrank+42, yysvec+23, yyvstop+103, 1156 yycrank+44, yysvec+23, yyvstop+105, 1157 yycrank+55, yysvec+23, yyvstop+107, 1158 yycrank+60, yysvec+23, yyvstop+109, 1159 yycrank+73, yysvec+23, yyvstop+111, 1160 yycrank+2, yysvec+23, yyvstop+113, 1161 yycrank+65, yysvec+23, yyvstop+115, 1162 yycrank+77, yysvec+23, yyvstop+117, 1163 yycrank+69, yysvec+23, yyvstop+119, 1164 yycrank+66, yysvec+23, yyvstop+121, 1165 yycrank+66, yysvec+23, yyvstop+123, 1166 yycrank+0, yysvec+23, yyvstop+125, 1167 yycrank+85, yysvec+23, yyvstop+128, 1168 yycrank+73, yysvec+23, yyvstop+130, 1169 yycrank+0, yysvec+37, yyvstop+132, 1170 yycrank+0, yysvec+39, yyvstop+134, 1171 yycrank+76, yysvec+23, yyvstop+136, 1172 yycrank+88, yysvec+23, yyvstop+138, 1173 yycrank+0, yysvec+42, 0, 1174 yycrank+0, 0, yyvstop+140, 1175 yycrank+118, yysvec+43, yyvstop+142, 1176 yycrank+0, yysvec+43, 0, 1177 yycrank+0, yysvec+44, yyvstop+144, 1178 yycrank+0, yysvec+45, yyvstop+146, 1179 yycrank+82, yysvec+23, yyvstop+148, 1180 yycrank+86, yysvec+23, yyvstop+150, 1181 yycrank+0, yysvec+23, yyvstop+152, 1182 yycrank+98, yysvec+23, yyvstop+155, 1183 yycrank+80, yysvec+23, yyvstop+157, 1184 yycrank+98, yysvec+23, yyvstop+159, 1185 yycrank+101, yysvec+23, yyvstop+161, 1186 yycrank+91, yysvec+23, yyvstop+163, 1187 yycrank+90, yysvec+23, yyvstop+165, 1188 yycrank+0, yysvec+23, yyvstop+167, 1189 yycrank+97, yysvec+23, yyvstop+170, 1190 yycrank+95, yysvec+23, yyvstop+172, 1191 yycrank+88, yysvec+23, yyvstop+174, 1192 yycrank+109, yysvec+23, yyvstop+176, 1193 yycrank+102, yysvec+23, yyvstop+178, 1194 yycrank+92, yysvec+23, yyvstop+180, 1195 yycrank+101, yysvec+23, yyvstop+182, 1196 yycrank+97, yysvec+23, yyvstop+184, 1197 yycrank+101, yysvec+23, yyvstop+186, 1198 yycrank+116, yysvec+23, yyvstop+188, 1199 yycrank+700, 0, 0, 1200 yycrank+119, yysvec+23, yyvstop+190, 1201 yycrank+119, yysvec+23, yyvstop+192, 1202 yycrank+105, yysvec+23, yyvstop+194, 1203 yycrank+109, yysvec+23, yyvstop+196, 1204 yycrank+113, yysvec+23, yyvstop+198, 1205 yycrank+109, yysvec+23, yyvstop+200, 1206 yycrank+0, yysvec+23, yyvstop+202, 1207 yycrank+0, yysvec+23, yyvstop+205, 1208 yycrank+128, yysvec+23, yyvstop+208, 1209 yycrank+0, yysvec+23, yyvstop+210, 1210 yycrank+0, yysvec+23, yyvstop+213, 1211 yycrank+123, yysvec+23, yyvstop+216, 1212 yycrank+126, yysvec+23, yyvstop+218, 1213 yycrank+136, yysvec+23, yyvstop+220, 1214 yycrank+124, yysvec+23, yyvstop+222, 1215 yycrank+0, yysvec+23, yyvstop+224, 1216 yycrank+139, yysvec+23, yyvstop+227, 1217 yycrank+0, yysvec+23, yyvstop+229, 1218 yycrank+710, 0, 0, 1219 yycrank+0, yysvec+116, yyvstop+232, 1220 yycrank+137, yysvec+23, yyvstop+234, 1221 yycrank+150, yysvec+23, yyvstop+236, 1222 yycrank+151, yysvec+23, yyvstop+238, 1223 yycrank+143, yysvec+23, yyvstop+240, 1224 yycrank+139, yysvec+23, yyvstop+242, 1225 yycrank+0, yysvec+23, yyvstop+244, 1226 yycrank+137, yysvec+23, yyvstop+247, 1227 yycrank+158, yysvec+23, yyvstop+249, 1228 yycrank+158, yysvec+23, yyvstop+251, 1229 yycrank+153, yysvec+23, yyvstop+253, 1230 yycrank+162, yysvec+23, yyvstop+255, 1231 yycrank+172, yysvec+23, yyvstop+257, 1232 yycrank+160, yysvec+23, yyvstop+259, 1233 yycrank+0, yysvec+23, yyvstop+261, 1234 yycrank+157, yysvec+23, yyvstop+264, 1235 yycrank+181, yysvec+23, yyvstop+266, 1236 yycrank+0, yysvec+23, yyvstop+268, 1237 yycrank+0, yysvec+23, yyvstop+271, 1238 yycrank+0, yysvec+23, yyvstop+274, 1239 yycrank+0, yysvec+23, yyvstop+277, 1240 yycrank+183, yysvec+23, yyvstop+280, 1241 yycrank+169, yysvec+23, yyvstop+282, 1242 yycrank+0, yysvec+23, yyvstop+284, 1243 yycrank+0, yysvec+23, yyvstop+287, 1244 yycrank+173, yysvec+23, yyvstop+290, 1245 yycrank+178, yysvec+23, yyvstop+292, 1246 yycrank+192, yysvec+23, yyvstop+294, 1247 yycrank+0, yysvec+23, yyvstop+296, 1248 yycrank+0, yysvec+23, yyvstop+299, 1249 yycrank+0, yysvec+23, yyvstop+302, 1250 0, 0, 0}; 1251 struct yywork *yytop = yycrank+767; 1252 struct yysvf *yybgin = yysvec+1; 1253 char yymatch[] = { 1254 0, 1, 1, 1, 1, 1, 1, 1, 1255 1, 9, 10, 1, 1, 1, 1, 1, 1256 1, 1, 1, 1, 1, 1, 1, 1, 1257 1, 1, 1, 1, 1, 1, 1, 1, 1258 9, 1, 34, 1, 1, 1, 1, 1, 1259 1, 1, 1, 43, 44, 45, 44, 1, 1260 48, 48, 48, 48, 48, 48, 48, 48, 1261 48, 48, 1, 1, 1, 1, 1, 1, 1262 1, 65, 65, 65, 65, 69, 65, 65, 1263 65, 65, 65, 65, 65, 65, 65, 65, 1264 65, 65, 65, 65, 65, 65, 65, 65, 1265 65, 65, 65, 1, 1, 1, 1, 44, 1266 1, 65, 65, 65, 65, 69, 65, 65, 1267 65, 65, 65, 65, 65, 65, 65, 65, 1268 65, 65, 65, 65, 65, 65, 65, 65, 1269 65, 65, 65, 1, 1, 1, 1, 1, 1270 1, 1, 1, 1, 1, 1, 1, 1, 1271 1, 1, 1, 1, 1, 1, 1, 1, 1272 1, 1, 1, 1, 1, 1, 1, 1, 1273 1, 1, 1, 1, 1, 1, 1, 1, 1274 1, 1, 1, 1, 1, 1, 1, 1, 1275 1, 1, 1, 1, 1, 1, 1, 1, 1276 1, 1, 1, 1, 1, 1, 1, 1, 1277 1, 1, 1, 1, 1, 1, 1, 1, 1278 1, 1, 1, 1, 1, 1, 1, 1, 1279 1, 1, 1, 1, 1, 1, 1, 1, 1280 1, 1, 1, 1, 1, 1, 1, 1, 1281 1, 1, 1, 1, 1, 1, 1, 1, 1282 1, 1, 1, 1, 1, 1, 1, 1, 1283 1, 1, 1, 1, 1, 1, 1, 1, 1284 1, 1, 1, 1, 1, 1, 1, 1, 1285 1, 1, 1, 1, 1, 1, 1, 1, 1286 0}; 1287 char yyextra[] = { 1288 0,0,0,0,0,0,0,0, 1289 0,0,0,0,0,0,0,0, 1290 0,0,0,0,0,0,0,0, 1291 0,0,0,0,0,0,0,0, 1292 0,0,0,0,0,0,0,0, 1293 0}; 1294 /* 1295 * CDDL HEADER START 1296 * 1297 * The contents of this file are subject to the terms of the 1298 * Common Development and Distribution License, Version 1.0 only 1299 * (the "License"). You may not use this file except in compliance 1300 * with the License. 1301 * 1302 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 1303 * or http://www.opensolaris.org/os/licensing. 1304 * See the License for the specific language governing permissions 1305 * and limitations under the License. 1306 * 1307 * When distributing Covered Code, include this CDDL HEADER in each 1308 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 1309 * If applicable, add the following below this CDDL HEADER, with the 1310 * fields enclosed by brackets "[]" replaced with your own identifying 1311 * information: Portions Copyright [yyyy] [name of copyright owner] 1312 * 1313 * CDDL HEADER END 1314 */ 1315 1316 /* Copyright (c) 1989 AT&T */ 1317 /* All Rights Reserved */ 1318 1319 #pragma ident "%Z%%M% %I% %E% SMI" 1320 1321 int yylineno =1; 1322 # define YYU(x) x 1323 # define NLSTATE yyprevious=YYNEWLINE 1324 struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp; 1325 char yysbuf[YYLMAX]; 1326 char *yysptr = yysbuf; 1327 int *yyfnd; 1328 extern struct yysvf *yyestate; 1329 int yyprevious = YYNEWLINE; 1330 #if defined(__cplusplus) || defined(__STDC__) 1331 int yylook(void) 1332 #else 1333 yylook() 1334 #endif 1335 { 1336 register struct yysvf *yystate, **lsp; 1337 register struct yywork *yyt; 1338 struct yysvf *yyz; 1339 int yych, yyfirst; 1340 struct yywork *yyr; 1341 # ifdef LEXDEBUG 1342 int debug; 1343 # endif 1344 char *yylastch; 1345 /* start off machines */ 1346 # ifdef LEXDEBUG 1347 debug = 0; 1348 # endif 1349 yyfirst=1; 1350 if (!yymorfg) 1351 yylastch = yytext; 1352 else { 1353 yymorfg=0; 1354 yylastch = yytext+yyleng; 1355 } 1356 for(;;){ 1357 lsp = yylstate; 1358 yyestate = yystate = yybgin; 1359 if (yyprevious==YYNEWLINE) yystate++; 1360 for (;;){ 1361 # ifdef LEXDEBUG 1362 if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1); 1363 # endif 1364 yyt = yystate->yystoff; 1365 if(yyt == yycrank && !yyfirst){ /* may not be any transitions */ 1366 yyz = yystate->yyother; 1367 if(yyz == 0)break; 1368 if(yyz->yystoff == yycrank)break; 1369 } 1370 #ifndef __cplusplus 1371 *yylastch++ = yych = input(); 1372 #else 1373 *yylastch++ = yych = lex_input(); 1374 #endif 1375 #ifdef YYISARRAY 1376 if(yylastch > &yytext[YYLMAX]) { 1377 fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); 1378 exit(1); 1379 } 1380 #else 1381 if (yylastch >= &yytext[ yytextsz ]) { 1382 int x = yylastch - yytext; 1383 1384 yytextsz += YYTEXTSZINC; 1385 if (yytext == yy_tbuf) { 1386 yytext = (char *) malloc(yytextsz); 1387 memcpy(yytext, yy_tbuf, sizeof (yy_tbuf)); 1388 } 1389 else 1390 yytext = (char *) realloc(yytext, yytextsz); 1391 if (!yytext) { 1392 fprintf(yyout, 1393 "Cannot realloc yytext\n"); 1394 exit(1); 1395 } 1396 yylastch = yytext + x; 1397 } 1398 #endif 1399 yyfirst=0; 1400 tryagain: 1401 # ifdef LEXDEBUG 1402 if(debug){ 1403 fprintf(yyout,"char "); 1404 allprint(yych); 1405 putchar('\n'); 1406 } 1407 # endif 1408 yyr = yyt; 1409 if ( (uintptr_t)yyt > (uintptr_t)yycrank){ 1410 yyt = yyr + yych; 1411 if (yyt <= yytop && yyt->verify+yysvec == yystate){ 1412 if(yyt->advance+yysvec == YYLERR) /* error transitions */ 1413 {unput(*--yylastch);break;} 1414 *lsp++ = yystate = yyt->advance+yysvec; 1415 if(lsp > &yylstate[YYLMAX]) { 1416 fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); 1417 exit(1); 1418 } 1419 goto contin; 1420 } 1421 } 1422 # ifdef YYOPTIM 1423 else if((uintptr_t)yyt < (uintptr_t)yycrank) { /* r < yycrank */ 1424 yyt = yyr = yycrank+(yycrank-yyt); 1425 # ifdef LEXDEBUG 1426 if(debug)fprintf(yyout,"compressed state\n"); 1427 # endif 1428 yyt = yyt + yych; 1429 if(yyt <= yytop && yyt->verify+yysvec == yystate){ 1430 if(yyt->advance+yysvec == YYLERR) /* error transitions */ 1431 {unput(*--yylastch);break;} 1432 *lsp++ = yystate = yyt->advance+yysvec; 1433 if(lsp > &yylstate[YYLMAX]) { 1434 fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); 1435 exit(1); 1436 } 1437 goto contin; 1438 } 1439 yyt = yyr + YYU(yymatch[yych]); 1440 # ifdef LEXDEBUG 1441 if(debug){ 1442 fprintf(yyout,"try fall back character "); 1443 allprint(YYU(yymatch[yych])); 1444 putchar('\n'); 1445 } 1446 # endif 1447 if(yyt <= yytop && yyt->verify+yysvec == yystate){ 1448 if(yyt->advance+yysvec == YYLERR) /* error transition */ 1449 {unput(*--yylastch);break;} 1450 *lsp++ = yystate = yyt->advance+yysvec; 1451 if(lsp > &yylstate[YYLMAX]) { 1452 fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); 1453 exit(1); 1454 } 1455 goto contin; 1456 } 1457 } 1458 if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){ 1459 # ifdef LEXDEBUG 1460 if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1); 1461 # endif 1462 goto tryagain; 1463 } 1464 # endif 1465 else 1466 {unput(*--yylastch);break;} 1467 contin: 1468 # ifdef LEXDEBUG 1469 if(debug){ 1470 fprintf(yyout,"state %d char ",yystate-yysvec-1); 1471 allprint(yych); 1472 putchar('\n'); 1473 } 1474 # endif 1475 ; 1476 } 1477 # ifdef LEXDEBUG 1478 if(debug){ 1479 fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1); 1480 allprint(yych); 1481 putchar('\n'); 1482 } 1483 # endif 1484 while (lsp-- > yylstate){ 1485 *yylastch-- = 0; 1486 if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){ 1487 yyolsp = lsp; 1488 if(yyextra[*yyfnd]){ /* must backup */ 1489 while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){ 1490 lsp--; 1491 unput(*yylastch--); 1492 } 1493 } 1494 yyprevious = YYU(*yylastch); 1495 yylsp = lsp; 1496 yyleng = yylastch-yytext+1; 1497 yytext[yyleng] = 0; 1498 # ifdef LEXDEBUG 1499 if(debug){ 1500 fprintf(yyout,"\nmatch "); 1501 sprint(yytext); 1502 fprintf(yyout," action %d\n",*yyfnd); 1503 } 1504 # endif 1505 return(*yyfnd++); 1506 } 1507 unput(*yylastch); 1508 } 1509 if (yytext[0] == 0 /* && feof(yyin) */) 1510 { 1511 yysptr=yysbuf; 1512 return(0); 1513 } 1514 #ifndef __cplusplus 1515 yyprevious = yytext[0] = input(); 1516 if (yyprevious>0) 1517 output(yyprevious); 1518 #else 1519 yyprevious = yytext[0] = lex_input(); 1520 if (yyprevious>0) 1521 lex_output(yyprevious); 1522 #endif 1523 yylastch=yytext; 1524 # ifdef LEXDEBUG 1525 if(debug)putchar('\n'); 1526 # endif 1527 } 1528 } 1529 #if defined(__cplusplus) || defined(__STDC__) 1530 int yyback(int *p, int m) 1531 #else 1532 yyback(p, m) 1533 int *p; 1534 #endif 1535 { 1536 if (p==0) return(0); 1537 while (*p) { 1538 if (*p++ == m) 1539 return(1); 1540 } 1541 return(0); 1542 } 1543 /* the following are only used in the lex library */ 1544 #if defined(__cplusplus) || defined(__STDC__) 1545 int yyinput(void) 1546 #else 1547 yyinput() 1548 #endif 1549 { 1550 #ifndef __cplusplus 1551 return(input()); 1552 #else 1553 return(lex_input()); 1554 #endif 1555 } 1556 #if defined(__cplusplus) || defined(__STDC__) 1557 void yyoutput(int c) 1558 #else 1559 yyoutput(c) 1560 int c; 1561 #endif 1562 { 1563 #ifndef __cplusplus 1564 output(c); 1565 #else 1566 lex_output(c); 1567 #endif 1568 } 1569 #if defined(__cplusplus) || defined(__STDC__) 1570 void yyunput(int c) 1571 #else 1572 yyunput(c) 1573 int c; 1574 #endif 1575 { 1576 unput(c); 1577 } 1578