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 HungarianStemmer 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("cs", -1, -1), 21 new Among("dzs", -1, -1), 22 new Among("gy", -1, -1), 23 new Among("ly", -1, -1), 24 new Among("ny", -1, -1), 25 new Among("sz", -1, -1), 26 new Among("ty", -1, -1), 27 new Among("zs", -1, -1) 28 }; 29 30 private static final Among a_1[] = {new Among("\u00E1", -1, 1), new Among("\u00E9", -1, 2)}; 31 32 private static final Among a_2[] = { 33 new Among("bb", -1, -1), 34 new Among("cc", -1, -1), 35 new Among("dd", -1, -1), 36 new Among("ff", -1, -1), 37 new Among("gg", -1, -1), 38 new Among("jj", -1, -1), 39 new Among("kk", -1, -1), 40 new Among("ll", -1, -1), 41 new Among("mm", -1, -1), 42 new Among("nn", -1, -1), 43 new Among("pp", -1, -1), 44 new Among("rr", -1, -1), 45 new Among("ccs", -1, -1), 46 new Among("ss", -1, -1), 47 new Among("zzs", -1, -1), 48 new Among("tt", -1, -1), 49 new Among("vv", -1, -1), 50 new Among("ggy", -1, -1), 51 new Among("lly", -1, -1), 52 new Among("nny", -1, -1), 53 new Among("tty", -1, -1), 54 new Among("ssz", -1, -1), 55 new Among("zz", -1, -1) 56 }; 57 58 private static final Among a_3[] = {new Among("al", -1, 1), new Among("el", -1, 1)}; 59 60 private static final Among a_4[] = { 61 new Among("ba", -1, -1), 62 new Among("ra", -1, -1), 63 new Among("be", -1, -1), 64 new Among("re", -1, -1), 65 new Among("ig", -1, -1), 66 new Among("nak", -1, -1), 67 new Among("nek", -1, -1), 68 new Among("val", -1, -1), 69 new Among("vel", -1, -1), 70 new Among("ul", -1, -1), 71 new Among("n\u00E1l", -1, -1), 72 new Among("n\u00E9l", -1, -1), 73 new Among("b\u00F3l", -1, -1), 74 new Among("r\u00F3l", -1, -1), 75 new Among("t\u00F3l", -1, -1), 76 new Among("\u00FCl", -1, -1), 77 new Among("b\u0151l", -1, -1), 78 new Among("r\u0151l", -1, -1), 79 new Among("t\u0151l", -1, -1), 80 new Among("n", -1, -1), 81 new Among("an", 19, -1), 82 new Among("ban", 20, -1), 83 new Among("en", 19, -1), 84 new Among("ben", 22, -1), 85 new Among("k\u00E9ppen", 22, -1), 86 new Among("on", 19, -1), 87 new Among("\u00F6n", 19, -1), 88 new Among("k\u00E9pp", -1, -1), 89 new Among("kor", -1, -1), 90 new Among("t", -1, -1), 91 new Among("at", 29, -1), 92 new Among("et", 29, -1), 93 new Among("k\u00E9nt", 29, -1), 94 new Among("ank\u00E9nt", 32, -1), 95 new Among("enk\u00E9nt", 32, -1), 96 new Among("onk\u00E9nt", 32, -1), 97 new Among("ot", 29, -1), 98 new Among("\u00E9rt", 29, -1), 99 new Among("\u00F6t", 29, -1), 100 new Among("hez", -1, -1), 101 new Among("hoz", -1, -1), 102 new Among("h\u00F6z", -1, -1), 103 new Among("v\u00E1", -1, -1), 104 new Among("v\u00E9", -1, -1) 105 }; 106 107 private static final Among a_5[] = { 108 new Among("\u00E1n", -1, 2), new Among("\u00E9n", -1, 1), new Among("\u00E1nk\u00E9nt", -1, 2) 109 }; 110 111 private static final Among a_6[] = { 112 new Among("stul", -1, 1), 113 new Among("astul", 0, 1), 114 new Among("\u00E1stul", 0, 2), 115 new Among("st\u00FCl", -1, 1), 116 new Among("est\u00FCl", 3, 1), 117 new Among("\u00E9st\u00FCl", 3, 3) 118 }; 119 120 private static final Among a_7[] = {new Among("\u00E1", -1, 1), new Among("\u00E9", -1, 1)}; 121 122 private static final Among a_8[] = { 123 new Among("k", -1, 3), 124 new Among("ak", 0, 3), 125 new Among("ek", 0, 3), 126 new Among("ok", 0, 3), 127 new Among("\u00E1k", 0, 1), 128 new Among("\u00E9k", 0, 2), 129 new Among("\u00F6k", 0, 3) 130 }; 131 132 private static final Among a_9[] = { 133 new Among("\u00E9i", -1, 1), 134 new Among("\u00E1\u00E9i", 0, 3), 135 new Among("\u00E9\u00E9i", 0, 2), 136 new Among("\u00E9", -1, 1), 137 new Among("k\u00E9", 3, 1), 138 new Among("ak\u00E9", 4, 1), 139 new Among("ek\u00E9", 4, 1), 140 new Among("ok\u00E9", 4, 1), 141 new Among("\u00E1k\u00E9", 4, 3), 142 new Among("\u00E9k\u00E9", 4, 2), 143 new Among("\u00F6k\u00E9", 4, 1), 144 new Among("\u00E9\u00E9", 3, 2) 145 }; 146 147 private static final Among a_10[] = { 148 new Among("a", -1, 1), 149 new Among("ja", 0, 1), 150 new Among("d", -1, 1), 151 new Among("ad", 2, 1), 152 new Among("ed", 2, 1), 153 new Among("od", 2, 1), 154 new Among("\u00E1d", 2, 2), 155 new Among("\u00E9d", 2, 3), 156 new Among("\u00F6d", 2, 1), 157 new Among("e", -1, 1), 158 new Among("je", 9, 1), 159 new Among("nk", -1, 1), 160 new Among("unk", 11, 1), 161 new Among("\u00E1nk", 11, 2), 162 new Among("\u00E9nk", 11, 3), 163 new Among("\u00FCnk", 11, 1), 164 new Among("uk", -1, 1), 165 new Among("juk", 16, 1), 166 new Among("\u00E1juk", 17, 2), 167 new Among("\u00FCk", -1, 1), 168 new Among("j\u00FCk", 19, 1), 169 new Among("\u00E9j\u00FCk", 20, 3), 170 new Among("m", -1, 1), 171 new Among("am", 22, 1), 172 new Among("em", 22, 1), 173 new Among("om", 22, 1), 174 new Among("\u00E1m", 22, 2), 175 new Among("\u00E9m", 22, 3), 176 new Among("o", -1, 1), 177 new Among("\u00E1", -1, 2), 178 new Among("\u00E9", -1, 3) 179 }; 180 181 private static final Among a_11[] = { 182 new Among("id", -1, 1), 183 new Among("aid", 0, 1), 184 new Among("jaid", 1, 1), 185 new Among("eid", 0, 1), 186 new Among("jeid", 3, 1), 187 new Among("\u00E1id", 0, 2), 188 new Among("\u00E9id", 0, 3), 189 new Among("i", -1, 1), 190 new Among("ai", 7, 1), 191 new Among("jai", 8, 1), 192 new Among("ei", 7, 1), 193 new Among("jei", 10, 1), 194 new Among("\u00E1i", 7, 2), 195 new Among("\u00E9i", 7, 3), 196 new Among("itek", -1, 1), 197 new Among("eitek", 14, 1), 198 new Among("jeitek", 15, 1), 199 new Among("\u00E9itek", 14, 3), 200 new Among("ik", -1, 1), 201 new Among("aik", 18, 1), 202 new Among("jaik", 19, 1), 203 new Among("eik", 18, 1), 204 new Among("jeik", 21, 1), 205 new Among("\u00E1ik", 18, 2), 206 new Among("\u00E9ik", 18, 3), 207 new Among("ink", -1, 1), 208 new Among("aink", 25, 1), 209 new Among("jaink", 26, 1), 210 new Among("eink", 25, 1), 211 new Among("jeink", 28, 1), 212 new Among("\u00E1ink", 25, 2), 213 new Among("\u00E9ink", 25, 3), 214 new Among("aitok", -1, 1), 215 new Among("jaitok", 32, 1), 216 new Among("\u00E1itok", -1, 2), 217 new Among("im", -1, 1), 218 new Among("aim", 35, 1), 219 new Among("jaim", 36, 1), 220 new Among("eim", 35, 1), 221 new Among("jeim", 38, 1), 222 new Among("\u00E1im", 35, 2), 223 new Among("\u00E9im", 35, 3) 224 }; 225 226 private static final char g_v[] = { 227 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 36, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228 1, 0, 0, 0, 1 229 }; 230 231 private int I_p1; 232 r_mark_regions()233 private boolean r_mark_regions() { 234 I_p1 = limit; 235 lab0: 236 { 237 int v_1 = cursor; 238 lab1: 239 { 240 if (!(in_grouping(g_v, 97, 369))) { 241 break lab1; 242 } 243 golab2: 244 while (true) { 245 int v_2 = cursor; 246 lab3: 247 { 248 if (!(out_grouping(g_v, 97, 369))) { 249 break lab3; 250 } 251 cursor = v_2; 252 break golab2; 253 } 254 cursor = v_2; 255 if (cursor >= limit) { 256 break lab1; 257 } 258 cursor++; 259 } 260 lab4: 261 { 262 int v_3 = cursor; 263 lab5: 264 { 265 if (find_among(a_0) == 0) { 266 break lab5; 267 } 268 break lab4; 269 } 270 cursor = v_3; 271 if (cursor >= limit) { 272 break lab1; 273 } 274 cursor++; 275 } 276 I_p1 = cursor; 277 break lab0; 278 } 279 cursor = v_1; 280 if (!(out_grouping(g_v, 97, 369))) { 281 return false; 282 } 283 golab6: 284 while (true) { 285 lab7: 286 { 287 if (!(in_grouping(g_v, 97, 369))) { 288 break lab7; 289 } 290 break golab6; 291 } 292 if (cursor >= limit) { 293 return false; 294 } 295 cursor++; 296 } 297 I_p1 = cursor; 298 } 299 return true; 300 } 301 r_R1()302 private boolean r_R1() { 303 if (!(I_p1 <= cursor)) { 304 return false; 305 } 306 return true; 307 } 308 r_v_ending()309 private boolean r_v_ending() { 310 int among_var; 311 ket = cursor; 312 among_var = find_among_b(a_1); 313 if (among_var == 0) { 314 return false; 315 } 316 bra = cursor; 317 if (!r_R1()) { 318 return false; 319 } 320 switch (among_var) { 321 case 1: 322 slice_from("a"); 323 break; 324 case 2: 325 slice_from("e"); 326 break; 327 } 328 return true; 329 } 330 r_double()331 private boolean r_double() { 332 int v_1 = limit - cursor; 333 if (find_among_b(a_2) == 0) { 334 return false; 335 } 336 cursor = limit - v_1; 337 return true; 338 } 339 r_undouble()340 private boolean r_undouble() { 341 if (cursor <= limit_backward) { 342 return false; 343 } 344 cursor--; 345 ket = cursor; 346 { 347 int c = cursor - 1; 348 if (limit_backward > c || c > limit) { 349 return false; 350 } 351 cursor = c; 352 } 353 bra = cursor; 354 slice_del(); 355 return true; 356 } 357 r_instrum()358 private boolean r_instrum() { 359 ket = cursor; 360 if (find_among_b(a_3) == 0) { 361 return false; 362 } 363 bra = cursor; 364 if (!r_R1()) { 365 return false; 366 } 367 if (!r_double()) { 368 return false; 369 } 370 slice_del(); 371 if (!r_undouble()) { 372 return false; 373 } 374 return true; 375 } 376 r_case()377 private boolean r_case() { 378 ket = cursor; 379 if (find_among_b(a_4) == 0) { 380 return false; 381 } 382 bra = cursor; 383 if (!r_R1()) { 384 return false; 385 } 386 slice_del(); 387 if (!r_v_ending()) { 388 return false; 389 } 390 return true; 391 } 392 r_case_special()393 private boolean r_case_special() { 394 int among_var; 395 ket = cursor; 396 among_var = find_among_b(a_5); 397 if (among_var == 0) { 398 return false; 399 } 400 bra = cursor; 401 if (!r_R1()) { 402 return false; 403 } 404 switch (among_var) { 405 case 1: 406 slice_from("e"); 407 break; 408 case 2: 409 slice_from("a"); 410 break; 411 } 412 return true; 413 } 414 r_case_other()415 private boolean r_case_other() { 416 int among_var; 417 ket = cursor; 418 among_var = find_among_b(a_6); 419 if (among_var == 0) { 420 return false; 421 } 422 bra = cursor; 423 if (!r_R1()) { 424 return false; 425 } 426 switch (among_var) { 427 case 1: 428 slice_del(); 429 break; 430 case 2: 431 slice_from("a"); 432 break; 433 case 3: 434 slice_from("e"); 435 break; 436 } 437 return true; 438 } 439 r_factive()440 private boolean r_factive() { 441 ket = cursor; 442 if (find_among_b(a_7) == 0) { 443 return false; 444 } 445 bra = cursor; 446 if (!r_R1()) { 447 return false; 448 } 449 if (!r_double()) { 450 return false; 451 } 452 slice_del(); 453 if (!r_undouble()) { 454 return false; 455 } 456 return true; 457 } 458 r_plural()459 private boolean r_plural() { 460 int among_var; 461 ket = cursor; 462 among_var = find_among_b(a_8); 463 if (among_var == 0) { 464 return false; 465 } 466 bra = cursor; 467 if (!r_R1()) { 468 return false; 469 } 470 switch (among_var) { 471 case 1: 472 slice_from("a"); 473 break; 474 case 2: 475 slice_from("e"); 476 break; 477 case 3: 478 slice_del(); 479 break; 480 } 481 return true; 482 } 483 r_owned()484 private boolean r_owned() { 485 int among_var; 486 ket = cursor; 487 among_var = find_among_b(a_9); 488 if (among_var == 0) { 489 return false; 490 } 491 bra = cursor; 492 if (!r_R1()) { 493 return false; 494 } 495 switch (among_var) { 496 case 1: 497 slice_del(); 498 break; 499 case 2: 500 slice_from("e"); 501 break; 502 case 3: 503 slice_from("a"); 504 break; 505 } 506 return true; 507 } 508 r_sing_owner()509 private boolean r_sing_owner() { 510 int among_var; 511 ket = cursor; 512 among_var = find_among_b(a_10); 513 if (among_var == 0) { 514 return false; 515 } 516 bra = cursor; 517 if (!r_R1()) { 518 return false; 519 } 520 switch (among_var) { 521 case 1: 522 slice_del(); 523 break; 524 case 2: 525 slice_from("a"); 526 break; 527 case 3: 528 slice_from("e"); 529 break; 530 } 531 return true; 532 } 533 r_plur_owner()534 private boolean r_plur_owner() { 535 int among_var; 536 ket = cursor; 537 among_var = find_among_b(a_11); 538 if (among_var == 0) { 539 return false; 540 } 541 bra = cursor; 542 if (!r_R1()) { 543 return false; 544 } 545 switch (among_var) { 546 case 1: 547 slice_del(); 548 break; 549 case 2: 550 slice_from("a"); 551 break; 552 case 3: 553 slice_from("e"); 554 break; 555 } 556 return true; 557 } 558 559 @Override stem()560 public boolean stem() { 561 int v_1 = cursor; 562 r_mark_regions(); 563 cursor = v_1; 564 limit_backward = cursor; 565 cursor = limit; 566 int v_2 = limit - cursor; 567 r_instrum(); 568 cursor = limit - v_2; 569 int v_3 = limit - cursor; 570 r_case(); 571 cursor = limit - v_3; 572 int v_4 = limit - cursor; 573 r_case_special(); 574 cursor = limit - v_4; 575 int v_5 = limit - cursor; 576 r_case_other(); 577 cursor = limit - v_5; 578 int v_6 = limit - cursor; 579 r_factive(); 580 cursor = limit - v_6; 581 int v_7 = limit - cursor; 582 r_owned(); 583 cursor = limit - v_7; 584 int v_8 = limit - cursor; 585 r_sing_owner(); 586 cursor = limit - v_8; 587 int v_9 = limit - cursor; 588 r_plur_owner(); 589 cursor = limit - v_9; 590 int v_10 = limit - cursor; 591 r_plural(); 592 cursor = limit - v_10; 593 cursor = limit_backward; 594 return true; 595 } 596 597 @Override equals(Object o)598 public boolean equals(Object o) { 599 return o instanceof HungarianStemmer; 600 } 601 602 @Override hashCode()603 public int hashCode() { 604 return HungarianStemmer.class.getName().hashCode(); 605 } 606 } 607