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 IrishStemmer 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("b'", -1, 1), 21 new Among("bh", -1, 4), 22 new Among("bhf", 1, 2), 23 new Among("bp", -1, 8), 24 new Among("ch", -1, 5), 25 new Among("d'", -1, 1), 26 new Among("d'fh", 5, 2), 27 new Among("dh", -1, 6), 28 new Among("dt", -1, 9), 29 new Among("fh", -1, 2), 30 new Among("gc", -1, 5), 31 new Among("gh", -1, 7), 32 new Among("h-", -1, 1), 33 new Among("m'", -1, 1), 34 new Among("mb", -1, 4), 35 new Among("mh", -1, 10), 36 new Among("n-", -1, 1), 37 new Among("nd", -1, 6), 38 new Among("ng", -1, 7), 39 new Among("ph", -1, 8), 40 new Among("sh", -1, 3), 41 new Among("t-", -1, 1), 42 new Among("th", -1, 9), 43 new Among("ts", -1, 3) 44 }; 45 46 private static final Among a_1[] = { 47 new Among("\u00EDochta", -1, 1), 48 new Among("a\u00EDochta", 0, 1), 49 new Among("ire", -1, 2), 50 new Among("aire", 2, 2), 51 new Among("abh", -1, 1), 52 new Among("eabh", 4, 1), 53 new Among("ibh", -1, 1), 54 new Among("aibh", 6, 1), 55 new Among("amh", -1, 1), 56 new Among("eamh", 8, 1), 57 new Among("imh", -1, 1), 58 new Among("aimh", 10, 1), 59 new Among("\u00EDocht", -1, 1), 60 new Among("a\u00EDocht", 12, 1), 61 new Among("ir\u00ED", -1, 2), 62 new Among("air\u00ED", 14, 2) 63 }; 64 65 private static final Among a_2[] = { 66 new Among("\u00F3ideacha", -1, 6), 67 new Among("patacha", -1, 5), 68 new Among("achta", -1, 1), 69 new Among("arcachta", 2, 2), 70 new Among("eachta", 2, 1), 71 new Among("grafa\u00EDochta", -1, 4), 72 new Among("paite", -1, 5), 73 new Among("ach", -1, 1), 74 new Among("each", 7, 1), 75 new Among("\u00F3ideach", 8, 6), 76 new Among("gineach", 8, 3), 77 new Among("patach", 7, 5), 78 new Among("grafa\u00EDoch", -1, 4), 79 new Among("pataigh", -1, 5), 80 new Among("\u00F3idigh", -1, 6), 81 new Among("acht\u00FAil", -1, 1), 82 new Among("eacht\u00FAil", 15, 1), 83 new Among("gineas", -1, 3), 84 new Among("ginis", -1, 3), 85 new Among("acht", -1, 1), 86 new Among("arcacht", 19, 2), 87 new Among("eacht", 19, 1), 88 new Among("grafa\u00EDocht", -1, 4), 89 new Among("arcachta\u00ED", -1, 2), 90 new Among("grafa\u00EDochta\u00ED", -1, 4) 91 }; 92 93 private static final Among a_3[] = { 94 new Among("imid", -1, 1), 95 new Among("aimid", 0, 1), 96 new Among("\u00EDmid", -1, 1), 97 new Among("a\u00EDmid", 2, 1), 98 new Among("adh", -1, 2), 99 new Among("eadh", 4, 2), 100 new Among("faidh", -1, 1), 101 new Among("fidh", -1, 1), 102 new Among("\u00E1il", -1, 2), 103 new Among("ain", -1, 2), 104 new Among("tear", -1, 2), 105 new Among("tar", -1, 2) 106 }; 107 108 private static final char g_v[] = { 109 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 2 110 }; 111 112 private int I_p2; 113 private int I_p1; 114 private int I_pV; 115 r_mark_regions()116 private boolean r_mark_regions() { 117 I_pV = limit; 118 I_p1 = limit; 119 I_p2 = limit; 120 int v_1 = cursor; 121 lab0: 122 { 123 golab1: 124 while (true) { 125 lab2: 126 { 127 if (!(in_grouping(g_v, 97, 250))) { 128 break lab2; 129 } 130 break golab1; 131 } 132 if (cursor >= limit) { 133 break lab0; 134 } 135 cursor++; 136 } 137 I_pV = cursor; 138 } 139 cursor = v_1; 140 int v_3 = cursor; 141 lab3: 142 { 143 golab4: 144 while (true) { 145 lab5: 146 { 147 if (!(in_grouping(g_v, 97, 250))) { 148 break lab5; 149 } 150 break golab4; 151 } 152 if (cursor >= limit) { 153 break lab3; 154 } 155 cursor++; 156 } 157 golab6: 158 while (true) { 159 lab7: 160 { 161 if (!(out_grouping(g_v, 97, 250))) { 162 break lab7; 163 } 164 break golab6; 165 } 166 if (cursor >= limit) { 167 break lab3; 168 } 169 cursor++; 170 } 171 I_p1 = cursor; 172 golab8: 173 while (true) { 174 lab9: 175 { 176 if (!(in_grouping(g_v, 97, 250))) { 177 break lab9; 178 } 179 break golab8; 180 } 181 if (cursor >= limit) { 182 break lab3; 183 } 184 cursor++; 185 } 186 golab10: 187 while (true) { 188 lab11: 189 { 190 if (!(out_grouping(g_v, 97, 250))) { 191 break lab11; 192 } 193 break golab10; 194 } 195 if (cursor >= limit) { 196 break lab3; 197 } 198 cursor++; 199 } 200 I_p2 = cursor; 201 } 202 cursor = v_3; 203 return true; 204 } 205 r_initial_morph()206 private boolean r_initial_morph() { 207 int among_var; 208 bra = cursor; 209 among_var = find_among(a_0); 210 if (among_var == 0) { 211 return false; 212 } 213 ket = cursor; 214 switch (among_var) { 215 case 1: 216 slice_del(); 217 break; 218 case 2: 219 slice_from("f"); 220 break; 221 case 3: 222 slice_from("s"); 223 break; 224 case 4: 225 slice_from("b"); 226 break; 227 case 5: 228 slice_from("c"); 229 break; 230 case 6: 231 slice_from("d"); 232 break; 233 case 7: 234 slice_from("g"); 235 break; 236 case 8: 237 slice_from("p"); 238 break; 239 case 9: 240 slice_from("t"); 241 break; 242 case 10: 243 slice_from("m"); 244 break; 245 } 246 return true; 247 } 248 r_RV()249 private boolean r_RV() { 250 if (!(I_pV <= cursor)) { 251 return false; 252 } 253 return true; 254 } 255 r_R1()256 private boolean r_R1() { 257 if (!(I_p1 <= cursor)) { 258 return false; 259 } 260 return true; 261 } 262 r_R2()263 private boolean r_R2() { 264 if (!(I_p2 <= cursor)) { 265 return false; 266 } 267 return true; 268 } 269 r_noun_sfx()270 private boolean r_noun_sfx() { 271 int among_var; 272 ket = cursor; 273 among_var = find_among_b(a_1); 274 if (among_var == 0) { 275 return false; 276 } 277 bra = cursor; 278 switch (among_var) { 279 case 1: 280 if (!r_R1()) { 281 return false; 282 } 283 slice_del(); 284 break; 285 case 2: 286 if (!r_R2()) { 287 return false; 288 } 289 slice_del(); 290 break; 291 } 292 return true; 293 } 294 r_deriv()295 private boolean r_deriv() { 296 int among_var; 297 ket = cursor; 298 among_var = find_among_b(a_2); 299 if (among_var == 0) { 300 return false; 301 } 302 bra = cursor; 303 switch (among_var) { 304 case 1: 305 if (!r_R2()) { 306 return false; 307 } 308 slice_del(); 309 break; 310 case 2: 311 slice_from("arc"); 312 break; 313 case 3: 314 slice_from("gin"); 315 break; 316 case 4: 317 slice_from("graf"); 318 break; 319 case 5: 320 slice_from("paite"); 321 break; 322 case 6: 323 slice_from("\u00F3id"); 324 break; 325 } 326 return true; 327 } 328 r_verb_sfx()329 private boolean r_verb_sfx() { 330 int among_var; 331 ket = cursor; 332 among_var = find_among_b(a_3); 333 if (among_var == 0) { 334 return false; 335 } 336 bra = cursor; 337 switch (among_var) { 338 case 1: 339 if (!r_RV()) { 340 return false; 341 } 342 slice_del(); 343 break; 344 case 2: 345 if (!r_R1()) { 346 return false; 347 } 348 slice_del(); 349 break; 350 } 351 return true; 352 } 353 354 @Override stem()355 public boolean stem() { 356 int v_1 = cursor; 357 r_initial_morph(); 358 cursor = v_1; 359 r_mark_regions(); 360 limit_backward = cursor; 361 cursor = limit; 362 int v_3 = limit - cursor; 363 r_noun_sfx(); 364 cursor = limit - v_3; 365 int v_4 = limit - cursor; 366 r_deriv(); 367 cursor = limit - v_4; 368 int v_5 = limit - cursor; 369 r_verb_sfx(); 370 cursor = limit - v_5; 371 cursor = limit_backward; 372 return true; 373 } 374 375 @Override equals(Object o)376 public boolean equals(Object o) { 377 return o instanceof IrishStemmer; 378 } 379 380 @Override hashCode()381 public int hashCode() { 382 return IrishStemmer.class.getName().hashCode(); 383 } 384 } 385