xref: /Lucene/lucene/analysis/common/src/java/org/tartarus/snowball/ext/IrishStemmer.java (revision 0b1d8ccba6cf394f707a09217813a25ec1504e50)
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