xref: /Lucene/lucene/analysis/common/src/java/org/tartarus/snowball/ext/YiddishStemmer.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 YiddishStemmer 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("\u05D0\u05D3\u05D5\u05E8\u05DB", -1, 1),
21     new Among("\u05D0\u05D4\u05D9\u05E0", -1, 1),
22     new Among("\u05D0\u05D4\u05E2\u05E8", -1, 1),
23     new Among("\u05D0\u05D4\u05F2\u05DE", -1, 1),
24     new Among("\u05D0\u05D5\u05DE", -1, 1),
25     new Among("\u05D0\u05D5\u05E0\u05D8\u05E2\u05E8", -1, 1),
26     new Among("\u05D0\u05D9\u05D1\u05E2\u05E8", -1, 1),
27     new Among("\u05D0\u05E0", -1, 1),
28     new Among("\u05D0\u05E0\u05D8", 7, 1),
29     new Among("\u05D0\u05E0\u05D8\u05E7\u05E2\u05D2\u05E0", 8, 1),
30     new Among("\u05D0\u05E0\u05D9\u05D3\u05E2\u05E8", 7, 1),
31     new Among("\u05D0\u05E4", -1, 1),
32     new Among("\u05D0\u05E4\u05D9\u05E8", 11, 1),
33     new Among("\u05D0\u05E7\u05E2\u05D2\u05E0", -1, 1),
34     new Among("\u05D0\u05E8\u05D0\u05E4", -1, 1),
35     new Among("\u05D0\u05E8\u05D5\u05DE", -1, 1),
36     new Among("\u05D0\u05E8\u05D5\u05E0\u05D8\u05E2\u05E8", -1, 1),
37     new Among("\u05D0\u05E8\u05D9\u05D1\u05E2\u05E8", -1, 1),
38     new Among("\u05D0\u05E8\u05F1\u05E1", -1, 1),
39     new Among("\u05D0\u05E8\u05F1\u05E4", -1, 1),
40     new Among("\u05D0\u05E8\u05F2\u05E0", -1, 1),
41     new Among("\u05D0\u05F0\u05E2\u05E7", -1, 1),
42     new Among("\u05D0\u05F1\u05E1", -1, 1),
43     new Among("\u05D0\u05F1\u05E4", -1, 1),
44     new Among("\u05D0\u05F2\u05E0", -1, 1),
45     new Among("\u05D1\u05D0", -1, 1),
46     new Among("\u05D1\u05F2", -1, 1),
47     new Among("\u05D3\u05D5\u05E8\u05DB", -1, 1),
48     new Among("\u05D3\u05E2\u05E8", -1, 1),
49     new Among("\u05DE\u05D9\u05D8", -1, 1),
50     new Among("\u05E0\u05D0\u05DB", -1, 1),
51     new Among("\u05E4\u05D0\u05E8", -1, 1),
52     new Among("\u05E4\u05D0\u05E8\u05D1\u05F2", 31, 1),
53     new Among("\u05E4\u05D0\u05E8\u05F1\u05E1", 31, 1),
54     new Among("\u05E4\u05D5\u05E0\u05D0\u05E0\u05D3\u05E2\u05E8", -1, 1),
55     new Among("\u05E6\u05D5", -1, 1),
56     new Among("\u05E6\u05D5\u05D6\u05D0\u05DE\u05E2\u05E0", 35, 1),
57     new Among("\u05E6\u05D5\u05E0\u05F1\u05E4", 35, 1),
58     new Among("\u05E6\u05D5\u05E8\u05D9\u05E7", 35, 1),
59     new Among("\u05E6\u05E2", -1, 1)
60   };
61 
62   private static final Among a_1[] = {
63     new Among("\u05D3\u05D6\u05E9", -1, -1),
64     new Among("\u05E9\u05D8\u05E8", -1, -1),
65     new Among("\u05E9\u05D8\u05E9", -1, -1),
66     new Among("\u05E9\u05E4\u05E8", -1, -1)
67   };
68 
69   private static final Among a_2[] = {
70     new Among("\u05D5\u05E0\u05D2", -1, 1),
71     new Among("\u05E1\u05D8\u05D5", -1, 1),
72     new Among("\u05D8", -1, 1),
73     new Among("\u05D1\u05E8\u05D0\u05DB\u05D8", 2, 31),
74     new Among("\u05E1\u05D8", 2, 1),
75     new Among("\u05D9\u05E1\u05D8", 4, 1),
76     new Among("\u05D2\u05D9\u05E1\u05D8", 5, 33),
77     new Among("\u05E9\u05D9\u05E1\u05D8", 5, 33),
78     new Among("\u05E9\u05D0\u05E4\u05D8", 2, 1),
79     new Among("\u05D4\u05F2\u05D8", 2, 1),
80     new Among("\u05E7\u05F2\u05D8", 2, 1),
81     new Among("\u05D9\u05E7\u05F2\u05D8", 10, 1),
82     new Among("\u05DC\u05E2\u05DB", -1, 1),
83     new Among("\u05E2\u05DC\u05E2\u05DB", 12, 1),
84     new Among("\u05D9\u05D6\u05DE", -1, 1),
85     new Among("\u05D9\u05DE", -1, 1),
86     new Among("\u05E2\u05DE", -1, 1),
87     new Among("\u05E2\u05E0\u05E2\u05DE", 16, 3),
88     new Among("\u05D8\u05E2\u05E0\u05E2\u05DE", 17, 4),
89     new Among("\u05E0", -1, 1),
90     new Among("\u05E7\u05DC\u05D9\u05D1\u05E0", 19, 14),
91     new Among("\u05E8\u05D9\u05D1\u05E0", 19, 15),
92     new Among("\u05D8\u05E8\u05D9\u05D1\u05E0", 21, 12),
93     new Among("\u05E9\u05E8\u05D9\u05D1\u05E0", 21, 7),
94     new Among("\u05D4\u05F1\u05D1\u05E0", 19, 27),
95     new Among("\u05E9\u05F0\u05D9\u05D2\u05E0", 19, 17),
96     new Among("\u05D6\u05D5\u05E0\u05D2\u05E0", 19, 22),
97     new Among("\u05E9\u05DC\u05D5\u05E0\u05D2\u05E0", 19, 25),
98     new Among("\u05E6\u05F0\u05D5\u05E0\u05D2\u05E0", 19, 24),
99     new Among("\u05D1\u05F1\u05D2\u05E0", 19, 26),
100     new Among("\u05D1\u05D5\u05E0\u05D3\u05E0", 19, 20),
101     new Among("\u05F0\u05D9\u05D6\u05E0", 19, 11),
102     new Among("\u05D8\u05E0", 19, 4),
103     new Among("GE\u05D1\u05D9\u05D8\u05E0", 32, 9),
104     new Among("GE\u05DC\u05D9\u05D8\u05E0", 32, 13),
105     new Among("GE\u05DE\u05D9\u05D8\u05E0", 32, 8),
106     new Among("\u05E9\u05E0\u05D9\u05D8\u05E0", 32, 19),
107     new Among("\u05E1\u05D8\u05E0", 32, 1),
108     new Among("\u05D9\u05E1\u05D8\u05E0", 37, 1),
109     new Among("GE\u05D1\u05D9\u05E1\u05E0", 19, 10),
110     new Among("\u05E9\u05DE\u05D9\u05E1\u05E0", 19, 18),
111     new Among("GE\u05E8\u05D9\u05E1\u05E0", 19, 16),
112     new Among("\u05E2\u05E0", 19, 1),
113     new Among("\u05D2\u05D0\u05E0\u05D2\u05E2\u05E0", 42, 5),
114     new Among("\u05E2\u05DC\u05E2\u05E0", 42, 1),
115     new Among("\u05E0\u05D5\u05DE\u05E2\u05E0", 42, 6),
116     new Among("\u05D9\u05D6\u05DE\u05E2\u05E0", 42, 1),
117     new Among("\u05E9\u05D8\u05D0\u05E0\u05E2\u05E0", 42, 29),
118     new Among("\u05D8\u05E8\u05D5\u05E0\u05E7\u05E0", 19, 23),
119     new Among("\u05E4\u05D0\u05E8\u05DC\u05F1\u05E8\u05E0", 19, 28),
120     new Among("\u05E9\u05F0\u05F1\u05E8\u05E0", 19, 30),
121     new Among("\u05F0\u05D5\u05D8\u05E9\u05E0", 19, 21),
122     new Among("\u05D2\u05F2\u05E0", 19, 5),
123     new Among("\u05E1", -1, 1),
124     new Among("\u05D8\u05E1", 53, 4),
125     new Among("\u05E0\u05E1", 53, 1),
126     new Among("\u05D8\u05E0\u05E1", 55, 4),
127     new Among("\u05E2\u05E0\u05E1", 55, 3),
128     new Among("\u05E2\u05E1", 53, 1),
129     new Among("\u05D9\u05E2\u05E1", 58, 2),
130     new Among("\u05E2\u05DC\u05E2\u05E1", 58, 1),
131     new Among("\u05E2\u05E8\u05E1", 53, 1),
132     new Among("\u05E2\u05E0\u05E2\u05E8\u05E1", 61, 1),
133     new Among("\u05E2", -1, 1),
134     new Among("\u05D8\u05E2", 63, 4),
135     new Among("\u05E1\u05D8\u05E2", 64, 1),
136     new Among("\u05D9\u05E2", 63, -1),
137     new Among("\u05E2\u05DC\u05E2", 63, 1),
138     new Among("\u05E2\u05E0\u05E2", 63, 3),
139     new Among("\u05D8\u05E2\u05E0\u05E2", 68, 4),
140     new Among("\u05E2\u05E8", -1, 1),
141     new Among("\u05D8\u05E2\u05E8", 70, 4),
142     new Among("\u05E1\u05D8\u05E2\u05E8", 71, 1),
143     new Among("\u05E2\u05E0\u05E2\u05E8", 70, 3),
144     new Among("\u05D8\u05E2\u05E0\u05E2\u05E8", 73, 4),
145     new Among("\u05D5\u05EA", -1, 32)
146   };
147 
148   private static final Among a_3[] = {
149     new Among("\u05D5\u05E0\u05D2", -1, 1),
150     new Among("\u05E9\u05D0\u05E4\u05D8", -1, 1),
151     new Among("\u05D4\u05F2\u05D8", -1, 1),
152     new Among("\u05E7\u05F2\u05D8", -1, 1),
153     new Among("\u05D9\u05E7\u05F2\u05D8", 3, 1),
154     new Among("\u05DC", -1, 2)
155   };
156 
157   private static final Among a_4[] = {
158     new Among("\u05D9\u05D2", -1, 1),
159     new Among("\u05D9\u05E7", -1, 1),
160     new Among("\u05D3\u05D9\u05E7", 1, 1),
161     new Among("\u05E0\u05D3\u05D9\u05E7", 2, 1),
162     new Among("\u05E2\u05E0\u05D3\u05D9\u05E7", 3, 2),
163     new Among("\u05D1\u05DC\u05D9\u05E7", 1, -1),
164     new Among("\u05D2\u05DC\u05D9\u05E7", 1, -1),
165     new Among("\u05E0\u05D9\u05E7", 1, 1),
166     new Among("\u05D9\u05E9", -1, 1)
167   };
168 
169   private static final char g_niked[] = {255, 155, 6};
170 
171   private static final char g_vowel[] = {33, 2, 4, 0, 6};
172 
173   private static final char g_consonant[] = {239, 254, 253, 131};
174 
175   private int I_x;
176   private int I_p1;
177 
r_prelude()178   private boolean r_prelude() {
179     int v_1 = cursor;
180     lab0:
181     {
182       while (true) {
183         int v_2 = cursor;
184         lab1:
185         {
186           golab2:
187           while (true) {
188             int v_3 = cursor;
189             lab3:
190             {
191               lab4:
192               {
193                 int v_4 = cursor;
194                 lab5:
195                 {
196                   bra = cursor;
197                   if (!(eq_s("\u05D5\u05D5"))) {
198                     break lab5;
199                   }
200                   ket = cursor;
201                   {
202                     int v_5 = cursor;
203                     lab6:
204                     {
205                       if (!(eq_s("\u05BC"))) {
206                         break lab6;
207                       }
208                       break lab5;
209                     }
210                     cursor = v_5;
211                   }
212                   slice_from("\u05F0");
213                   break lab4;
214                 }
215                 cursor = v_4;
216                 lab7:
217                 {
218                   bra = cursor;
219                   if (!(eq_s("\u05D5\u05D9"))) {
220                     break lab7;
221                   }
222                   ket = cursor;
223                   {
224                     int v_6 = cursor;
225                     lab8:
226                     {
227                       if (!(eq_s("\u05B4"))) {
228                         break lab8;
229                       }
230                       break lab7;
231                     }
232                     cursor = v_6;
233                   }
234                   slice_from("\u05F1");
235                   break lab4;
236                 }
237                 cursor = v_4;
238                 lab9:
239                 {
240                   bra = cursor;
241                   if (!(eq_s("\u05D9\u05D9"))) {
242                     break lab9;
243                   }
244                   ket = cursor;
245                   {
246                     int v_7 = cursor;
247                     lab10:
248                     {
249                       if (!(eq_s("\u05B4"))) {
250                         break lab10;
251                       }
252                       break lab9;
253                     }
254                     cursor = v_7;
255                   }
256                   slice_from("\u05F2");
257                   break lab4;
258                 }
259                 cursor = v_4;
260                 lab11:
261                 {
262                   bra = cursor;
263                   if (!(eq_s("\u05DA"))) {
264                     break lab11;
265                   }
266                   ket = cursor;
267                   slice_from("\u05DB");
268                   break lab4;
269                 }
270                 cursor = v_4;
271                 lab12:
272                 {
273                   bra = cursor;
274                   if (!(eq_s("\u05DD"))) {
275                     break lab12;
276                   }
277                   ket = cursor;
278                   slice_from("\u05DE");
279                   break lab4;
280                 }
281                 cursor = v_4;
282                 lab13:
283                 {
284                   bra = cursor;
285                   if (!(eq_s("\u05DF"))) {
286                     break lab13;
287                   }
288                   ket = cursor;
289                   slice_from("\u05E0");
290                   break lab4;
291                 }
292                 cursor = v_4;
293                 lab14:
294                 {
295                   bra = cursor;
296                   if (!(eq_s("\u05E3"))) {
297                     break lab14;
298                   }
299                   ket = cursor;
300                   slice_from("\u05E4");
301                   break lab4;
302                 }
303                 cursor = v_4;
304                 bra = cursor;
305                 if (!(eq_s("\u05E5"))) {
306                   break lab3;
307                 }
308                 ket = cursor;
309                 slice_from("\u05E6");
310               }
311               cursor = v_3;
312               break golab2;
313             }
314             cursor = v_3;
315             if (cursor >= limit) {
316               break lab1;
317             }
318             cursor++;
319           }
320           continue;
321         }
322         cursor = v_2;
323         break;
324       }
325     }
326     cursor = v_1;
327     int v_8 = cursor;
328     lab15:
329     {
330       while (true) {
331         int v_9 = cursor;
332         lab16:
333         {
334           golab17:
335           while (true) {
336             int v_10 = cursor;
337             lab18:
338             {
339               bra = cursor;
340               if (!(in_grouping(g_niked, 1456, 1474))) {
341                 break lab18;
342               }
343               ket = cursor;
344               slice_del();
345               cursor = v_10;
346               break golab17;
347             }
348             cursor = v_10;
349             if (cursor >= limit) {
350               break lab16;
351             }
352             cursor++;
353           }
354           continue;
355         }
356         cursor = v_9;
357         break;
358       }
359     }
360     cursor = v_8;
361     return true;
362   }
363 
r_mark_regions()364   private boolean r_mark_regions() {
365     I_p1 = limit;
366     int v_1 = cursor;
367     lab0:
368     {
369       bra = cursor;
370       if (!(eq_s("\u05D2\u05E2"))) {
371         cursor = v_1;
372         break lab0;
373       }
374       ket = cursor;
375       slice_from("GE");
376     }
377     int v_2 = cursor;
378     lab1:
379     {
380       if (find_among(a_0) == 0) {
381         cursor = v_2;
382         break lab1;
383       }
384       lab2:
385       {
386         int v_3 = cursor;
387         lab3:
388         {
389           lab4:
390           {
391             int v_4 = cursor;
392             lab5:
393             {
394               if (!(eq_s("\u05E6\u05D5\u05D2\u05E0"))) {
395                 break lab5;
396               }
397               break lab4;
398             }
399             cursor = v_4;
400             lab6:
401             {
402               if (!(eq_s("\u05E6\u05D5\u05E7\u05D8"))) {
403                 break lab6;
404               }
405               break lab4;
406             }
407             cursor = v_4;
408             if (!(eq_s("\u05E6\u05D5\u05E7\u05E0"))) {
409               break lab3;
410             }
411           }
412           {
413             int v_5 = cursor;
414             lab7:
415             {
416               {
417                 int c = cursor + 1;
418                 if (0 > c || c > limit) {
419                   break lab7;
420                 }
421                 cursor = c;
422               }
423               break lab3;
424             }
425             cursor = v_5;
426           }
427           {
428             int c = cursor + -4;
429             if (0 > c || c > limit) {
430               break lab3;
431             }
432             cursor = c;
433           }
434           break lab2;
435         }
436         cursor = v_3;
437         lab8:
438         {
439           bra = cursor;
440           if (!(eq_s("\u05D2\u05E2"))) {
441             break lab8;
442           }
443           ket = cursor;
444           slice_from("GE");
445           break lab2;
446         }
447         cursor = v_3;
448         bra = cursor;
449         if (!(eq_s("\u05E6\u05D5"))) {
450           cursor = v_2;
451           break lab1;
452         }
453         ket = cursor;
454         slice_from("TSU");
455       }
456     }
457     int v_6 = cursor;
458     {
459       int c = cursor + 3;
460       if (0 > c || c > limit) {
461         return false;
462       }
463       cursor = c;
464     }
465     I_x = cursor;
466     cursor = v_6;
467     int v_7 = cursor;
468     lab9:
469     {
470       if (find_among(a_1) == 0) {
471         cursor = v_7;
472         break lab9;
473       }
474     }
475     {
476       int v_8 = cursor;
477       lab10:
478       {
479         if (!(in_grouping(g_consonant, 1489, 1520))) {
480           break lab10;
481         }
482         if (!(in_grouping(g_consonant, 1489, 1520))) {
483           break lab10;
484         }
485         if (!(in_grouping(g_consonant, 1489, 1520))) {
486           break lab10;
487         }
488         I_p1 = cursor;
489         return false;
490       }
491       cursor = v_8;
492     }
493     golab11:
494     while (true) {
495       int v_9 = cursor;
496       lab12:
497       {
498         if (!(in_grouping(g_vowel, 1488, 1522))) {
499           break lab12;
500         }
501         cursor = v_9;
502         break golab11;
503       }
504       cursor = v_9;
505       if (cursor >= limit) {
506         return false;
507       }
508       cursor++;
509     }
510     while (true) {
511       lab13:
512       {
513         if (!(in_grouping(g_vowel, 1488, 1522))) {
514           break lab13;
515         }
516         continue;
517       }
518       break;
519     }
520     I_p1 = cursor;
521     lab14:
522     {
523       if (!(I_p1 < I_x)) {
524         break lab14;
525       }
526       I_p1 = I_x;
527     }
528     return true;
529   }
530 
r_R1()531   private boolean r_R1() {
532     if (!(I_p1 <= cursor)) {
533       return false;
534     }
535     return true;
536   }
537 
r_standard_suffix()538   private boolean r_standard_suffix() {
539     int among_var;
540     int v_1 = limit - cursor;
541     lab0:
542     {
543       ket = cursor;
544       among_var = find_among_b(a_2);
545       if (among_var == 0) {
546         break lab0;
547       }
548       bra = cursor;
549       switch (among_var) {
550         case 1:
551           if (!r_R1()) {
552             break lab0;
553           }
554           slice_del();
555           break;
556         case 2:
557           if (!r_R1()) {
558             break lab0;
559           }
560           slice_from("\u05D9\u05E2");
561           break;
562         case 3:
563           if (!r_R1()) {
564             break lab0;
565           }
566           slice_del();
567           {
568             int v_2 = limit - cursor;
569             lab1:
570             {
571               ket = cursor;
572               if (!(eq_s_b("\u05D2\u05D0\u05E0\u05D2"))) {
573                 break lab1;
574               }
575               bra = cursor;
576               slice_from("\u05D2\u05F2");
577               break lab0;
578             }
579             cursor = limit - v_2;
580           }
581           {
582             int v_3 = limit - cursor;
583             lab2:
584             {
585               ket = cursor;
586               if (!(eq_s_b("\u05E0\u05D5\u05DE"))) {
587                 break lab2;
588               }
589               bra = cursor;
590               slice_from("\u05E0\u05E2\u05DE");
591               break lab0;
592             }
593             cursor = limit - v_3;
594           }
595           {
596             int v_4 = limit - cursor;
597             lab3:
598             {
599               ket = cursor;
600               if (!(eq_s_b("\u05DE\u05D9\u05D8"))) {
601                 break lab3;
602               }
603               bra = cursor;
604               slice_from("\u05DE\u05F2\u05D3");
605               break lab0;
606             }
607             cursor = limit - v_4;
608           }
609           {
610             int v_5 = limit - cursor;
611             lab4:
612             {
613               ket = cursor;
614               if (!(eq_s_b("\u05D1\u05D9\u05D8"))) {
615                 break lab4;
616               }
617               bra = cursor;
618               slice_from("\u05D1\u05F2\u05D8");
619               break lab0;
620             }
621             cursor = limit - v_5;
622           }
623           {
624             int v_6 = limit - cursor;
625             lab5:
626             {
627               ket = cursor;
628               if (!(eq_s_b("\u05D1\u05D9\u05E1"))) {
629                 break lab5;
630               }
631               bra = cursor;
632               slice_from("\u05D1\u05F2\u05E1");
633               break lab0;
634             }
635             cursor = limit - v_6;
636           }
637           {
638             int v_7 = limit - cursor;
639             lab6:
640             {
641               ket = cursor;
642               if (!(eq_s_b("\u05F0\u05D9\u05D6"))) {
643                 break lab6;
644               }
645               bra = cursor;
646               slice_from("\u05F0\u05F2\u05D6");
647               break lab0;
648             }
649             cursor = limit - v_7;
650           }
651           {
652             int v_8 = limit - cursor;
653             lab7:
654             {
655               ket = cursor;
656               if (!(eq_s_b("\u05D8\u05E8\u05D9\u05D1"))) {
657                 break lab7;
658               }
659               bra = cursor;
660               slice_from("\u05D8\u05E8\u05F2\u05D1");
661               break lab0;
662             }
663             cursor = limit - v_8;
664           }
665           {
666             int v_9 = limit - cursor;
667             lab8:
668             {
669               ket = cursor;
670               if (!(eq_s_b("\u05DC\u05D9\u05D8"))) {
671                 break lab8;
672               }
673               bra = cursor;
674               slice_from("\u05DC\u05F2\u05D8");
675               break lab0;
676             }
677             cursor = limit - v_9;
678           }
679           {
680             int v_10 = limit - cursor;
681             lab9:
682             {
683               ket = cursor;
684               if (!(eq_s_b("\u05E7\u05DC\u05D9\u05D1"))) {
685                 break lab9;
686               }
687               bra = cursor;
688               slice_from("\u05E7\u05DC\u05F2\u05D1");
689               break lab0;
690             }
691             cursor = limit - v_10;
692           }
693           {
694             int v_11 = limit - cursor;
695             lab10:
696             {
697               ket = cursor;
698               if (!(eq_s_b("\u05E8\u05D9\u05D1"))) {
699                 break lab10;
700               }
701               bra = cursor;
702               slice_from("\u05E8\u05F2\u05D1");
703               break lab0;
704             }
705             cursor = limit - v_11;
706           }
707           {
708             int v_12 = limit - cursor;
709             lab11:
710             {
711               ket = cursor;
712               if (!(eq_s_b("\u05E8\u05D9\u05E1"))) {
713                 break lab11;
714               }
715               bra = cursor;
716               slice_from("\u05E8\u05F2\u05E1");
717               break lab0;
718             }
719             cursor = limit - v_12;
720           }
721           {
722             int v_13 = limit - cursor;
723             lab12:
724             {
725               ket = cursor;
726               if (!(eq_s_b("\u05E9\u05F0\u05D9\u05D2"))) {
727                 break lab12;
728               }
729               bra = cursor;
730               slice_from("\u05E9\u05F0\u05F2\u05D2");
731               break lab0;
732             }
733             cursor = limit - v_13;
734           }
735           {
736             int v_14 = limit - cursor;
737             lab13:
738             {
739               ket = cursor;
740               if (!(eq_s_b("\u05E9\u05DE\u05D9\u05E1"))) {
741                 break lab13;
742               }
743               bra = cursor;
744               slice_from("\u05E9\u05DE\u05F2\u05E1");
745               break lab0;
746             }
747             cursor = limit - v_14;
748           }
749           {
750             int v_15 = limit - cursor;
751             lab14:
752             {
753               ket = cursor;
754               if (!(eq_s_b("\u05E9\u05E0\u05D9\u05D8"))) {
755                 break lab14;
756               }
757               bra = cursor;
758               slice_from("\u05E9\u05E0\u05F2\u05D3");
759               break lab0;
760             }
761             cursor = limit - v_15;
762           }
763           {
764             int v_16 = limit - cursor;
765             lab15:
766             {
767               ket = cursor;
768               if (!(eq_s_b("\u05E9\u05E8\u05D9\u05D1"))) {
769                 break lab15;
770               }
771               bra = cursor;
772               slice_from("\u05E9\u05E8\u05F2\u05D1");
773               break lab0;
774             }
775             cursor = limit - v_16;
776           }
777           {
778             int v_17 = limit - cursor;
779             lab16:
780             {
781               ket = cursor;
782               if (!(eq_s_b("\u05D1\u05D5\u05E0\u05D3"))) {
783                 break lab16;
784               }
785               bra = cursor;
786               slice_from("\u05D1\u05D9\u05E0\u05D3");
787               break lab0;
788             }
789             cursor = limit - v_17;
790           }
791           {
792             int v_18 = limit - cursor;
793             lab17:
794             {
795               ket = cursor;
796               if (!(eq_s_b("\u05F0\u05D5\u05D8\u05E9"))) {
797                 break lab17;
798               }
799               bra = cursor;
800               slice_from("\u05F0\u05D9\u05D8\u05E9");
801               break lab0;
802             }
803             cursor = limit - v_18;
804           }
805           {
806             int v_19 = limit - cursor;
807             lab18:
808             {
809               ket = cursor;
810               if (!(eq_s_b("\u05D6\u05D5\u05E0\u05D2"))) {
811                 break lab18;
812               }
813               bra = cursor;
814               slice_from("\u05D6\u05D9\u05E0\u05D2");
815               break lab0;
816             }
817             cursor = limit - v_19;
818           }
819           {
820             int v_20 = limit - cursor;
821             lab19:
822             {
823               ket = cursor;
824               if (!(eq_s_b("\u05D8\u05E8\u05D5\u05E0\u05E7"))) {
825                 break lab19;
826               }
827               bra = cursor;
828               slice_from("\u05D8\u05E8\u05D9\u05E0\u05E7");
829               break lab0;
830             }
831             cursor = limit - v_20;
832           }
833           {
834             int v_21 = limit - cursor;
835             lab20:
836             {
837               ket = cursor;
838               if (!(eq_s_b("\u05E6\u05F0\u05D5\u05E0\u05D2"))) {
839                 break lab20;
840               }
841               bra = cursor;
842               slice_from("\u05E6\u05F0\u05D9\u05E0\u05D2");
843               break lab0;
844             }
845             cursor = limit - v_21;
846           }
847           {
848             int v_22 = limit - cursor;
849             lab21:
850             {
851               ket = cursor;
852               if (!(eq_s_b("\u05E9\u05DC\u05D5\u05E0\u05D2"))) {
853                 break lab21;
854               }
855               bra = cursor;
856               slice_from("\u05E9\u05DC\u05D9\u05E0\u05D2");
857               break lab0;
858             }
859             cursor = limit - v_22;
860           }
861           {
862             int v_23 = limit - cursor;
863             lab22:
864             {
865               ket = cursor;
866               if (!(eq_s_b("\u05D1\u05F1\u05D2"))) {
867                 break lab22;
868               }
869               bra = cursor;
870               slice_from("\u05D1\u05F2\u05D2");
871               break lab0;
872             }
873             cursor = limit - v_23;
874           }
875           {
876             int v_24 = limit - cursor;
877             lab23:
878             {
879               ket = cursor;
880               if (!(eq_s_b("\u05D4\u05F1\u05D1"))) {
881                 break lab23;
882               }
883               bra = cursor;
884               slice_from("\u05D4\u05F2\u05D1");
885               break lab0;
886             }
887             cursor = limit - v_24;
888           }
889           {
890             int v_25 = limit - cursor;
891             lab24:
892             {
893               ket = cursor;
894               if (!(eq_s_b("\u05E4\u05D0\u05E8\u05DC\u05F1\u05E8"))) {
895                 break lab24;
896               }
897               bra = cursor;
898               slice_from("\u05E4\u05D0\u05E8\u05DC\u05D9\u05E8");
899               break lab0;
900             }
901             cursor = limit - v_25;
902           }
903           {
904             int v_26 = limit - cursor;
905             lab25:
906             {
907               ket = cursor;
908               if (!(eq_s_b("\u05E9\u05D8\u05D0\u05E0"))) {
909                 break lab25;
910               }
911               bra = cursor;
912               slice_from("\u05E9\u05D8\u05F2");
913               break lab0;
914             }
915             cursor = limit - v_26;
916           }
917           {
918             int v_27 = limit - cursor;
919             lab26:
920             {
921               ket = cursor;
922               if (!(eq_s_b("\u05E9\u05F0\u05F1\u05E8"))) {
923                 break lab26;
924               }
925               bra = cursor;
926               slice_from("\u05E9\u05F0\u05E2\u05E8");
927               break lab0;
928             }
929             cursor = limit - v_27;
930           }
931           break;
932         case 4:
933           {
934             int v_28 = limit - cursor;
935             lab27:
936             {
937               if (!r_R1()) {
938                 break lab27;
939               }
940               slice_del();
941               {
942                 int v_29 = limit - cursor;
943                 lab28:
944                 {
945                   ket = cursor;
946                   lab29:
947                   {
948                     int v_30 = limit - cursor;
949                     lab30:
950                     {
951                       if (!(eq_s_b("\u05D2\u05E2\u05D1\u05E8\u05D0\u05DB"))) {
952                         break lab30;
953                       }
954                       break lab29;
955                     }
956                     cursor = limit - v_30;
957                     if (!(eq_s_b("\u05D1\u05E8\u05D0\u05DB"))) {
958                       break lab28;
959                     }
960                   }
961                   bra = cursor;
962                   slice_from("\u05D1\u05E8\u05E2\u05E0\u05D2");
963                   break lab27;
964                 }
965                 cursor = limit - v_29;
966               }
967               break lab0;
968             }
969             cursor = limit - v_28;
970           }
971           while (true) {
972             lab31:
973             {
974               {
975                 int c = cursor - -1;
976                 if (limit_backward > c || c > limit) {
977                   break lab31;
978                 }
979                 cursor = c;
980               }
981               continue;
982             }
983             break;
984           }
985           ket = cursor;
986           lab32:
987           {
988             int v_32 = limit - cursor;
989             lab33:
990             {
991               if (!(eq_s_b("\u05E2\u05E0\u05E2\u05E8"))) {
992                 break lab33;
993               }
994               break lab32;
995             }
996             cursor = limit - v_32;
997             lab34:
998             {
999               if (!(eq_s_b("\u05E2\u05E0\u05E2\u05DE"))) {
1000                 break lab34;
1001               }
1002               break lab32;
1003             }
1004             cursor = limit - v_32;
1005             lab35:
1006             {
1007               if (!(eq_s_b("\u05E2\u05E0\u05E2"))) {
1008                 break lab35;
1009               }
1010               break lab32;
1011             }
1012             cursor = limit - v_32;
1013             lab36:
1014             {
1015               if (!(eq_s_b("\u05E0"))) {
1016                 break lab36;
1017               }
1018               break lab32;
1019             }
1020             cursor = limit - v_32;
1021             lab37:
1022             {
1023               if (!(eq_s_b("\u05E2\u05E8"))) {
1024                 break lab37;
1025               }
1026               break lab32;
1027             }
1028             cursor = limit - v_32;
1029             lab38:
1030             {
1031               if (!(eq_s_b("\u05E0\u05E1"))) {
1032                 break lab38;
1033               }
1034               break lab32;
1035             }
1036             cursor = limit - v_32;
1037             lab39:
1038             {
1039               if (!(eq_s_b("\u05E2"))) {
1040                 break lab39;
1041               }
1042               break lab32;
1043             }
1044             cursor = limit - v_32;
1045             if (!(eq_s_b("\u05E1"))) {
1046               break lab0;
1047             }
1048           }
1049           bra = cursor;
1050           if (!r_R1()) {
1051             break lab0;
1052           }
1053           slice_del();
1054           break;
1055         case 5:
1056           slice_from("\u05D2\u05F2");
1057           break;
1058         case 6:
1059           slice_from("\u05E0\u05E2\u05DE");
1060           break;
1061         case 7:
1062           slice_from("\u05E9\u05E8\u05F2\u05D1");
1063           break;
1064         case 8:
1065           slice_from("\u05DE\u05F2\u05D3");
1066           break;
1067         case 9:
1068           slice_from("\u05D1\u05F2\u05D8");
1069           break;
1070         case 10:
1071           slice_from("\u05D1\u05F2\u05E1");
1072           break;
1073         case 11:
1074           slice_from("\u05F0\u05F2\u05D6");
1075           break;
1076         case 12:
1077           slice_from("\u05D8\u05E8\u05F2\u05D1");
1078           break;
1079         case 13:
1080           slice_from("\u05DC\u05F2\u05D8");
1081           break;
1082         case 14:
1083           slice_from("\u05E7\u05DC\u05F2\u05D1");
1084           break;
1085         case 15:
1086           slice_from("\u05E8\u05F2\u05D1");
1087           break;
1088         case 16:
1089           slice_from("\u05E8\u05F2\u05E1");
1090           break;
1091         case 17:
1092           slice_from("\u05E9\u05F0\u05F2\u05D2");
1093           break;
1094         case 18:
1095           slice_from("\u05E9\u05DE\u05F2\u05E1");
1096           break;
1097         case 19:
1098           slice_from("\u05E9\u05E0\u05F2\u05D3");
1099           break;
1100         case 20:
1101           slice_from("\u05D1\u05D9\u05E0\u05D3");
1102           break;
1103         case 21:
1104           slice_from("\u05F0\u05D9\u05D8\u05E9");
1105           break;
1106         case 22:
1107           slice_from("\u05D6\u05D9\u05E0\u05D2");
1108           break;
1109         case 23:
1110           slice_from("\u05D8\u05E8\u05D9\u05E0\u05E7");
1111           break;
1112         case 24:
1113           slice_from("\u05E6\u05F0\u05D9\u05E0\u05D2");
1114           break;
1115         case 25:
1116           slice_from("\u05E9\u05DC\u05D9\u05E0\u05D2");
1117           break;
1118         case 26:
1119           slice_from("\u05D1\u05F2\u05D2");
1120           break;
1121         case 27:
1122           slice_from("\u05D4\u05F2\u05D1");
1123           break;
1124         case 28:
1125           slice_from("\u05E4\u05D0\u05E8\u05DC\u05D9\u05E8");
1126           break;
1127         case 29:
1128           slice_from("\u05E9\u05D8\u05F2");
1129           break;
1130         case 30:
1131           slice_from("\u05E9\u05F0\u05E2\u05E8");
1132           break;
1133         case 31:
1134           slice_from("\u05D1\u05E8\u05E2\u05E0\u05D2");
1135           break;
1136         case 32:
1137           if (!r_R1()) {
1138             break lab0;
1139           }
1140           slice_from("\u05D4");
1141           break;
1142         case 33:
1143           {
1144             int c = cursor - -4;
1145             if (limit_backward > c || c > limit) {
1146               break lab0;
1147             }
1148             cursor = c;
1149           }
1150           ket = cursor;
1151           if (!(eq_s_b("\u05D8"))) {
1152             break lab0;
1153           }
1154           bra = cursor;
1155           if (!r_R1()) {
1156             break lab0;
1157           }
1158           slice_del();
1159           break;
1160       }
1161     }
1162     cursor = limit - v_1;
1163     int v_33 = limit - cursor;
1164     lab40:
1165     {
1166       ket = cursor;
1167       among_var = find_among_b(a_3);
1168       if (among_var == 0) {
1169         break lab40;
1170       }
1171       bra = cursor;
1172       switch (among_var) {
1173         case 1:
1174           if (!r_R1()) {
1175             break lab40;
1176           }
1177           slice_del();
1178           break;
1179         case 2:
1180           if (!r_R1()) {
1181             break lab40;
1182           }
1183           if (!(in_grouping_b(g_consonant, 1489, 1520))) {
1184             break lab40;
1185           }
1186           slice_del();
1187           break;
1188       }
1189     }
1190     cursor = limit - v_33;
1191     int v_34 = limit - cursor;
1192     lab41:
1193     {
1194       ket = cursor;
1195       among_var = find_among_b(a_4);
1196       if (among_var == 0) {
1197         break lab41;
1198       }
1199       bra = cursor;
1200       switch (among_var) {
1201         case 1:
1202           if (!r_R1()) {
1203             break lab41;
1204           }
1205           slice_del();
1206           break;
1207         case 2:
1208           if (!r_R1()) {
1209             break lab41;
1210           }
1211           {
1212             int v_35 = limit - cursor;
1213             lab42:
1214             {
1215               int v_36 = limit - cursor;
1216               lab43:
1217               {
1218                 int v_37 = limit - cursor;
1219                 lab44:
1220                 {
1221                   if (!(eq_s_b("\u05E0\u05D2"))) {
1222                     break lab44;
1223                   }
1224                   break lab43;
1225                 }
1226                 cursor = limit - v_37;
1227                 lab45:
1228                 {
1229                   if (!(eq_s_b("\u05E0\u05E7"))) {
1230                     break lab45;
1231                   }
1232                   break lab43;
1233                 }
1234                 cursor = limit - v_37;
1235                 lab46:
1236                 {
1237                   if (!(eq_s_b("\u05E0"))) {
1238                     break lab46;
1239                   }
1240                   break lab43;
1241                 }
1242                 cursor = limit - v_37;
1243                 lab47:
1244                 {
1245                   if (!(eq_s_b("\u05DE"))) {
1246                     break lab47;
1247                   }
1248                   break lab43;
1249                 }
1250                 cursor = limit - v_37;
1251                 lab48:
1252                 {
1253                   if (!(eq_s_b("Lamed"))) {
1254                     break lab48;
1255                   }
1256                   if (!(in_grouping_b(g_consonant, 1489, 1520))) {
1257                     break lab48;
1258                   }
1259                   break lab43;
1260                 }
1261                 cursor = limit - v_37;
1262                 if (!(in_grouping_b(g_vowel, 1488, 1522))) {
1263                   break lab42;
1264                 }
1265               }
1266               cursor = limit - v_36;
1267               slice_del();
1268               break lab41;
1269             }
1270             cursor = limit - v_35;
1271           }
1272           {
1273             int c = cursor - -5;
1274             if (limit_backward > c || c > limit) {
1275               break lab41;
1276             }
1277             cursor = c;
1278           }
1279           if (!(eq_s_b("\u05E0\u05D3\u05D9\u05E7"))) {
1280             break lab41;
1281           }
1282           slice_del();
1283           break;
1284       }
1285     }
1286     cursor = limit - v_34;
1287     int v_38 = limit - cursor;
1288     lab49:
1289     {
1290       while (true) {
1291         int v_39 = limit - cursor;
1292         lab50:
1293         {
1294           golab51:
1295           while (true) {
1296             int v_40 = limit - cursor;
1297             lab52:
1298             {
1299               ket = cursor;
1300               lab53:
1301               {
1302                 int v_41 = limit - cursor;
1303                 lab54:
1304                 {
1305                   if (!(eq_s_b("GE"))) {
1306                     break lab54;
1307                   }
1308                   break lab53;
1309                 }
1310                 cursor = limit - v_41;
1311                 if (!(eq_s_b("TSU"))) {
1312                   break lab52;
1313                 }
1314               }
1315               bra = cursor;
1316               slice_del();
1317               cursor = limit - v_40;
1318               break golab51;
1319             }
1320             cursor = limit - v_40;
1321             if (cursor <= limit_backward) {
1322               break lab50;
1323             }
1324             cursor--;
1325           }
1326           continue;
1327         }
1328         cursor = limit - v_39;
1329         break;
1330       }
1331     }
1332     cursor = limit - v_38;
1333     return true;
1334   }
1335 
1336   @Override
stem()1337   public boolean stem() {
1338     r_prelude();
1339     int v_2 = cursor;
1340     r_mark_regions();
1341     cursor = v_2;
1342     limit_backward = cursor;
1343     cursor = limit;
1344     r_standard_suffix();
1345     cursor = limit_backward;
1346     return true;
1347   }
1348 
1349   @Override
equals(Object o)1350   public boolean equals(Object o) {
1351     return o instanceof YiddishStemmer;
1352   }
1353 
1354   @Override
hashCode()1355   public int hashCode() {
1356     return YiddishStemmer.class.getName().hashCode();
1357   }
1358 }
1359