xref: /Lucene/lucene/analysis/common/src/java/org/tartarus/snowball/ext/HungarianStemmer.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 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