1 // Generated by Snowball 2.0.0 - https://snowballstem.org/ 2 3 package org.tartarus.snowball.ext; 4 5 import org.tartarus.snowball.Among; 6 7 /** 8 * This class implements the stemming algorithm defined by a snowball script. 9 * 10 * <p>Generated by Snowball 2.0.0 - https://snowballstem.org/ 11 */ 12 @SuppressWarnings("unused") 13 public class SpanishStemmer extends org.tartarus.snowball.SnowballStemmer { 14 15 private static final long serialVersionUID = 1L; 16 private static final java.lang.invoke.MethodHandles.Lookup methodObject = 17 java.lang.invoke.MethodHandles.lookup(); 18 19 private static final Among a_0[] = { 20 new Among("", -1, 6), 21 new Among("\u00E1", 0, 1), 22 new Among("\u00E9", 0, 2), 23 new Among("\u00ED", 0, 3), 24 new Among("\u00F3", 0, 4), 25 new Among("\u00FA", 0, 5) 26 }; 27 28 private static final Among a_1[] = { 29 new Among("la", -1, -1), 30 new Among("sela", 0, -1), 31 new Among("le", -1, -1), 32 new Among("me", -1, -1), 33 new Among("se", -1, -1), 34 new Among("lo", -1, -1), 35 new Among("selo", 5, -1), 36 new Among("las", -1, -1), 37 new Among("selas", 7, -1), 38 new Among("les", -1, -1), 39 new Among("los", -1, -1), 40 new Among("selos", 10, -1), 41 new Among("nos", -1, -1) 42 }; 43 44 private static final Among a_2[] = { 45 new Among("ando", -1, 6), 46 new Among("iendo", -1, 6), 47 new Among("yendo", -1, 7), 48 new Among("\u00E1ndo", -1, 2), 49 new Among("i\u00E9ndo", -1, 1), 50 new Among("ar", -1, 6), 51 new Among("er", -1, 6), 52 new Among("ir", -1, 6), 53 new Among("\u00E1r", -1, 3), 54 new Among("\u00E9r", -1, 4), 55 new Among("\u00EDr", -1, 5) 56 }; 57 58 private static final Among a_3[] = { 59 new Among("ic", -1, -1), 60 new Among("ad", -1, -1), 61 new Among("os", -1, -1), 62 new Among("iv", -1, 1) 63 }; 64 65 private static final Among a_4[] = { 66 new Among("able", -1, 1), new Among("ible", -1, 1), new Among("ante", -1, 1) 67 }; 68 69 private static final Among a_5[] = { 70 new Among("ic", -1, 1), new Among("abil", -1, 1), new Among("iv", -1, 1) 71 }; 72 73 private static final Among a_6[] = { 74 new Among("ica", -1, 1), 75 new Among("ancia", -1, 2), 76 new Among("encia", -1, 5), 77 new Among("adora", -1, 2), 78 new Among("osa", -1, 1), 79 new Among("ista", -1, 1), 80 new Among("iva", -1, 9), 81 new Among("anza", -1, 1), 82 new Among("log\u00EDa", -1, 3), 83 new Among("idad", -1, 8), 84 new Among("able", -1, 1), 85 new Among("ible", -1, 1), 86 new Among("ante", -1, 2), 87 new Among("mente", -1, 7), 88 new Among("amente", 13, 6), 89 new Among("aci\u00F3n", -1, 2), 90 new Among("uci\u00F3n", -1, 4), 91 new Among("ico", -1, 1), 92 new Among("ismo", -1, 1), 93 new Among("oso", -1, 1), 94 new Among("amiento", -1, 1), 95 new Among("imiento", -1, 1), 96 new Among("ivo", -1, 9), 97 new Among("ador", -1, 2), 98 new Among("icas", -1, 1), 99 new Among("ancias", -1, 2), 100 new Among("encias", -1, 5), 101 new Among("adoras", -1, 2), 102 new Among("osas", -1, 1), 103 new Among("istas", -1, 1), 104 new Among("ivas", -1, 9), 105 new Among("anzas", -1, 1), 106 new Among("log\u00EDas", -1, 3), 107 new Among("idades", -1, 8), 108 new Among("ables", -1, 1), 109 new Among("ibles", -1, 1), 110 new Among("aciones", -1, 2), 111 new Among("uciones", -1, 4), 112 new Among("adores", -1, 2), 113 new Among("antes", -1, 2), 114 new Among("icos", -1, 1), 115 new Among("ismos", -1, 1), 116 new Among("osos", -1, 1), 117 new Among("amientos", -1, 1), 118 new Among("imientos", -1, 1), 119 new Among("ivos", -1, 9) 120 }; 121 122 private static final Among a_7[] = { 123 new Among("ya", -1, 1), 124 new Among("ye", -1, 1), 125 new Among("yan", -1, 1), 126 new Among("yen", -1, 1), 127 new Among("yeron", -1, 1), 128 new Among("yendo", -1, 1), 129 new Among("yo", -1, 1), 130 new Among("yas", -1, 1), 131 new Among("yes", -1, 1), 132 new Among("yais", -1, 1), 133 new Among("yamos", -1, 1), 134 new Among("y\u00F3", -1, 1) 135 }; 136 137 private static final Among a_8[] = { 138 new Among("aba", -1, 2), 139 new Among("ada", -1, 2), 140 new Among("ida", -1, 2), 141 new Among("ara", -1, 2), 142 new Among("iera", -1, 2), 143 new Among("\u00EDa", -1, 2), 144 new Among("ar\u00EDa", 5, 2), 145 new Among("er\u00EDa", 5, 2), 146 new Among("ir\u00EDa", 5, 2), 147 new Among("ad", -1, 2), 148 new Among("ed", -1, 2), 149 new Among("id", -1, 2), 150 new Among("ase", -1, 2), 151 new Among("iese", -1, 2), 152 new Among("aste", -1, 2), 153 new Among("iste", -1, 2), 154 new Among("an", -1, 2), 155 new Among("aban", 16, 2), 156 new Among("aran", 16, 2), 157 new Among("ieran", 16, 2), 158 new Among("\u00EDan", 16, 2), 159 new Among("ar\u00EDan", 20, 2), 160 new Among("er\u00EDan", 20, 2), 161 new Among("ir\u00EDan", 20, 2), 162 new Among("en", -1, 1), 163 new Among("asen", 24, 2), 164 new Among("iesen", 24, 2), 165 new Among("aron", -1, 2), 166 new Among("ieron", -1, 2), 167 new Among("ar\u00E1n", -1, 2), 168 new Among("er\u00E1n", -1, 2), 169 new Among("ir\u00E1n", -1, 2), 170 new Among("ado", -1, 2), 171 new Among("ido", -1, 2), 172 new Among("ando", -1, 2), 173 new Among("iendo", -1, 2), 174 new Among("ar", -1, 2), 175 new Among("er", -1, 2), 176 new Among("ir", -1, 2), 177 new Among("as", -1, 2), 178 new Among("abas", 39, 2), 179 new Among("adas", 39, 2), 180 new Among("idas", 39, 2), 181 new Among("aras", 39, 2), 182 new Among("ieras", 39, 2), 183 new Among("\u00EDas", 39, 2), 184 new Among("ar\u00EDas", 45, 2), 185 new Among("er\u00EDas", 45, 2), 186 new Among("ir\u00EDas", 45, 2), 187 new Among("es", -1, 1), 188 new Among("ases", 49, 2), 189 new Among("ieses", 49, 2), 190 new Among("abais", -1, 2), 191 new Among("arais", -1, 2), 192 new Among("ierais", -1, 2), 193 new Among("\u00EDais", -1, 2), 194 new Among("ar\u00EDais", 55, 2), 195 new Among("er\u00EDais", 55, 2), 196 new Among("ir\u00EDais", 55, 2), 197 new Among("aseis", -1, 2), 198 new Among("ieseis", -1, 2), 199 new Among("asteis", -1, 2), 200 new Among("isteis", -1, 2), 201 new Among("\u00E1is", -1, 2), 202 new Among("\u00E9is", -1, 1), 203 new Among("ar\u00E9is", 64, 2), 204 new Among("er\u00E9is", 64, 2), 205 new Among("ir\u00E9is", 64, 2), 206 new Among("ados", -1, 2), 207 new Among("idos", -1, 2), 208 new Among("amos", -1, 2), 209 new Among("\u00E1bamos", 70, 2), 210 new Among("\u00E1ramos", 70, 2), 211 new Among("i\u00E9ramos", 70, 2), 212 new Among("\u00EDamos", 70, 2), 213 new Among("ar\u00EDamos", 74, 2), 214 new Among("er\u00EDamos", 74, 2), 215 new Among("ir\u00EDamos", 74, 2), 216 new Among("emos", -1, 1), 217 new Among("aremos", 78, 2), 218 new Among("eremos", 78, 2), 219 new Among("iremos", 78, 2), 220 new Among("\u00E1semos", 78, 2), 221 new Among("i\u00E9semos", 78, 2), 222 new Among("imos", -1, 2), 223 new Among("ar\u00E1s", -1, 2), 224 new Among("er\u00E1s", -1, 2), 225 new Among("ir\u00E1s", -1, 2), 226 new Among("\u00EDs", -1, 2), 227 new Among("ar\u00E1", -1, 2), 228 new Among("er\u00E1", -1, 2), 229 new Among("ir\u00E1", -1, 2), 230 new Among("ar\u00E9", -1, 2), 231 new Among("er\u00E9", -1, 2), 232 new Among("ir\u00E9", -1, 2), 233 new Among("i\u00F3", -1, 2) 234 }; 235 236 private static final Among a_9[] = { 237 new Among("a", -1, 1), 238 new Among("e", -1, 2), 239 new Among("o", -1, 1), 240 new Among("os", -1, 1), 241 new Among("\u00E1", -1, 1), 242 new Among("\u00E9", -1, 2), 243 new Among("\u00ED", -1, 1), 244 new Among("\u00F3", -1, 1) 245 }; 246 247 private static final char g_v[] = { 248 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 10 249 }; 250 251 private int I_p2; 252 private int I_p1; 253 private int I_pV; 254 r_mark_regions()255 private boolean r_mark_regions() { 256 I_pV = limit; 257 I_p1 = limit; 258 I_p2 = limit; 259 int v_1 = cursor; 260 lab0: 261 { 262 lab1: 263 { 264 int v_2 = cursor; 265 lab2: 266 { 267 if (!(in_grouping(g_v, 97, 252))) { 268 break lab2; 269 } 270 lab3: 271 { 272 int v_3 = cursor; 273 lab4: 274 { 275 if (!(out_grouping(g_v, 97, 252))) { 276 break lab4; 277 } 278 golab5: 279 while (true) { 280 lab6: 281 { 282 if (!(in_grouping(g_v, 97, 252))) { 283 break lab6; 284 } 285 break golab5; 286 } 287 if (cursor >= limit) { 288 break lab4; 289 } 290 cursor++; 291 } 292 break lab3; 293 } 294 cursor = v_3; 295 if (!(in_grouping(g_v, 97, 252))) { 296 break lab2; 297 } 298 golab7: 299 while (true) { 300 lab8: 301 { 302 if (!(out_grouping(g_v, 97, 252))) { 303 break lab8; 304 } 305 break golab7; 306 } 307 if (cursor >= limit) { 308 break lab2; 309 } 310 cursor++; 311 } 312 } 313 break lab1; 314 } 315 cursor = v_2; 316 if (!(out_grouping(g_v, 97, 252))) { 317 break lab0; 318 } 319 lab9: 320 { 321 int v_6 = cursor; 322 lab10: 323 { 324 if (!(out_grouping(g_v, 97, 252))) { 325 break lab10; 326 } 327 golab11: 328 while (true) { 329 lab12: 330 { 331 if (!(in_grouping(g_v, 97, 252))) { 332 break lab12; 333 } 334 break golab11; 335 } 336 if (cursor >= limit) { 337 break lab10; 338 } 339 cursor++; 340 } 341 break lab9; 342 } 343 cursor = v_6; 344 if (!(in_grouping(g_v, 97, 252))) { 345 break lab0; 346 } 347 if (cursor >= limit) { 348 break lab0; 349 } 350 cursor++; 351 } 352 } 353 I_pV = cursor; 354 } 355 cursor = v_1; 356 int v_8 = cursor; 357 lab13: 358 { 359 golab14: 360 while (true) { 361 lab15: 362 { 363 if (!(in_grouping(g_v, 97, 252))) { 364 break lab15; 365 } 366 break golab14; 367 } 368 if (cursor >= limit) { 369 break lab13; 370 } 371 cursor++; 372 } 373 golab16: 374 while (true) { 375 lab17: 376 { 377 if (!(out_grouping(g_v, 97, 252))) { 378 break lab17; 379 } 380 break golab16; 381 } 382 if (cursor >= limit) { 383 break lab13; 384 } 385 cursor++; 386 } 387 I_p1 = cursor; 388 golab18: 389 while (true) { 390 lab19: 391 { 392 if (!(in_grouping(g_v, 97, 252))) { 393 break lab19; 394 } 395 break golab18; 396 } 397 if (cursor >= limit) { 398 break lab13; 399 } 400 cursor++; 401 } 402 golab20: 403 while (true) { 404 lab21: 405 { 406 if (!(out_grouping(g_v, 97, 252))) { 407 break lab21; 408 } 409 break golab20; 410 } 411 if (cursor >= limit) { 412 break lab13; 413 } 414 cursor++; 415 } 416 I_p2 = cursor; 417 } 418 cursor = v_8; 419 return true; 420 } 421 r_postlude()422 private boolean r_postlude() { 423 int among_var; 424 while (true) { 425 int v_1 = cursor; 426 lab0: 427 { 428 bra = cursor; 429 among_var = find_among(a_0); 430 if (among_var == 0) { 431 break lab0; 432 } 433 ket = cursor; 434 switch (among_var) { 435 case 1: 436 slice_from("a"); 437 break; 438 case 2: 439 slice_from("e"); 440 break; 441 case 3: 442 slice_from("i"); 443 break; 444 case 4: 445 slice_from("o"); 446 break; 447 case 5: 448 slice_from("u"); 449 break; 450 case 6: 451 if (cursor >= limit) { 452 break lab0; 453 } 454 cursor++; 455 break; 456 } 457 continue; 458 } 459 cursor = v_1; 460 break; 461 } 462 return true; 463 } 464 r_RV()465 private boolean r_RV() { 466 if (!(I_pV <= cursor)) { 467 return false; 468 } 469 return true; 470 } 471 r_R1()472 private boolean r_R1() { 473 if (!(I_p1 <= cursor)) { 474 return false; 475 } 476 return true; 477 } 478 r_R2()479 private boolean r_R2() { 480 if (!(I_p2 <= cursor)) { 481 return false; 482 } 483 return true; 484 } 485 r_attached_pronoun()486 private boolean r_attached_pronoun() { 487 int among_var; 488 ket = cursor; 489 if (find_among_b(a_1) == 0) { 490 return false; 491 } 492 bra = cursor; 493 among_var = find_among_b(a_2); 494 if (among_var == 0) { 495 return false; 496 } 497 if (!r_RV()) { 498 return false; 499 } 500 switch (among_var) { 501 case 1: 502 bra = cursor; 503 slice_from("iendo"); 504 break; 505 case 2: 506 bra = cursor; 507 slice_from("ando"); 508 break; 509 case 3: 510 bra = cursor; 511 slice_from("ar"); 512 break; 513 case 4: 514 bra = cursor; 515 slice_from("er"); 516 break; 517 case 5: 518 bra = cursor; 519 slice_from("ir"); 520 break; 521 case 6: 522 slice_del(); 523 break; 524 case 7: 525 if (!(eq_s_b("u"))) { 526 return false; 527 } 528 slice_del(); 529 break; 530 } 531 return true; 532 } 533 r_standard_suffix()534 private boolean r_standard_suffix() { 535 int among_var; 536 ket = cursor; 537 among_var = find_among_b(a_6); 538 if (among_var == 0) { 539 return false; 540 } 541 bra = cursor; 542 switch (among_var) { 543 case 1: 544 if (!r_R2()) { 545 return false; 546 } 547 slice_del(); 548 break; 549 case 2: 550 if (!r_R2()) { 551 return false; 552 } 553 slice_del(); 554 int v_1 = limit - cursor; 555 lab0: 556 { 557 ket = cursor; 558 if (!(eq_s_b("ic"))) { 559 cursor = limit - v_1; 560 break lab0; 561 } 562 bra = cursor; 563 if (!r_R2()) { 564 cursor = limit - v_1; 565 break lab0; 566 } 567 slice_del(); 568 } 569 break; 570 case 3: 571 if (!r_R2()) { 572 return false; 573 } 574 slice_from("log"); 575 break; 576 case 4: 577 if (!r_R2()) { 578 return false; 579 } 580 slice_from("u"); 581 break; 582 case 5: 583 if (!r_R2()) { 584 return false; 585 } 586 slice_from("ente"); 587 break; 588 case 6: 589 if (!r_R1()) { 590 return false; 591 } 592 slice_del(); 593 int v_2 = limit - cursor; 594 lab1: 595 { 596 ket = cursor; 597 among_var = find_among_b(a_3); 598 if (among_var == 0) { 599 cursor = limit - v_2; 600 break lab1; 601 } 602 bra = cursor; 603 if (!r_R2()) { 604 cursor = limit - v_2; 605 break lab1; 606 } 607 slice_del(); 608 switch (among_var) { 609 case 1: 610 ket = cursor; 611 if (!(eq_s_b("at"))) { 612 cursor = limit - v_2; 613 break lab1; 614 } 615 bra = cursor; 616 if (!r_R2()) { 617 cursor = limit - v_2; 618 break lab1; 619 } 620 slice_del(); 621 break; 622 } 623 } 624 break; 625 case 7: 626 if (!r_R2()) { 627 return false; 628 } 629 slice_del(); 630 int v_3 = limit - cursor; 631 lab2: 632 { 633 ket = cursor; 634 if (find_among_b(a_4) == 0) { 635 cursor = limit - v_3; 636 break lab2; 637 } 638 bra = cursor; 639 if (!r_R2()) { 640 cursor = limit - v_3; 641 break lab2; 642 } 643 slice_del(); 644 } 645 break; 646 case 8: 647 if (!r_R2()) { 648 return false; 649 } 650 slice_del(); 651 int v_4 = limit - cursor; 652 lab3: 653 { 654 ket = cursor; 655 if (find_among_b(a_5) == 0) { 656 cursor = limit - v_4; 657 break lab3; 658 } 659 bra = cursor; 660 if (!r_R2()) { 661 cursor = limit - v_4; 662 break lab3; 663 } 664 slice_del(); 665 } 666 break; 667 case 9: 668 if (!r_R2()) { 669 return false; 670 } 671 slice_del(); 672 int v_5 = limit - cursor; 673 lab4: 674 { 675 ket = cursor; 676 if (!(eq_s_b("at"))) { 677 cursor = limit - v_5; 678 break lab4; 679 } 680 bra = cursor; 681 if (!r_R2()) { 682 cursor = limit - v_5; 683 break lab4; 684 } 685 slice_del(); 686 } 687 break; 688 } 689 return true; 690 } 691 r_y_verb_suffix()692 private boolean r_y_verb_suffix() { 693 if (cursor < I_pV) { 694 return false; 695 } 696 int v_2 = limit_backward; 697 limit_backward = I_pV; 698 ket = cursor; 699 if (find_among_b(a_7) == 0) { 700 limit_backward = v_2; 701 return false; 702 } 703 bra = cursor; 704 limit_backward = v_2; 705 if (!(eq_s_b("u"))) { 706 return false; 707 } 708 slice_del(); 709 return true; 710 } 711 r_verb_suffix()712 private boolean r_verb_suffix() { 713 int among_var; 714 if (cursor < I_pV) { 715 return false; 716 } 717 int v_2 = limit_backward; 718 limit_backward = I_pV; 719 ket = cursor; 720 among_var = find_among_b(a_8); 721 if (among_var == 0) { 722 limit_backward = v_2; 723 return false; 724 } 725 bra = cursor; 726 limit_backward = v_2; 727 switch (among_var) { 728 case 1: 729 int v_3 = limit - cursor; 730 lab0: 731 { 732 if (!(eq_s_b("u"))) { 733 cursor = limit - v_3; 734 break lab0; 735 } 736 int v_4 = limit - cursor; 737 if (!(eq_s_b("g"))) { 738 cursor = limit - v_3; 739 break lab0; 740 } 741 cursor = limit - v_4; 742 } 743 bra = cursor; 744 slice_del(); 745 break; 746 case 2: 747 slice_del(); 748 break; 749 } 750 return true; 751 } 752 r_residual_suffix()753 private boolean r_residual_suffix() { 754 int among_var; 755 ket = cursor; 756 among_var = find_among_b(a_9); 757 if (among_var == 0) { 758 return false; 759 } 760 bra = cursor; 761 switch (among_var) { 762 case 1: 763 if (!r_RV()) { 764 return false; 765 } 766 slice_del(); 767 break; 768 case 2: 769 if (!r_RV()) { 770 return false; 771 } 772 slice_del(); 773 int v_1 = limit - cursor; 774 lab0: 775 { 776 ket = cursor; 777 if (!(eq_s_b("u"))) { 778 cursor = limit - v_1; 779 break lab0; 780 } 781 bra = cursor; 782 int v_2 = limit - cursor; 783 if (!(eq_s_b("g"))) { 784 cursor = limit - v_1; 785 break lab0; 786 } 787 cursor = limit - v_2; 788 if (!r_RV()) { 789 cursor = limit - v_1; 790 break lab0; 791 } 792 slice_del(); 793 } 794 break; 795 } 796 return true; 797 } 798 799 @Override stem()800 public boolean stem() { 801 r_mark_regions(); 802 limit_backward = cursor; 803 cursor = limit; 804 int v_2 = limit - cursor; 805 r_attached_pronoun(); 806 cursor = limit - v_2; 807 int v_3 = limit - cursor; 808 lab0: 809 { 810 lab1: 811 { 812 int v_4 = limit - cursor; 813 lab2: 814 { 815 if (!r_standard_suffix()) { 816 break lab2; 817 } 818 break lab1; 819 } 820 cursor = limit - v_4; 821 lab3: 822 { 823 if (!r_y_verb_suffix()) { 824 break lab3; 825 } 826 break lab1; 827 } 828 cursor = limit - v_4; 829 if (!r_verb_suffix()) { 830 break lab0; 831 } 832 } 833 } 834 cursor = limit - v_3; 835 int v_5 = limit - cursor; 836 r_residual_suffix(); 837 cursor = limit - v_5; 838 cursor = limit_backward; 839 int v_6 = cursor; 840 r_postlude(); 841 cursor = v_6; 842 return true; 843 } 844 845 @Override equals(Object o)846 public boolean equals(Object o) { 847 return o instanceof SpanishStemmer; 848 } 849 850 @Override hashCode()851 public int hashCode() { 852 return SpanishStemmer.class.getName().hashCode(); 853 } 854 } 855