1 2 3 package soot.jimple.parser.lexer; 4 5 import java.io.*; 6 import java.util.*; 7 import soot.jimple.parser.node.*; 8 9 public class Lexer 10 { 11 protected Token token; 12 protected State state = State.INITIAL; 13 14 private PushbackReader in; 15 private int line; 16 private int pos; 17 private boolean cr; 18 private boolean eof; 19 private final StringBuffer text = new StringBuffer (); 20 21 protected void filter() throws LexerException, IOException 22 { 23 } 24 25 public Lexer(PushbackReader in) 26 { 27 this.in = in; 28 29 if(gotoTable == null) 30 { 31 try 32 { 33 DataInputStream s = new DataInputStream( 34 new BufferedInputStream( 35 Lexer.class.getResourceAsStream("lexer.dat"))); 36 37 int length = s.readInt(); 39 gotoTable = new int[length][][][]; 40 for(int i = 0; i < gotoTable.length; i++) 41 { 42 length = s.readInt(); 43 gotoTable[i] = new int[length][][]; 44 for(int j = 0; j < gotoTable[i].length; j++) 45 { 46 length = s.readInt(); 47 gotoTable[i][j] = new int[length][3]; 48 for(int k = 0; k < gotoTable[i][j].length; k++) 49 { 50 for(int l = 0; l < 3; l++) 51 { 52 gotoTable[i][j][k][l] = s.readInt(); 53 } 54 } 55 } 56 } 57 58 length = s.readInt(); 60 accept = new int[length][]; 61 for(int i = 0; i < accept.length; i++) 62 { 63 length = s.readInt(); 64 accept[i] = new int[length]; 65 for(int j = 0; j < accept[i].length; j++) 66 { 67 accept[i][j] = s.readInt(); 68 } 69 } 70 71 s.close(); 72 } 73 catch(Exception e) 74 { 75 throw new RuntimeException ("The file \"lexer.dat\" is either missing or corrupted."); 76 } 77 } 78 } 79 80 public Token peek() throws LexerException, IOException 81 { 82 while(token == null) 83 { 84 token = getToken(); 85 filter(); 86 } 87 88 return token; 89 } 90 91 public Token next() throws LexerException, IOException 92 { 93 while(token == null) 94 { 95 token = getToken(); 96 filter(); 97 } 98 99 Token result = token; 100 token = null; 101 return result; 102 } 103 104 protected Token getToken() throws IOException, LexerException 105 { 106 int dfa_state = 0; 107 108 int start_pos = pos; 109 int start_line = line; 110 111 int accept_state = -1; 112 int accept_token = -1; 113 int accept_length = -1; 114 int accept_pos = -1; 115 int accept_line = -1; 116 117 int[][][] gotoTable = this.gotoTable[state.id()]; 118 int[] accept = this.accept[state.id()]; 119 text.setLength(0); 120 121 while(true) 122 { 123 int c = getChar(); 124 125 if(c != -1) 126 { 127 switch(c) 128 { 129 case 10: 130 if(cr) 131 { 132 cr = false; 133 } 134 else 135 { 136 line++; 137 pos = 0; 138 } 139 break; 140 case 13: 141 line++; 142 pos = 0; 143 cr = true; 144 break; 145 default: 146 pos++; 147 cr = false; 148 break; 149 }; 150 151 text.append((char) c); 152 153 do 154 { 155 int oldState = (dfa_state < -1) ? (-2 -dfa_state) : dfa_state; 156 157 dfa_state = -1; 158 159 int[][] tmp1 = gotoTable[oldState]; 160 int low = 0; 161 int high = tmp1.length - 1; 162 163 while(low <= high) 164 { 165 int middle = (low + high) / 2; 166 int[] tmp2 = tmp1[middle]; 167 168 if(c < tmp2[0]) 169 { 170 high = middle - 1; 171 } 172 else if(c > tmp2[1]) 173 { 174 low = middle + 1; 175 } 176 else 177 { 178 dfa_state = tmp2[2]; 179 break; 180 } 181 } 182 }while(dfa_state < -1); 183 } 184 else 185 { 186 dfa_state = -1; 187 } 188 189 if(dfa_state >= 0) 190 { 191 if(accept[dfa_state] != -1) 192 { 193 accept_state = dfa_state; 194 accept_token = accept[dfa_state]; 195 accept_length = text.length(); 196 accept_pos = pos; 197 accept_line = line; 198 } 199 } 200 else 201 { 202 if(accept_state != -1) 203 { 204 switch(accept_token) 205 { 206 case 0: 207 { 208 Token token = new0( 209 getText(accept_length), 210 start_line + 1, 211 start_pos + 1); 212 pushBack(accept_length); 213 pos = accept_pos; 214 line = accept_line; 215 return token; 216 } 217 case 1: 218 { 219 Token token = new1( 220 start_line + 1, 221 start_pos + 1); 222 pushBack(accept_length); 223 pos = accept_pos; 224 line = accept_line; 225 return token; 226 } 227 case 2: 228 { 229 Token token = new2( 230 start_line + 1, 231 start_pos + 1); 232 pushBack(accept_length); 233 pos = accept_pos; 234 line = accept_line; 235 return token; 236 } 237 case 3: 238 { 239 Token token = new3( 240 start_line + 1, 241 start_pos + 1); 242 pushBack(accept_length); 243 pos = accept_pos; 244 line = accept_line; 245 return token; 246 } 247 case 4: 248 { 249 Token token = new4( 250 start_line + 1, 251 start_pos + 1); 252 pushBack(accept_length); 253 pos = accept_pos; 254 line = accept_line; 255 return token; 256 } 257 case 5: 258 { 259 Token token = new5( 260 start_line + 1, 261 start_pos + 1); 262 pushBack(accept_length); 263 pos = accept_pos; 264 line = accept_line; 265 return token; 266 } 267 case 6: 268 { 269 Token token = new6( 270 start_line + 1, 271 start_pos + 1); 272 pushBack(accept_length); 273 pos = accept_pos; 274 line = accept_line; 275 return token; 276 } 277 case 7: 278 { 279 Token token = new7( 280 start_line + 1, 281 start_pos + 1); 282 pushBack(accept_length); 283 pos = accept_pos; 284 line = accept_line; 285 return token; 286 } 287 case 8: 288 { 289 Token token = new8( 290 start_line + 1, 291 start_pos + 1); 292 pushBack(accept_length); 293 pos = accept_pos; 294 line = accept_line; 295 return token; 296 } 297 case 9: 298 { 299 Token token = new9( 300 start_line + 1, 301 start_pos + 1); 302 pushBack(accept_length); 303 pos = accept_pos; 304 line = accept_line; 305 return token; 306 } 307 case 10: 308 { 309 Token token = new10( 310 start_line + 1, 311 start_pos + 1); 312 pushBack(accept_length); 313 pos = accept_pos; 314 line = accept_line; 315 return token; 316 } 317 case 11: 318 { 319 Token token = new11( 320 start_line + 1, 321 start_pos + 1); 322 pushBack(accept_length); 323 pos = accept_pos; 324 line = accept_line; 325 return token; 326 } 327 case 12: 328 { 329 Token token = new12( 330 start_line + 1, 331 start_pos + 1); 332 pushBack(accept_length); 333 pos = accept_pos; 334 line = accept_line; 335 return token; 336 } 337 case 13: 338 { 339 Token token = new13( 340 start_line + 1, 341 start_pos + 1); 342 pushBack(accept_length); 343 pos = accept_pos; 344 line = accept_line; 345 return token; 346 } 347 case 14: 348 { 349 Token token = new14( 350 start_line + 1, 351 start_pos + 1); 352 pushBack(accept_length); 353 pos = accept_pos; 354 line = accept_line; 355 return token; 356 } 357 case 15: 358 { 359 Token token = new15( 360 start_line + 1, 361 start_pos + 1); 362 pushBack(accept_length); 363 pos = accept_pos; 364 line = accept_line; 365 return token; 366 } 367 case 16: 368 { 369 Token token = new16( 370 start_line + 1, 371 start_pos + 1); 372 pushBack(accept_length); 373 pos = accept_pos; 374 line = accept_line; 375 return token; 376 } 377 case 17: 378 { 379 Token token = new17( 380 start_line + 1, 381 start_pos + 1); 382 pushBack(accept_length); 383 pos = accept_pos; 384 line = accept_line; 385 return token; 386 } 387 case 18: 388 { 389 Token token = new18( 390 start_line + 1, 391 start_pos + 1); 392 pushBack(accept_length); 393 pos = accept_pos; 394 line = accept_line; 395 return token; 396 } 397 case 19: 398 { 399 Token token = new19( 400 start_line + 1, 401 start_pos + 1); 402 pushBack(accept_length); 403 pos = accept_pos; 404 line = accept_line; 405 return token; 406 } 407 case 20: 408 { 409 Token token = new20( 410 start_line + 1, 411 start_pos + 1); 412 pushBack(accept_length); 413 pos = accept_pos; 414 line = accept_line; 415 return token; 416 } 417 case 21: 418 { 419 Token token = new21( 420 start_line + 1, 421 start_pos + 1); 422 pushBack(accept_length); 423 pos = accept_pos; 424 line = accept_line; 425 return token; 426 } 427 case 22: 428 { 429 Token token = new22( 430 start_line + 1, 431 start_pos + 1); 432 pushBack(accept_length); 433 pos = accept_pos; 434 line = accept_line; 435 return token; 436 } 437 case 23: 438 { 439 Token token = new23( 440 start_line + 1, 441 start_pos + 1); 442 pushBack(accept_length); 443 pos = accept_pos; 444 line = accept_line; 445 return token; 446 } 447 case 24: 448 { 449 Token token = new24( 450 start_line + 1, 451 start_pos + 1); 452 pushBack(accept_length); 453 pos = accept_pos; 454 line = accept_line; 455 return token; 456 } 457 case 25: 458 { 459 Token token = new25( 460 start_line + 1, 461 start_pos + 1); 462 pushBack(accept_length); 463 pos = accept_pos; 464 line = accept_line; 465 return token; 466 } 467 case 26: 468 { 469 Token token = new26( 470 start_line + 1, 471 start_pos + 1); 472 pushBack(accept_length); 473 pos = accept_pos; 474 line = accept_line; 475 return token; 476 } 477 case 27: 478 { 479 Token token = new27( 480 start_line + 1, 481 start_pos + 1); 482 pushBack(accept_length); 483 pos = accept_pos; 484 line = accept_line; 485 return token; 486 } 487 case 28: 488 { 489 Token token = new28( 490 start_line + 1, 491 start_pos + 1); 492 pushBack(accept_length); 493 pos = accept_pos; 494 line = accept_line; 495 return token; 496 } 497 case 29: 498 { 499 Token token = new29( 500 start_line + 1, 501 start_pos + 1); 502 pushBack(accept_length); 503 pos = accept_pos; 504 line = accept_line; 505 return token; 506 } 507 case 30: 508 { 509 Token token = new30( 510 start_line + 1, 511 start_pos + 1); 512 pushBack(accept_length); 513 pos = accept_pos; 514 line = accept_line; 515 return token; 516 } 517 case 31: 518 { 519 Token token = new31( 520 start_line + 1, 521 start_pos + 1); 522 pushBack(accept_length); 523 pos = accept_pos; 524 line = accept_line; 525 return token; 526 } 527 case 32: 528 { 529 Token token = new32( 530 start_line + 1, 531 start_pos + 1); 532 pushBack(accept_length); 533 pos = accept_pos; 534 line = accept_line; 535 return token; 536 } 537 case 33: 538 { 539 Token token = new33( 540 start_line + 1, 541 start_pos + 1); 542 pushBack(accept_length); 543 pos = accept_pos; 544 line = accept_line; 545 return token; 546 } 547 case 34: 548 { 549 Token token = new34( 550 start_line + 1, 551 start_pos + 1); 552 pushBack(accept_length); 553 pos = accept_pos; 554 line = accept_line; 555 return token; 556 } 557 case 35: 558 { 559 Token token = new35( 560 start_line + 1, 561 start_pos + 1); 562 pushBack(accept_length); 563 pos = accept_pos; 564 line = accept_line; 565 return token; 566 } 567 case 36: 568 { 569 Token token = new36( 570 start_line + 1, 571 start_pos + 1); 572 pushBack(accept_length); 573 pos = accept_pos; 574 line = accept_line; 575 return token; 576 } 577 case 37: 578 { 579 Token token = new37( 580 start_line + 1, 581 start_pos + 1); 582 pushBack(accept_length); 583 pos = accept_pos; 584 line = accept_line; 585 return token; 586 } 587 case 38: 588 { 589 Token token = new38( 590 start_line + 1, 591 start_pos + 1); 592 pushBack(accept_length); 593 pos = accept_pos; 594 line = accept_line; 595 return token; 596 } 597 case 39: 598 { 599 Token token = new39( 600 start_line + 1, 601 start_pos + 1); 602 pushBack(accept_length); 603 pos = accept_pos; 604 line = accept_line; 605 return token; 606 } 607 case 40: 608 { 609 Token token = new40( 610 start_line + 1, 611 start_pos + 1); 612 pushBack(accept_length); 613 pos = accept_pos; 614 line = accept_line; 615 return token; 616 } 617 case 41: 618 { 619 Token token = new41( 620 start_line + 1, 621 start_pos + 1); 622 pushBack(accept_length); 623 pos = accept_pos; 624 line = accept_line; 625 return token; 626 } 627 case 42: 628 { 629 Token token = new42( 630 start_line + 1, 631 start_pos + 1); 632 pushBack(accept_length); 633 pos = accept_pos; 634 line = accept_line; 635 return token; 636 } 637 case 43: 638 { 639 Token token = new43( 640 start_line + 1, 641 start_pos + 1); 642 pushBack(accept_length); 643 pos = accept_pos; 644 line = accept_line; 645 return token; 646 } 647 case 44: 648 { 649 Token token = new44( 650 start_line + 1, 651 start_pos + 1); 652 pushBack(accept_length); 653 pos = accept_pos; 654 line = accept_line; 655 return token; 656 } 657 case 45: 658 { 659 Token token = new45( 660 start_line + 1, 661 start_pos + 1); 662 pushBack(accept_length); 663 pos = accept_pos; 664 line = accept_line; 665 return token; 666 } 667 case 46: 668 { 669 Token token = new46( 670 start_line + 1, 671 start_pos + 1); 672 pushBack(accept_length); 673 pos = accept_pos; 674 line = accept_line; 675 return token; 676 } 677 case 47: 678 { 679 Token token = new47( 680 start_line + 1, 681 start_pos + 1); 682 pushBack(accept_length); 683 pos = accept_pos; 684 line = accept_line; 685 return token; 686 } 687 case 48: 688 { 689 Token token = new48( 690 start_line + 1, 691 start_pos + 1); 692 pushBack(accept_length); 693 pos = accept_pos; 694 line = accept_line; 695 return token; 696 } 697 case 49: 698 { 699 Token token = new49( 700 start_line + 1, 701 start_pos + 1); 702 pushBack(accept_length); 703 pos = accept_pos; 704 line = accept_line; 705 return token; 706 } 707 case 50: 708 { 709 Token token = new50( 710 start_line + 1, 711 start_pos + 1); 712 pushBack(accept_length); 713 pos = accept_pos; 714 line = accept_line; 715 return token; 716 } 717 case 51: 718 { 719 Token token = new51( 720 start_line + 1, 721 start_pos + 1); 722 pushBack(accept_length); 723 pos = accept_pos; 724 line = accept_line; 725 return token; 726 } 727 case 52: 728 { 729 Token token = new52( 730 start_line + 1, 731 start_pos + 1); 732 pushBack(accept_length); 733 pos = accept_pos; 734 line = accept_line; 735 return token; 736 } 737 case 53: 738 { 739 Token token = new53( 740 start_line + 1, 741 start_pos + 1); 742 pushBack(accept_length); 743 pos = accept_pos; 744 line = accept_line; 745 return token; 746 } 747 case 54: 748 { 749 Token token = new54( 750 start_line + 1, 751 start_pos + 1); 752 pushBack(accept_length); 753 pos = accept_pos; 754 line = accept_line; 755 return token; 756 } 757 case 55: 758 { 759 Token token = new55( 760 start_line + 1, 761 start_pos + 1); 762 pushBack(accept_length); 763 pos = accept_pos; 764 line = accept_line; 765 return token; 766 } 767 case 56: 768 { 769 Token token = new56( 770 start_line + 1, 771 start_pos + 1); 772 pushBack(accept_length); 773 pos = accept_pos; 774 line = accept_line; 775 return token; 776 } 777 case 57: 778 { 779 Token token = new57( 780 start_line + 1, 781 start_pos + 1); 782 pushBack(accept_length); 783 pos = accept_pos; 784 line = accept_line; 785 return token; 786 } 787 case 58: 788 { 789 Token token = new58( 790 start_line + 1, 791 start_pos + 1); 792 pushBack(accept_length); 793 pos = accept_pos; 794 line = accept_line; 795 return token; 796 } 797 case 59: 798 { 799 Token token = new59( 800 start_line + 1, 801 start_pos + 1); 802 pushBack(accept_length); 803 pos = accept_pos; 804 line = accept_line; 805 return token; 806 } 807 case 60: 808 { 809 Token token = new60( 810 start_line + 1, 811 start_pos + 1); 812 pushBack(accept_length); 813 pos = accept_pos; 814 line = accept_line; 815 return token; 816 } 817 case 61: 818 { 819 Token token = new61( 820 start_line + 1, 821 start_pos + 1); 822 pushBack(accept_length); 823 pos = accept_pos; 824 line = accept_line; 825 return token; 826 } 827 case 62: 828 { 829 Token token = new62( 830 start_line + 1, 831 start_pos + 1); 832 pushBack(accept_length); 833 pos = accept_pos; 834 line = accept_line; 835 return token; 836 } 837 case 63: 838 { 839 Token token = new63( 840 start_line + 1, 841 start_pos + 1); 842 pushBack(accept_length); 843 pos = accept_pos; 844 line = accept_line; 845 return token; 846 } 847 case 64: 848 { 849 Token token = new64( 850 start_line + 1, 851 start_pos + 1); 852 pushBack(accept_length); 853 pos = accept_pos; 854 line = accept_line; 855 return token; 856 } 857 case 65: 858 { 859 Token token = new65( 860 start_line + 1, 861 start_pos + 1); 862 pushBack(accept_length); 863 pos = accept_pos; 864 line = accept_line; 865 return token; 866 } 867 case 66: 868 { 869 Token token = new66( 870 start_line + 1, 871 start_pos + 1); 872 pushBack(accept_length); 873 pos = accept_pos; 874 line = accept_line; 875 return token; 876 } 877 case 67: 878 { 879 Token token = new67( 880 start_line + 1, 881 start_pos + 1); 882 pushBack(accept_length); 883 pos = accept_pos; 884 line = accept_line; 885 return token; 886 } 887 case 68: 888 { 889 Token token = new68( 890 start_line + 1, 891 start_pos + 1); 892 pushBack(accept_length); 893 pos = accept_pos; 894 line = accept_line; 895 return token; 896 } 897 case 69: 898 { 899 Token token = new69( 900 start_line + 1, 901 start_pos + 1); 902 pushBack(accept_length); 903 pos = accept_pos; 904 line = accept_line; 905 return token; 906 } 907 case 70: 908 { 909 Token token = new70( 910 start_line + 1, 911 start_pos + 1); 912 pushBack(accept_length); 913 pos = accept_pos; 914 line = accept_line; 915 return token; 916 } 917 case 71: 918 { 919 Token token = new71( 920 start_line + 1, 921 start_pos + 1); 922 pushBack(accept_length); 923 pos = accept_pos; 924 line = accept_line; 925 return token; 926 } 927 case 72: 928 { 929 Token token = new72( 930 start_line + 1, 931 start_pos + 1); 932 pushBack(accept_length); 933 pos = accept_pos; 934 line = accept_line; 935 return token; 936 } 937 case 73: 938 { 939 Token token = new73( 940 start_line + 1, 941 start_pos + 1); 942 pushBack(accept_length); 943 pos = accept_pos; 944 line = accept_line; 945 return token; 946 } 947 case 74: 948 { 949 Token token = new74( 950 start_line + 1, 951 start_pos + 1); 952 pushBack(accept_length); 953 pos = accept_pos; 954 line = accept_line; 955 return token; 956 } 957 case 75: 958 { 959 Token token = new75( 960 start_line + 1, 961 start_pos + 1); 962 pushBack(accept_length); 963 pos = accept_pos; 964 line = accept_line; 965 return token; 966 } 967 case 76: 968 { 969 Token token = new76( 970 start_line + 1, 971 start_pos + 1); 972 pushBack(accept_length); 973 pos = accept_pos; 974 line = accept_line; 975 return token; 976 } 977 case 77: 978 { 979 Token token = new77( 980 start_line + 1, 981 start_pos + 1); 982 pushBack(accept_length); 983 pos = accept_pos; 984 line = accept_line; 985 return token; 986 } 987 case 78: 988 { 989 Token token = new78( 990 start_line + 1, 991 start_pos + 1); 992 pushBack(accept_length); 993 pos = accept_pos; 994 line = accept_line; 995 return token; 996 } 997 case 79: 998 { 999 Token token = new79( 1000 start_line + 1, 1001 start_pos + 1); 1002 pushBack(accept_length); 1003 pos = accept_pos; 1004 line = accept_line; 1005 return token; 1006 } 1007 case 80: 1008 { 1009 Token token = new80( 1010 start_line + 1, 1011 start_pos + 1); 1012 pushBack(accept_length); 1013 pos = accept_pos; 1014 line = accept_line; 1015 return token; 1016 } 1017 case 81: 1018 { 1019 Token token = new81( 1020 start_line + 1, 1021 start_pos + 1); 1022 pushBack(accept_length); 1023 pos = accept_pos; 1024 line = accept_line; 1025 return token; 1026 } 1027 case 82: 1028 { 1029 Token token = new82( 1030 start_line + 1, 1031 start_pos + 1); 1032 pushBack(accept_length); 1033 pos = accept_pos; 1034 line = accept_line; 1035 return token; 1036 } 1037 case 83: 1038 { 1039 Token token = new83( 1040 start_line + 1, 1041 start_pos + 1); 1042 pushBack(accept_length); 1043 pos = accept_pos; 1044 line = accept_line; 1045 return token; 1046 } 1047 case 84: 1048 { 1049 Token token = new84( 1050 start_line + 1, 1051 start_pos + 1); 1052 pushBack(accept_length); 1053 pos = accept_pos; 1054 line = accept_line; 1055 return token; 1056 } 1057 case 85: 1058 { 1059 Token token = new85( 1060 start_line + 1, 1061 start_pos + 1); 1062 pushBack(accept_length); 1063 pos = accept_pos; 1064 line = accept_line; 1065 return token; 1066 } 1067 case 86: 1068 { 1069 Token token = new86( 1070 start_line + 1, 1071 start_pos + 1); 1072 pushBack(accept_length); 1073 pos = accept_pos; 1074 line = accept_line; 1075 return token; 1076 } 1077 case 87: 1078 { 1079 Token token = new87( 1080 start_line + 1, 1081 start_pos + 1); 1082 pushBack(accept_length); 1083 pos = accept_pos; 1084 line = accept_line; 1085 return token; 1086 } 1087 case 88: 1088 { 1089 Token token = new88( 1090 start_line + 1, 1091 start_pos + 1); 1092 pushBack(accept_length); 1093 pos = accept_pos; 1094 line = accept_line; 1095 return token; 1096 } 1097 case 89: 1098 { 1099 Token token = new89( 1100 start_line + 1, 1101 start_pos + 1); 1102 pushBack(accept_length); 1103 pos = accept_pos; 1104 line = accept_line; 1105 return token; 1106 } 1107 case 90: 1108 { 1109 Token token = new90( 1110 start_line + 1, 1111 start_pos + 1); 1112 pushBack(accept_length); 1113 pos = accept_pos; 1114 line = accept_line; 1115 return token; 1116 } 1117 case 91: 1118 { 1119 Token token = new91( 1120 start_line + 1, 1121 start_pos + 1); 1122 pushBack(accept_length); 1123 pos = accept_pos; 1124 line = accept_line; 1125 return token; 1126 } 1127 case 92: 1128 { 1129 Token token = new92( 1130 getText(accept_length), 1131 start_line + 1, 1132 start_pos + 1); 1133 pushBack(accept_length); 1134 pos = accept_pos; 1135 line = accept_line; 1136 return token; 1137 } 1138 case 93: 1139 { 1140 Token token = new93( 1141 getText(accept_length), 1142 start_line + 1, 1143 start_pos + 1); 1144 pushBack(accept_length); 1145 pos = accept_pos; 1146 line = accept_line; 1147 return token; 1148 } 1149 case 94: 1150 { 1151 Token token = new94( 1152 getText(accept_length), 1153 start_line + 1, 1154 start_pos + 1); 1155 pushBack(accept_length); 1156 pos = accept_pos; 1157 line = accept_line; 1158 return token; 1159 } 1160 case 95: 1161 { 1162 Token token = new95( 1163 getText(accept_length), 1164 start_line + 1, 1165 start_pos + 1); 1166 pushBack(accept_length); 1167 pos = accept_pos; 1168 line = accept_line; 1169 return token; 1170 } 1171 case 96: 1172 { 1173 Token token = new96( 1174 getText(accept_length), 1175 start_line + 1, 1176 start_pos + 1); 1177 pushBack(accept_length); 1178 pos = accept_pos; 1179 line = accept_line; 1180 return token; 1181 } 1182 case 97: 1183 { 1184 Token token = new97( 1185 getText(accept_length), 1186 start_line + 1, 1187 start_pos + 1); 1188 pushBack(accept_length); 1189 pos = accept_pos; 1190 line = accept_line; 1191 return token; 1192 } 1193 case 98: 1194 { 1195 Token token = new98( 1196 getText(accept_length), 1197 start_line + 1, 1198 start_pos + 1); 1199 pushBack(accept_length); 1200 pos = accept_pos; 1201 line = accept_line; 1202 return token; 1203 } 1204 case 99: 1205 { 1206 Token token = new99( 1207 getText(accept_length), 1208 start_line + 1, 1209 start_pos + 1); 1210 pushBack(accept_length); 1211 pos = accept_pos; 1212 line = accept_line; 1213 return token; 1214 } 1215 } 1216 } 1217 else 1218 { 1219 if(text.length() > 0) 1220 { 1221 throw new LexerException( 1222 "[" + (start_line + 1) + "," + (start_pos + 1) + "]" + 1223 " Unknown token: " + text); 1224 } 1225 else 1226 { 1227 EOF token = new EOF( 1228 start_line + 1, 1229 start_pos + 1); 1230 return token; 1231 } 1232 } 1233 } 1234 } 1235 } 1236 1237 Token new0(String text, int line, int pos) { return new TIgnored(text, line, pos); } 1238 Token new1(int line, int pos) { return new TAbstract(line, pos); } 1239 Token new2(int line, int pos) { return new TFinal(line, pos); } 1240 Token new3(int line, int pos) { return new TNative(line, pos); } 1241 Token new4(int line, int pos) { return new TPublic(line, pos); } 1242 Token new5(int line, int pos) { return new TProtected(line, pos); } 1243 Token new6(int line, int pos) { return new TPrivate(line, pos); } 1244 Token new7(int line, int pos) { return new TStatic(line, pos); } 1245 Token new8(int line, int pos) { return new TSynchronized(line, pos); } 1246 Token new9(int line, int pos) { return new TTransient(line, pos); } 1247 Token new10(int line, int pos) { return new TVolatile(line, pos); } 1248 Token new11(int line, int pos) { return new TStrictfp(line, pos); } 1249 Token new12(int line, int pos) { return new TEnum(line, pos); } 1250 Token new13(int line, int pos) { return new TAnnotation(line, pos); } 1251 Token new14(int line, int pos) { return new TClass(line, pos); } 1252 Token new15(int line, int pos) { return new TInterface(line, pos); } 1253 Token new16(int line, int pos) { return new TVoid(line, pos); } 1254 Token new17(int line, int pos) { return new TBoolean(line, pos); } 1255 Token new18(int line, int pos) { return new TByte(line, pos); } 1256 Token new19(int line, int pos) { return new TShort(line, pos); } 1257 Token new20(int line, int pos) { return new TChar(line, pos); } 1258 Token new21(int line, int pos) { return new TInt(line, pos); } 1259 Token new22(int line, int pos) { return new TLong(line, pos); } 1260 Token new23(int line, int pos) { return new TFloat(line, pos); } 1261 Token new24(int line, int pos) { return new TDouble(line, pos); } 1262 Token new25(int line, int pos) { return new TNullType(line, pos); } 1263 Token new26(int line, int pos) { return new TUnknown(line, pos); } 1264 Token new27(int line, int pos) { return new TExtends(line, pos); } 1265 Token new28(int line, int pos) { return new TImplements(line, pos); } 1266 Token new29(int line, int pos) { return new TBreakpoint(line, pos); } 1267 Token new30(int line, int pos) { return new TCase(line, pos); } 1268 Token new31(int line, int pos) { return new TCatch(line, pos); } 1269 Token new32(int line, int pos) { return new TCmp(line, pos); } 1270 Token new33(int line, int pos) { return new TCmpg(line, pos); } 1271 Token new34(int line, int pos) { return new TCmpl(line, pos); } 1272 Token new35(int line, int pos) { return new TDefault(line, pos); } 1273 Token new36(int line, int pos) { return new TEntermonitor(line, pos); } 1274 Token new37(int line, int pos) { return new TExitmonitor(line, pos); } 1275 Token new38(int line, int pos) { return new TGoto(line, pos); } 1276 Token new39(int line, int pos) { return new TIf(line, pos); } 1277 Token new40(int line, int pos) { return new TInstanceof(line, pos); } 1278 Token new41(int line, int pos) { return new TInterfaceinvoke(line, pos); } 1279 Token new42(int line, int pos) { return new TLengthof(line, pos); } 1280 Token new43(int line, int pos) { return new TLookupswitch(line, pos); } 1281 Token new44(int line, int pos) { return new TNeg(line, pos); } 1282 Token new45(int line, int pos) { return new TNew(line, pos); } 1283 Token new46(int line, int pos) { return new TNewarray(line, pos); } 1284 Token new47(int line, int pos) { return new TNewmultiarray(line, pos); } 1285 Token new48(int line, int pos) { return new TNop(line, pos); } 1286 Token new49(int line, int pos) { return new TRet(line, pos); } 1287 Token new50(int line, int pos) { return new TReturn(line, pos); } 1288 Token new51(int line, int pos) { return new TSpecialinvoke(line, pos); } 1289 Token new52(int line, int pos) { return new TStaticinvoke(line, pos); } 1290 Token new53(int line, int pos) { return new TTableswitch(line, pos); } 1291 Token new54(int line, int pos) { return new TThrow(line, pos); } 1292 Token new55(int line, int pos) { return new TThrows(line, pos); } 1293 Token new56(int line, int pos) { return new TVirtualinvoke(line, pos); } 1294 Token new57(int line, int pos) { return new TNull(line, pos); } 1295 Token new58(int line, int pos) { return new TFrom(line, pos); } 1296 Token new59(int line, int pos) { return new TTo(line, pos); } 1297 Token new60(int line, int pos) { return new TWith(line, pos); } 1298 Token new61(int line, int pos) { return new TCls(line, pos); } 1299 Token new62(int line, int pos) { return new TComma(line, pos); } 1300 Token new63(int line, int pos) { return new TLBrace(line, pos); } 1301 Token new64(int line, int pos) { return new TRBrace(line, pos); } 1302 Token new65(int line, int pos) { return new TSemicolon(line, pos); } 1303 Token new66(int line, int pos) { return new TLBracket(line, pos); } 1304 Token new67(int line, int pos) { return new TRBracket(line, pos); } 1305 Token new68(int line, int pos) { return new TLParen(line, pos); } 1306 Token new69(int line, int pos) { return new TRParen(line, pos); } 1307 Token new70(int line, int pos) { return new TColon(line, pos); } 1308 Token new71(int line, int pos) { return new TDot(line, pos); } 1309 Token new72(int line, int pos) { return new TQuote(line, pos); } 1310 Token new73(int line, int pos) { return new TColonEquals(line, pos); } 1311 Token new74(int line, int pos) { return new TEquals(line, pos); } 1312 Token new75(int line, int pos) { return new TAnd(line, pos); } 1313 Token new76(int line, int pos) { return new TOr(line, pos); } 1314 Token new77(int line, int pos) { return new TXor(line, pos); } 1315 Token new78(int line, int pos) { return new TMod(line, pos); } 1316 Token new79(int line, int pos) { return new TCmpeq(line, pos); } 1317 Token new80(int line, int pos) { return new TCmpne(line, pos); } 1318 Token new81(int line, int pos) { return new TCmpgt(line, pos); } 1319 Token new82(int line, int pos) { return new TCmpge(line, pos); } 1320 Token new83(int line, int pos) { return new TCmplt(line, pos); } 1321 Token new84(int line, int pos) { return new TCmple(line, pos); } 1322 Token new85(int line, int pos) { return new TShl(line, pos); } 1323 Token new86(int line, int pos) { return new TShr(line, pos); } 1324 Token new87(int line, int pos) { return new TUshr(line, pos); } 1325 Token new88(int line, int pos) { return new TPlus(line, pos); } 1326 Token new89(int line, int pos) { return new TMinus(line, pos); } 1327 Token new90(int line, int pos) { return new TMult(line, pos); } 1328 Token new91(int line, int pos) { return new TDiv(line, pos); } 1329 Token new92(String text, int line, int pos) { return new TFullIdentifier(text, line, pos); } 1330 Token new93(String text, int line, int pos) { return new TQuotedName(text, line, pos); } 1331 Token new94(String text, int line, int pos) { return new TIdentifier(text, line, pos); } 1332 Token new95(String text, int line, int pos) { return new TAtIdentifier(text, line, pos); } 1333 Token new96(String text, int line, int pos) { return new TBoolConstant(text, line, pos); } 1334 Token new97(String text, int line, int pos) { return new TIntegerConstant(text, line, pos); } 1335 Token new98(String text, int line, int pos) { return new TFloatConstant(text, line, pos); } 1336 Token new99(String text, int line, int pos) { return new TStringConstant(text, line, pos); } 1337 1338 private int getChar() throws IOException 1339 { 1340 if(eof) 1341 { 1342 return -1; 1343 } 1344 1345 int result = in.read(); 1346 1347 if(result == -1) 1348 { 1349 eof = true; 1350 } 1351 1352 return result; 1353 } 1354 1355 private void pushBack(int acceptLength) throws IOException 1356 { 1357 int length = text.length(); 1358 for(int i = length - 1; i >= acceptLength; i--) 1359 { 1360 eof = false; 1361 1362 in.unread(text.charAt(i)); 1363 } 1364 } 1365 1366 protected void unread(Token token) throws IOException 1367 { 1368 String text = token.getText(); 1369 int length = text.length(); 1370 1371 for(int i = length - 1; i >= 0; i--) 1372 { 1373 eof = false; 1374 1375 in.unread(text.charAt(i)); 1376 } 1377 1378 pos = token.getPos() - 1; 1379 line = token.getLine() - 1; 1380 } 1381 1382 private String getText(int acceptLength) 1383 { 1384 StringBuffer s = new StringBuffer (acceptLength); 1385 for(int i = 0; i < acceptLength; i++) 1386 { 1387 s.append(text.charAt(i)); 1388 } 1389 1390 return s.toString(); 1391 } 1392 1393 private static int[][][][] gotoTable; 1394 2069 2070 private static int[][] accept; 2071 2076 2077 public static class State 2078 { 2079 public final static State INITIAL = new State(0); 2080 2081 private int id; 2082 2083 private State(int id) 2084 { 2085 this.id = id; 2086 } 2087 2088 public int id() 2089 { 2090 return id; 2091 } 2092 } 2093} 2094 | Popular Tags |