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 RomanianStemmer 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, 3), new Among("I", 0, 1), new Among("U", 0, 2) 21 }; 22 23 private static final Among a_1[] = { 24 new Among("ea", -1, 3), 25 new Among("a\u0163ia", -1, 7), 26 new Among("aua", -1, 2), 27 new Among("iua", -1, 4), 28 new Among("a\u0163ie", -1, 7), 29 new Among("ele", -1, 3), 30 new Among("ile", -1, 5), 31 new Among("iile", 6, 4), 32 new Among("iei", -1, 4), 33 new Among("atei", -1, 6), 34 new Among("ii", -1, 4), 35 new Among("ului", -1, 1), 36 new Among("ul", -1, 1), 37 new Among("elor", -1, 3), 38 new Among("ilor", -1, 4), 39 new Among("iilor", 14, 4) 40 }; 41 42 private static final Among a_2[] = { 43 new Among("icala", -1, 4), 44 new Among("iciva", -1, 4), 45 new Among("ativa", -1, 5), 46 new Among("itiva", -1, 6), 47 new Among("icale", -1, 4), 48 new Among("a\u0163iune", -1, 5), 49 new Among("i\u0163iune", -1, 6), 50 new Among("atoare", -1, 5), 51 new Among("itoare", -1, 6), 52 new Among("\u0103toare", -1, 5), 53 new Among("icitate", -1, 4), 54 new Among("abilitate", -1, 1), 55 new Among("ibilitate", -1, 2), 56 new Among("ivitate", -1, 3), 57 new Among("icive", -1, 4), 58 new Among("ative", -1, 5), 59 new Among("itive", -1, 6), 60 new Among("icali", -1, 4), 61 new Among("atori", -1, 5), 62 new Among("icatori", 18, 4), 63 new Among("itori", -1, 6), 64 new Among("\u0103tori", -1, 5), 65 new Among("icitati", -1, 4), 66 new Among("abilitati", -1, 1), 67 new Among("ivitati", -1, 3), 68 new Among("icivi", -1, 4), 69 new Among("ativi", -1, 5), 70 new Among("itivi", -1, 6), 71 new Among("icit\u0103i", -1, 4), 72 new Among("abilit\u0103i", -1, 1), 73 new Among("ivit\u0103i", -1, 3), 74 new Among("icit\u0103\u0163i", -1, 4), 75 new Among("abilit\u0103\u0163i", -1, 1), 76 new Among("ivit\u0103\u0163i", -1, 3), 77 new Among("ical", -1, 4), 78 new Among("ator", -1, 5), 79 new Among("icator", 35, 4), 80 new Among("itor", -1, 6), 81 new Among("\u0103tor", -1, 5), 82 new Among("iciv", -1, 4), 83 new Among("ativ", -1, 5), 84 new Among("itiv", -1, 6), 85 new Among("ical\u0103", -1, 4), 86 new Among("iciv\u0103", -1, 4), 87 new Among("ativ\u0103", -1, 5), 88 new Among("itiv\u0103", -1, 6) 89 }; 90 91 private static final Among a_3[] = { 92 new Among("ica", -1, 1), 93 new Among("abila", -1, 1), 94 new Among("ibila", -1, 1), 95 new Among("oasa", -1, 1), 96 new Among("ata", -1, 1), 97 new Among("ita", -1, 1), 98 new Among("anta", -1, 1), 99 new Among("ista", -1, 3), 100 new Among("uta", -1, 1), 101 new Among("iva", -1, 1), 102 new Among("ic", -1, 1), 103 new Among("ice", -1, 1), 104 new Among("abile", -1, 1), 105 new Among("ibile", -1, 1), 106 new Among("isme", -1, 3), 107 new Among("iune", -1, 2), 108 new Among("oase", -1, 1), 109 new Among("ate", -1, 1), 110 new Among("itate", 17, 1), 111 new Among("ite", -1, 1), 112 new Among("ante", -1, 1), 113 new Among("iste", -1, 3), 114 new Among("ute", -1, 1), 115 new Among("ive", -1, 1), 116 new Among("ici", -1, 1), 117 new Among("abili", -1, 1), 118 new Among("ibili", -1, 1), 119 new Among("iuni", -1, 2), 120 new Among("atori", -1, 1), 121 new Among("osi", -1, 1), 122 new Among("ati", -1, 1), 123 new Among("itati", 30, 1), 124 new Among("iti", -1, 1), 125 new Among("anti", -1, 1), 126 new Among("isti", -1, 3), 127 new Among("uti", -1, 1), 128 new Among("i\u015Fti", -1, 3), 129 new Among("ivi", -1, 1), 130 new Among("it\u0103i", -1, 1), 131 new Among("o\u015Fi", -1, 1), 132 new Among("it\u0103\u0163i", -1, 1), 133 new Among("abil", -1, 1), 134 new Among("ibil", -1, 1), 135 new Among("ism", -1, 3), 136 new Among("ator", -1, 1), 137 new Among("os", -1, 1), 138 new Among("at", -1, 1), 139 new Among("it", -1, 1), 140 new Among("ant", -1, 1), 141 new Among("ist", -1, 3), 142 new Among("ut", -1, 1), 143 new Among("iv", -1, 1), 144 new Among("ic\u0103", -1, 1), 145 new Among("abil\u0103", -1, 1), 146 new Among("ibil\u0103", -1, 1), 147 new Among("oas\u0103", -1, 1), 148 new Among("at\u0103", -1, 1), 149 new Among("it\u0103", -1, 1), 150 new Among("ant\u0103", -1, 1), 151 new Among("ist\u0103", -1, 3), 152 new Among("ut\u0103", -1, 1), 153 new Among("iv\u0103", -1, 1) 154 }; 155 156 private static final Among a_4[] = { 157 new Among("ea", -1, 1), 158 new Among("ia", -1, 1), 159 new Among("esc", -1, 1), 160 new Among("\u0103sc", -1, 1), 161 new Among("ind", -1, 1), 162 new Among("\u00E2nd", -1, 1), 163 new Among("are", -1, 1), 164 new Among("ere", -1, 1), 165 new Among("ire", -1, 1), 166 new Among("\u00E2re", -1, 1), 167 new Among("se", -1, 2), 168 new Among("ase", 10, 1), 169 new Among("sese", 10, 2), 170 new Among("ise", 10, 1), 171 new Among("use", 10, 1), 172 new Among("\u00E2se", 10, 1), 173 new Among("e\u015Fte", -1, 1), 174 new Among("\u0103\u015Fte", -1, 1), 175 new Among("eze", -1, 1), 176 new Among("ai", -1, 1), 177 new Among("eai", 19, 1), 178 new Among("iai", 19, 1), 179 new Among("sei", -1, 2), 180 new Among("e\u015Fti", -1, 1), 181 new Among("\u0103\u015Fti", -1, 1), 182 new Among("ui", -1, 1), 183 new Among("ezi", -1, 1), 184 new Among("\u00E2i", -1, 1), 185 new Among("a\u015Fi", -1, 1), 186 new Among("se\u015Fi", -1, 2), 187 new Among("ase\u015Fi", 29, 1), 188 new Among("sese\u015Fi", 29, 2), 189 new Among("ise\u015Fi", 29, 1), 190 new Among("use\u015Fi", 29, 1), 191 new Among("\u00E2se\u015Fi", 29, 1), 192 new Among("i\u015Fi", -1, 1), 193 new Among("u\u015Fi", -1, 1), 194 new Among("\u00E2\u015Fi", -1, 1), 195 new Among("a\u0163i", -1, 2), 196 new Among("ea\u0163i", 38, 1), 197 new Among("ia\u0163i", 38, 1), 198 new Among("e\u0163i", -1, 2), 199 new Among("i\u0163i", -1, 2), 200 new Among("\u00E2\u0163i", -1, 2), 201 new Among("ar\u0103\u0163i", -1, 1), 202 new Among("ser\u0103\u0163i", -1, 2), 203 new Among("aser\u0103\u0163i", 45, 1), 204 new Among("seser\u0103\u0163i", 45, 2), 205 new Among("iser\u0103\u0163i", 45, 1), 206 new Among("user\u0103\u0163i", 45, 1), 207 new Among("\u00E2ser\u0103\u0163i", 45, 1), 208 new Among("ir\u0103\u0163i", -1, 1), 209 new Among("ur\u0103\u0163i", -1, 1), 210 new Among("\u00E2r\u0103\u0163i", -1, 1), 211 new Among("am", -1, 1), 212 new Among("eam", 54, 1), 213 new Among("iam", 54, 1), 214 new Among("em", -1, 2), 215 new Among("asem", 57, 1), 216 new Among("sesem", 57, 2), 217 new Among("isem", 57, 1), 218 new Among("usem", 57, 1), 219 new Among("\u00E2sem", 57, 1), 220 new Among("im", -1, 2), 221 new Among("\u00E2m", -1, 2), 222 new Among("\u0103m", -1, 2), 223 new Among("ar\u0103m", 65, 1), 224 new Among("ser\u0103m", 65, 2), 225 new Among("aser\u0103m", 67, 1), 226 new Among("seser\u0103m", 67, 2), 227 new Among("iser\u0103m", 67, 1), 228 new Among("user\u0103m", 67, 1), 229 new Among("\u00E2ser\u0103m", 67, 1), 230 new Among("ir\u0103m", 65, 1), 231 new Among("ur\u0103m", 65, 1), 232 new Among("\u00E2r\u0103m", 65, 1), 233 new Among("au", -1, 1), 234 new Among("eau", 76, 1), 235 new Among("iau", 76, 1), 236 new Among("indu", -1, 1), 237 new Among("\u00E2ndu", -1, 1), 238 new Among("ez", -1, 1), 239 new Among("easc\u0103", -1, 1), 240 new Among("ar\u0103", -1, 1), 241 new Among("ser\u0103", -1, 2), 242 new Among("aser\u0103", 84, 1), 243 new Among("seser\u0103", 84, 2), 244 new Among("iser\u0103", 84, 1), 245 new Among("user\u0103", 84, 1), 246 new Among("\u00E2ser\u0103", 84, 1), 247 new Among("ir\u0103", -1, 1), 248 new Among("ur\u0103", -1, 1), 249 new Among("\u00E2r\u0103", -1, 1), 250 new Among("eaz\u0103", -1, 1) 251 }; 252 253 private static final Among a_5[] = { 254 new Among("a", -1, 1), 255 new Among("e", -1, 1), 256 new Among("ie", 1, 1), 257 new Among("i", -1, 1), 258 new Among("\u0103", -1, 1) 259 }; 260 261 private static final char g_v[] = { 262 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 32, 0, 0, 4 263 }; 264 265 private boolean B_standard_suffix_removed; 266 private int I_p2; 267 private int I_p1; 268 private int I_pV; 269 r_prelude()270 private boolean r_prelude() { 271 while (true) { 272 int v_1 = cursor; 273 lab0: 274 { 275 golab1: 276 while (true) { 277 int v_2 = cursor; 278 lab2: 279 { 280 if (!(in_grouping(g_v, 97, 259))) { 281 break lab2; 282 } 283 bra = cursor; 284 lab3: 285 { 286 int v_3 = cursor; 287 lab4: 288 { 289 if (!(eq_s("u"))) { 290 break lab4; 291 } 292 ket = cursor; 293 if (!(in_grouping(g_v, 97, 259))) { 294 break lab4; 295 } 296 slice_from("U"); 297 break lab3; 298 } 299 cursor = v_3; 300 if (!(eq_s("i"))) { 301 break lab2; 302 } 303 ket = cursor; 304 if (!(in_grouping(g_v, 97, 259))) { 305 break lab2; 306 } 307 slice_from("I"); 308 } 309 cursor = v_2; 310 break golab1; 311 } 312 cursor = v_2; 313 if (cursor >= limit) { 314 break lab0; 315 } 316 cursor++; 317 } 318 continue; 319 } 320 cursor = v_1; 321 break; 322 } 323 return true; 324 } 325 r_mark_regions()326 private boolean r_mark_regions() { 327 I_pV = limit; 328 I_p1 = limit; 329 I_p2 = limit; 330 int v_1 = cursor; 331 lab0: 332 { 333 lab1: 334 { 335 int v_2 = cursor; 336 lab2: 337 { 338 if (!(in_grouping(g_v, 97, 259))) { 339 break lab2; 340 } 341 lab3: 342 { 343 int v_3 = cursor; 344 lab4: 345 { 346 if (!(out_grouping(g_v, 97, 259))) { 347 break lab4; 348 } 349 golab5: 350 while (true) { 351 lab6: 352 { 353 if (!(in_grouping(g_v, 97, 259))) { 354 break lab6; 355 } 356 break golab5; 357 } 358 if (cursor >= limit) { 359 break lab4; 360 } 361 cursor++; 362 } 363 break lab3; 364 } 365 cursor = v_3; 366 if (!(in_grouping(g_v, 97, 259))) { 367 break lab2; 368 } 369 golab7: 370 while (true) { 371 lab8: 372 { 373 if (!(out_grouping(g_v, 97, 259))) { 374 break lab8; 375 } 376 break golab7; 377 } 378 if (cursor >= limit) { 379 break lab2; 380 } 381 cursor++; 382 } 383 } 384 break lab1; 385 } 386 cursor = v_2; 387 if (!(out_grouping(g_v, 97, 259))) { 388 break lab0; 389 } 390 lab9: 391 { 392 int v_6 = cursor; 393 lab10: 394 { 395 if (!(out_grouping(g_v, 97, 259))) { 396 break lab10; 397 } 398 golab11: 399 while (true) { 400 lab12: 401 { 402 if (!(in_grouping(g_v, 97, 259))) { 403 break lab12; 404 } 405 break golab11; 406 } 407 if (cursor >= limit) { 408 break lab10; 409 } 410 cursor++; 411 } 412 break lab9; 413 } 414 cursor = v_6; 415 if (!(in_grouping(g_v, 97, 259))) { 416 break lab0; 417 } 418 if (cursor >= limit) { 419 break lab0; 420 } 421 cursor++; 422 } 423 } 424 I_pV = cursor; 425 } 426 cursor = v_1; 427 int v_8 = cursor; 428 lab13: 429 { 430 golab14: 431 while (true) { 432 lab15: 433 { 434 if (!(in_grouping(g_v, 97, 259))) { 435 break lab15; 436 } 437 break golab14; 438 } 439 if (cursor >= limit) { 440 break lab13; 441 } 442 cursor++; 443 } 444 golab16: 445 while (true) { 446 lab17: 447 { 448 if (!(out_grouping(g_v, 97, 259))) { 449 break lab17; 450 } 451 break golab16; 452 } 453 if (cursor >= limit) { 454 break lab13; 455 } 456 cursor++; 457 } 458 I_p1 = cursor; 459 golab18: 460 while (true) { 461 lab19: 462 { 463 if (!(in_grouping(g_v, 97, 259))) { 464 break lab19; 465 } 466 break golab18; 467 } 468 if (cursor >= limit) { 469 break lab13; 470 } 471 cursor++; 472 } 473 golab20: 474 while (true) { 475 lab21: 476 { 477 if (!(out_grouping(g_v, 97, 259))) { 478 break lab21; 479 } 480 break golab20; 481 } 482 if (cursor >= limit) { 483 break lab13; 484 } 485 cursor++; 486 } 487 I_p2 = cursor; 488 } 489 cursor = v_8; 490 return true; 491 } 492 r_postlude()493 private boolean r_postlude() { 494 int among_var; 495 while (true) { 496 int v_1 = cursor; 497 lab0: 498 { 499 bra = cursor; 500 among_var = find_among(a_0); 501 if (among_var == 0) { 502 break lab0; 503 } 504 ket = cursor; 505 switch (among_var) { 506 case 1: 507 slice_from("i"); 508 break; 509 case 2: 510 slice_from("u"); 511 break; 512 case 3: 513 if (cursor >= limit) { 514 break lab0; 515 } 516 cursor++; 517 break; 518 } 519 continue; 520 } 521 cursor = v_1; 522 break; 523 } 524 return true; 525 } 526 r_RV()527 private boolean r_RV() { 528 if (!(I_pV <= cursor)) { 529 return false; 530 } 531 return true; 532 } 533 r_R1()534 private boolean r_R1() { 535 if (!(I_p1 <= cursor)) { 536 return false; 537 } 538 return true; 539 } 540 r_R2()541 private boolean r_R2() { 542 if (!(I_p2 <= cursor)) { 543 return false; 544 } 545 return true; 546 } 547 r_step_0()548 private boolean r_step_0() { 549 int among_var; 550 ket = cursor; 551 among_var = find_among_b(a_1); 552 if (among_var == 0) { 553 return false; 554 } 555 bra = cursor; 556 if (!r_R1()) { 557 return false; 558 } 559 switch (among_var) { 560 case 1: 561 slice_del(); 562 break; 563 case 2: 564 slice_from("a"); 565 break; 566 case 3: 567 slice_from("e"); 568 break; 569 case 4: 570 slice_from("i"); 571 break; 572 case 5: 573 { 574 int v_1 = limit - cursor; 575 lab0: 576 { 577 if (!(eq_s_b("ab"))) { 578 break lab0; 579 } 580 return false; 581 } 582 cursor = limit - v_1; 583 } 584 slice_from("i"); 585 break; 586 case 6: 587 slice_from("at"); 588 break; 589 case 7: 590 slice_from("a\u0163i"); 591 break; 592 } 593 return true; 594 } 595 r_combo_suffix()596 private boolean r_combo_suffix() { 597 int among_var; 598 int v_1 = limit - cursor; 599 ket = cursor; 600 among_var = find_among_b(a_2); 601 if (among_var == 0) { 602 return false; 603 } 604 bra = cursor; 605 if (!r_R1()) { 606 return false; 607 } 608 switch (among_var) { 609 case 1: 610 slice_from("abil"); 611 break; 612 case 2: 613 slice_from("ibil"); 614 break; 615 case 3: 616 slice_from("iv"); 617 break; 618 case 4: 619 slice_from("ic"); 620 break; 621 case 5: 622 slice_from("at"); 623 break; 624 case 6: 625 slice_from("it"); 626 break; 627 } 628 B_standard_suffix_removed = true; 629 cursor = limit - v_1; 630 return true; 631 } 632 r_standard_suffix()633 private boolean r_standard_suffix() { 634 int among_var; 635 B_standard_suffix_removed = false; 636 while (true) { 637 int v_1 = limit - cursor; 638 lab0: 639 { 640 if (!r_combo_suffix()) { 641 break lab0; 642 } 643 continue; 644 } 645 cursor = limit - v_1; 646 break; 647 } 648 ket = cursor; 649 among_var = find_among_b(a_3); 650 if (among_var == 0) { 651 return false; 652 } 653 bra = cursor; 654 if (!r_R2()) { 655 return false; 656 } 657 switch (among_var) { 658 case 1: 659 slice_del(); 660 break; 661 case 2: 662 if (!(eq_s_b("\u0163"))) { 663 return false; 664 } 665 bra = cursor; 666 slice_from("t"); 667 break; 668 case 3: 669 slice_from("ist"); 670 break; 671 } 672 B_standard_suffix_removed = true; 673 return true; 674 } 675 r_verb_suffix()676 private boolean r_verb_suffix() { 677 int among_var; 678 if (cursor < I_pV) { 679 return false; 680 } 681 int v_2 = limit_backward; 682 limit_backward = I_pV; 683 ket = cursor; 684 among_var = find_among_b(a_4); 685 if (among_var == 0) { 686 limit_backward = v_2; 687 return false; 688 } 689 bra = cursor; 690 switch (among_var) { 691 case 1: 692 lab0: 693 { 694 int v_3 = limit - cursor; 695 lab1: 696 { 697 if (!(out_grouping_b(g_v, 97, 259))) { 698 break lab1; 699 } 700 break lab0; 701 } 702 cursor = limit - v_3; 703 if (!(eq_s_b("u"))) { 704 limit_backward = v_2; 705 return false; 706 } 707 } 708 slice_del(); 709 break; 710 case 2: 711 slice_del(); 712 break; 713 } 714 limit_backward = v_2; 715 return true; 716 } 717 r_vowel_suffix()718 private boolean r_vowel_suffix() { 719 ket = cursor; 720 if (find_among_b(a_5) == 0) { 721 return false; 722 } 723 bra = cursor; 724 if (!r_RV()) { 725 return false; 726 } 727 slice_del(); 728 return true; 729 } 730 731 @Override stem()732 public boolean stem() { 733 int v_1 = cursor; 734 r_prelude(); 735 cursor = v_1; 736 r_mark_regions(); 737 limit_backward = cursor; 738 cursor = limit; 739 int v_3 = limit - cursor; 740 r_step_0(); 741 cursor = limit - v_3; 742 int v_4 = limit - cursor; 743 r_standard_suffix(); 744 cursor = limit - v_4; 745 int v_5 = limit - cursor; 746 lab0: 747 { 748 lab1: 749 { 750 int v_6 = limit - cursor; 751 lab2: 752 { 753 if (!(B_standard_suffix_removed)) { 754 break lab2; 755 } 756 break lab1; 757 } 758 cursor = limit - v_6; 759 if (!r_verb_suffix()) { 760 break lab0; 761 } 762 } 763 } 764 cursor = limit - v_5; 765 int v_7 = limit - cursor; 766 r_vowel_suffix(); 767 cursor = limit - v_7; 768 cursor = limit_backward; 769 int v_8 = cursor; 770 r_postlude(); 771 cursor = v_8; 772 return true; 773 } 774 775 @Override equals(Object o)776 public boolean equals(Object o) { 777 return o instanceof RomanianStemmer; 778 } 779 780 @Override hashCode()781 public int hashCode() { 782 return RomanianStemmer.class.getName().hashCode(); 783 } 784 } 785