xref: /Lucene/lucene/analysis/common/src/java/org/tartarus/snowball/ext/RomanianStemmer.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 RomanianStemmer 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("", -1, 3), new Among("I", 0, 1), new Among("U", 0, 2)
21   };
22 
23   private static final Among a_1[] = {
24     new Among("ea", -1, 3),
25     new Among("a\u0163ia", -1, 7),
26     new Among("aua", -1, 2),
27     new Among("iua", -1, 4),
28     new Among("a\u0163ie", -1, 7),
29     new Among("ele", -1, 3),
30     new Among("ile", -1, 5),
31     new Among("iile", 6, 4),
32     new Among("iei", -1, 4),
33     new Among("atei", -1, 6),
34     new Among("ii", -1, 4),
35     new Among("ului", -1, 1),
36     new Among("ul", -1, 1),
37     new Among("elor", -1, 3),
38     new Among("ilor", -1, 4),
39     new Among("iilor", 14, 4)
40   };
41 
42   private static final Among a_2[] = {
43     new Among("icala", -1, 4),
44     new Among("iciva", -1, 4),
45     new Among("ativa", -1, 5),
46     new Among("itiva", -1, 6),
47     new Among("icale", -1, 4),
48     new Among("a\u0163iune", -1, 5),
49     new Among("i\u0163iune", -1, 6),
50     new Among("atoare", -1, 5),
51     new Among("itoare", -1, 6),
52     new Among("\u0103toare", -1, 5),
53     new Among("icitate", -1, 4),
54     new Among("abilitate", -1, 1),
55     new Among("ibilitate", -1, 2),
56     new Among("ivitate", -1, 3),
57     new Among("icive", -1, 4),
58     new Among("ative", -1, 5),
59     new Among("itive", -1, 6),
60     new Among("icali", -1, 4),
61     new Among("atori", -1, 5),
62     new Among("icatori", 18, 4),
63     new Among("itori", -1, 6),
64     new Among("\u0103tori", -1, 5),
65     new Among("icitati", -1, 4),
66     new Among("abilitati", -1, 1),
67     new Among("ivitati", -1, 3),
68     new Among("icivi", -1, 4),
69     new Among("ativi", -1, 5),
70     new Among("itivi", -1, 6),
71     new Among("icit\u0103i", -1, 4),
72     new Among("abilit\u0103i", -1, 1),
73     new Among("ivit\u0103i", -1, 3),
74     new Among("icit\u0103\u0163i", -1, 4),
75     new Among("abilit\u0103\u0163i", -1, 1),
76     new Among("ivit\u0103\u0163i", -1, 3),
77     new Among("ical", -1, 4),
78     new Among("ator", -1, 5),
79     new Among("icator", 35, 4),
80     new Among("itor", -1, 6),
81     new Among("\u0103tor", -1, 5),
82     new Among("iciv", -1, 4),
83     new Among("ativ", -1, 5),
84     new Among("itiv", -1, 6),
85     new Among("ical\u0103", -1, 4),
86     new Among("iciv\u0103", -1, 4),
87     new Among("ativ\u0103", -1, 5),
88     new Among("itiv\u0103", -1, 6)
89   };
90 
91   private static final Among a_3[] = {
92     new Among("ica", -1, 1),
93     new Among("abila", -1, 1),
94     new Among("ibila", -1, 1),
95     new Among("oasa", -1, 1),
96     new Among("ata", -1, 1),
97     new Among("ita", -1, 1),
98     new Among("anta", -1, 1),
99     new Among("ista", -1, 3),
100     new Among("uta", -1, 1),
101     new Among("iva", -1, 1),
102     new Among("ic", -1, 1),
103     new Among("ice", -1, 1),
104     new Among("abile", -1, 1),
105     new Among("ibile", -1, 1),
106     new Among("isme", -1, 3),
107     new Among("iune", -1, 2),
108     new Among("oase", -1, 1),
109     new Among("ate", -1, 1),
110     new Among("itate", 17, 1),
111     new Among("ite", -1, 1),
112     new Among("ante", -1, 1),
113     new Among("iste", -1, 3),
114     new Among("ute", -1, 1),
115     new Among("ive", -1, 1),
116     new Among("ici", -1, 1),
117     new Among("abili", -1, 1),
118     new Among("ibili", -1, 1),
119     new Among("iuni", -1, 2),
120     new Among("atori", -1, 1),
121     new Among("osi", -1, 1),
122     new Among("ati", -1, 1),
123     new Among("itati", 30, 1),
124     new Among("iti", -1, 1),
125     new Among("anti", -1, 1),
126     new Among("isti", -1, 3),
127     new Among("uti", -1, 1),
128     new Among("i\u015Fti", -1, 3),
129     new Among("ivi", -1, 1),
130     new Among("it\u0103i", -1, 1),
131     new Among("o\u015Fi", -1, 1),
132     new Among("it\u0103\u0163i", -1, 1),
133     new Among("abil", -1, 1),
134     new Among("ibil", -1, 1),
135     new Among("ism", -1, 3),
136     new Among("ator", -1, 1),
137     new Among("os", -1, 1),
138     new Among("at", -1, 1),
139     new Among("it", -1, 1),
140     new Among("ant", -1, 1),
141     new Among("ist", -1, 3),
142     new Among("ut", -1, 1),
143     new Among("iv", -1, 1),
144     new Among("ic\u0103", -1, 1),
145     new Among("abil\u0103", -1, 1),
146     new Among("ibil\u0103", -1, 1),
147     new Among("oas\u0103", -1, 1),
148     new Among("at\u0103", -1, 1),
149     new Among("it\u0103", -1, 1),
150     new Among("ant\u0103", -1, 1),
151     new Among("ist\u0103", -1, 3),
152     new Among("ut\u0103", -1, 1),
153     new Among("iv\u0103", -1, 1)
154   };
155 
156   private static final Among a_4[] = {
157     new Among("ea", -1, 1),
158     new Among("ia", -1, 1),
159     new Among("esc", -1, 1),
160     new Among("\u0103sc", -1, 1),
161     new Among("ind", -1, 1),
162     new Among("\u00E2nd", -1, 1),
163     new Among("are", -1, 1),
164     new Among("ere", -1, 1),
165     new Among("ire", -1, 1),
166     new Among("\u00E2re", -1, 1),
167     new Among("se", -1, 2),
168     new Among("ase", 10, 1),
169     new Among("sese", 10, 2),
170     new Among("ise", 10, 1),
171     new Among("use", 10, 1),
172     new Among("\u00E2se", 10, 1),
173     new Among("e\u015Fte", -1, 1),
174     new Among("\u0103\u015Fte", -1, 1),
175     new Among("eze", -1, 1),
176     new Among("ai", -1, 1),
177     new Among("eai", 19, 1),
178     new Among("iai", 19, 1),
179     new Among("sei", -1, 2),
180     new Among("e\u015Fti", -1, 1),
181     new Among("\u0103\u015Fti", -1, 1),
182     new Among("ui", -1, 1),
183     new Among("ezi", -1, 1),
184     new Among("\u00E2i", -1, 1),
185     new Among("a\u015Fi", -1, 1),
186     new Among("se\u015Fi", -1, 2),
187     new Among("ase\u015Fi", 29, 1),
188     new Among("sese\u015Fi", 29, 2),
189     new Among("ise\u015Fi", 29, 1),
190     new Among("use\u015Fi", 29, 1),
191     new Among("\u00E2se\u015Fi", 29, 1),
192     new Among("i\u015Fi", -1, 1),
193     new Among("u\u015Fi", -1, 1),
194     new Among("\u00E2\u015Fi", -1, 1),
195     new Among("a\u0163i", -1, 2),
196     new Among("ea\u0163i", 38, 1),
197     new Among("ia\u0163i", 38, 1),
198     new Among("e\u0163i", -1, 2),
199     new Among("i\u0163i", -1, 2),
200     new Among("\u00E2\u0163i", -1, 2),
201     new Among("ar\u0103\u0163i", -1, 1),
202     new Among("ser\u0103\u0163i", -1, 2),
203     new Among("aser\u0103\u0163i", 45, 1),
204     new Among("seser\u0103\u0163i", 45, 2),
205     new Among("iser\u0103\u0163i", 45, 1),
206     new Among("user\u0103\u0163i", 45, 1),
207     new Among("\u00E2ser\u0103\u0163i", 45, 1),
208     new Among("ir\u0103\u0163i", -1, 1),
209     new Among("ur\u0103\u0163i", -1, 1),
210     new Among("\u00E2r\u0103\u0163i", -1, 1),
211     new Among("am", -1, 1),
212     new Among("eam", 54, 1),
213     new Among("iam", 54, 1),
214     new Among("em", -1, 2),
215     new Among("asem", 57, 1),
216     new Among("sesem", 57, 2),
217     new Among("isem", 57, 1),
218     new Among("usem", 57, 1),
219     new Among("\u00E2sem", 57, 1),
220     new Among("im", -1, 2),
221     new Among("\u00E2m", -1, 2),
222     new Among("\u0103m", -1, 2),
223     new Among("ar\u0103m", 65, 1),
224     new Among("ser\u0103m", 65, 2),
225     new Among("aser\u0103m", 67, 1),
226     new Among("seser\u0103m", 67, 2),
227     new Among("iser\u0103m", 67, 1),
228     new Among("user\u0103m", 67, 1),
229     new Among("\u00E2ser\u0103m", 67, 1),
230     new Among("ir\u0103m", 65, 1),
231     new Among("ur\u0103m", 65, 1),
232     new Among("\u00E2r\u0103m", 65, 1),
233     new Among("au", -1, 1),
234     new Among("eau", 76, 1),
235     new Among("iau", 76, 1),
236     new Among("indu", -1, 1),
237     new Among("\u00E2ndu", -1, 1),
238     new Among("ez", -1, 1),
239     new Among("easc\u0103", -1, 1),
240     new Among("ar\u0103", -1, 1),
241     new Among("ser\u0103", -1, 2),
242     new Among("aser\u0103", 84, 1),
243     new Among("seser\u0103", 84, 2),
244     new Among("iser\u0103", 84, 1),
245     new Among("user\u0103", 84, 1),
246     new Among("\u00E2ser\u0103", 84, 1),
247     new Among("ir\u0103", -1, 1),
248     new Among("ur\u0103", -1, 1),
249     new Among("\u00E2r\u0103", -1, 1),
250     new Among("eaz\u0103", -1, 1)
251   };
252 
253   private static final Among a_5[] = {
254     new Among("a", -1, 1),
255     new Among("e", -1, 1),
256     new Among("ie", 1, 1),
257     new Among("i", -1, 1),
258     new Among("\u0103", -1, 1)
259   };
260 
261   private static final char g_v[] = {
262     17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 32, 0, 0, 4
263   };
264 
265   private boolean B_standard_suffix_removed;
266   private int I_p2;
267   private int I_p1;
268   private int I_pV;
269 
r_prelude()270   private boolean r_prelude() {
271     while (true) {
272       int v_1 = cursor;
273       lab0:
274       {
275         golab1:
276         while (true) {
277           int v_2 = cursor;
278           lab2:
279           {
280             if (!(in_grouping(g_v, 97, 259))) {
281               break lab2;
282             }
283             bra = cursor;
284             lab3:
285             {
286               int v_3 = cursor;
287               lab4:
288               {
289                 if (!(eq_s("u"))) {
290                   break lab4;
291                 }
292                 ket = cursor;
293                 if (!(in_grouping(g_v, 97, 259))) {
294                   break lab4;
295                 }
296                 slice_from("U");
297                 break lab3;
298               }
299               cursor = v_3;
300               if (!(eq_s("i"))) {
301                 break lab2;
302               }
303               ket = cursor;
304               if (!(in_grouping(g_v, 97, 259))) {
305                 break lab2;
306               }
307               slice_from("I");
308             }
309             cursor = v_2;
310             break golab1;
311           }
312           cursor = v_2;
313           if (cursor >= limit) {
314             break lab0;
315           }
316           cursor++;
317         }
318         continue;
319       }
320       cursor = v_1;
321       break;
322     }
323     return true;
324   }
325 
r_mark_regions()326   private boolean r_mark_regions() {
327     I_pV = limit;
328     I_p1 = limit;
329     I_p2 = limit;
330     int v_1 = cursor;
331     lab0:
332     {
333       lab1:
334       {
335         int v_2 = cursor;
336         lab2:
337         {
338           if (!(in_grouping(g_v, 97, 259))) {
339             break lab2;
340           }
341           lab3:
342           {
343             int v_3 = cursor;
344             lab4:
345             {
346               if (!(out_grouping(g_v, 97, 259))) {
347                 break lab4;
348               }
349               golab5:
350               while (true) {
351                 lab6:
352                 {
353                   if (!(in_grouping(g_v, 97, 259))) {
354                     break lab6;
355                   }
356                   break golab5;
357                 }
358                 if (cursor >= limit) {
359                   break lab4;
360                 }
361                 cursor++;
362               }
363               break lab3;
364             }
365             cursor = v_3;
366             if (!(in_grouping(g_v, 97, 259))) {
367               break lab2;
368             }
369             golab7:
370             while (true) {
371               lab8:
372               {
373                 if (!(out_grouping(g_v, 97, 259))) {
374                   break lab8;
375                 }
376                 break golab7;
377               }
378               if (cursor >= limit) {
379                 break lab2;
380               }
381               cursor++;
382             }
383           }
384           break lab1;
385         }
386         cursor = v_2;
387         if (!(out_grouping(g_v, 97, 259))) {
388           break lab0;
389         }
390         lab9:
391         {
392           int v_6 = cursor;
393           lab10:
394           {
395             if (!(out_grouping(g_v, 97, 259))) {
396               break lab10;
397             }
398             golab11:
399             while (true) {
400               lab12:
401               {
402                 if (!(in_grouping(g_v, 97, 259))) {
403                   break lab12;
404                 }
405                 break golab11;
406               }
407               if (cursor >= limit) {
408                 break lab10;
409               }
410               cursor++;
411             }
412             break lab9;
413           }
414           cursor = v_6;
415           if (!(in_grouping(g_v, 97, 259))) {
416             break lab0;
417           }
418           if (cursor >= limit) {
419             break lab0;
420           }
421           cursor++;
422         }
423       }
424       I_pV = cursor;
425     }
426     cursor = v_1;
427     int v_8 = cursor;
428     lab13:
429     {
430       golab14:
431       while (true) {
432         lab15:
433         {
434           if (!(in_grouping(g_v, 97, 259))) {
435             break lab15;
436           }
437           break golab14;
438         }
439         if (cursor >= limit) {
440           break lab13;
441         }
442         cursor++;
443       }
444       golab16:
445       while (true) {
446         lab17:
447         {
448           if (!(out_grouping(g_v, 97, 259))) {
449             break lab17;
450           }
451           break golab16;
452         }
453         if (cursor >= limit) {
454           break lab13;
455         }
456         cursor++;
457       }
458       I_p1 = cursor;
459       golab18:
460       while (true) {
461         lab19:
462         {
463           if (!(in_grouping(g_v, 97, 259))) {
464             break lab19;
465           }
466           break golab18;
467         }
468         if (cursor >= limit) {
469           break lab13;
470         }
471         cursor++;
472       }
473       golab20:
474       while (true) {
475         lab21:
476         {
477           if (!(out_grouping(g_v, 97, 259))) {
478             break lab21;
479           }
480           break golab20;
481         }
482         if (cursor >= limit) {
483           break lab13;
484         }
485         cursor++;
486       }
487       I_p2 = cursor;
488     }
489     cursor = v_8;
490     return true;
491   }
492 
r_postlude()493   private boolean r_postlude() {
494     int among_var;
495     while (true) {
496       int v_1 = cursor;
497       lab0:
498       {
499         bra = cursor;
500         among_var = find_among(a_0);
501         if (among_var == 0) {
502           break lab0;
503         }
504         ket = cursor;
505         switch (among_var) {
506           case 1:
507             slice_from("i");
508             break;
509           case 2:
510             slice_from("u");
511             break;
512           case 3:
513             if (cursor >= limit) {
514               break lab0;
515             }
516             cursor++;
517             break;
518         }
519         continue;
520       }
521       cursor = v_1;
522       break;
523     }
524     return true;
525   }
526 
r_RV()527   private boolean r_RV() {
528     if (!(I_pV <= cursor)) {
529       return false;
530     }
531     return true;
532   }
533 
r_R1()534   private boolean r_R1() {
535     if (!(I_p1 <= cursor)) {
536       return false;
537     }
538     return true;
539   }
540 
r_R2()541   private boolean r_R2() {
542     if (!(I_p2 <= cursor)) {
543       return false;
544     }
545     return true;
546   }
547 
r_step_0()548   private boolean r_step_0() {
549     int among_var;
550     ket = cursor;
551     among_var = find_among_b(a_1);
552     if (among_var == 0) {
553       return false;
554     }
555     bra = cursor;
556     if (!r_R1()) {
557       return false;
558     }
559     switch (among_var) {
560       case 1:
561         slice_del();
562         break;
563       case 2:
564         slice_from("a");
565         break;
566       case 3:
567         slice_from("e");
568         break;
569       case 4:
570         slice_from("i");
571         break;
572       case 5:
573         {
574           int v_1 = limit - cursor;
575           lab0:
576           {
577             if (!(eq_s_b("ab"))) {
578               break lab0;
579             }
580             return false;
581           }
582           cursor = limit - v_1;
583         }
584         slice_from("i");
585         break;
586       case 6:
587         slice_from("at");
588         break;
589       case 7:
590         slice_from("a\u0163i");
591         break;
592     }
593     return true;
594   }
595 
r_combo_suffix()596   private boolean r_combo_suffix() {
597     int among_var;
598     int v_1 = limit - cursor;
599     ket = cursor;
600     among_var = find_among_b(a_2);
601     if (among_var == 0) {
602       return false;
603     }
604     bra = cursor;
605     if (!r_R1()) {
606       return false;
607     }
608     switch (among_var) {
609       case 1:
610         slice_from("abil");
611         break;
612       case 2:
613         slice_from("ibil");
614         break;
615       case 3:
616         slice_from("iv");
617         break;
618       case 4:
619         slice_from("ic");
620         break;
621       case 5:
622         slice_from("at");
623         break;
624       case 6:
625         slice_from("it");
626         break;
627     }
628     B_standard_suffix_removed = true;
629     cursor = limit - v_1;
630     return true;
631   }
632 
r_standard_suffix()633   private boolean r_standard_suffix() {
634     int among_var;
635     B_standard_suffix_removed = false;
636     while (true) {
637       int v_1 = limit - cursor;
638       lab0:
639       {
640         if (!r_combo_suffix()) {
641           break lab0;
642         }
643         continue;
644       }
645       cursor = limit - v_1;
646       break;
647     }
648     ket = cursor;
649     among_var = find_among_b(a_3);
650     if (among_var == 0) {
651       return false;
652     }
653     bra = cursor;
654     if (!r_R2()) {
655       return false;
656     }
657     switch (among_var) {
658       case 1:
659         slice_del();
660         break;
661       case 2:
662         if (!(eq_s_b("\u0163"))) {
663           return false;
664         }
665         bra = cursor;
666         slice_from("t");
667         break;
668       case 3:
669         slice_from("ist");
670         break;
671     }
672     B_standard_suffix_removed = true;
673     return true;
674   }
675 
r_verb_suffix()676   private boolean r_verb_suffix() {
677     int among_var;
678     if (cursor < I_pV) {
679       return false;
680     }
681     int v_2 = limit_backward;
682     limit_backward = I_pV;
683     ket = cursor;
684     among_var = find_among_b(a_4);
685     if (among_var == 0) {
686       limit_backward = v_2;
687       return false;
688     }
689     bra = cursor;
690     switch (among_var) {
691       case 1:
692         lab0:
693         {
694           int v_3 = limit - cursor;
695           lab1:
696           {
697             if (!(out_grouping_b(g_v, 97, 259))) {
698               break lab1;
699             }
700             break lab0;
701           }
702           cursor = limit - v_3;
703           if (!(eq_s_b("u"))) {
704             limit_backward = v_2;
705             return false;
706           }
707         }
708         slice_del();
709         break;
710       case 2:
711         slice_del();
712         break;
713     }
714     limit_backward = v_2;
715     return true;
716   }
717 
r_vowel_suffix()718   private boolean r_vowel_suffix() {
719     ket = cursor;
720     if (find_among_b(a_5) == 0) {
721       return false;
722     }
723     bra = cursor;
724     if (!r_RV()) {
725       return false;
726     }
727     slice_del();
728     return true;
729   }
730 
731   @Override
stem()732   public boolean stem() {
733     int v_1 = cursor;
734     r_prelude();
735     cursor = v_1;
736     r_mark_regions();
737     limit_backward = cursor;
738     cursor = limit;
739     int v_3 = limit - cursor;
740     r_step_0();
741     cursor = limit - v_3;
742     int v_4 = limit - cursor;
743     r_standard_suffix();
744     cursor = limit - v_4;
745     int v_5 = limit - cursor;
746     lab0:
747     {
748       lab1:
749       {
750         int v_6 = limit - cursor;
751         lab2:
752         {
753           if (!(B_standard_suffix_removed)) {
754             break lab2;
755           }
756           break lab1;
757         }
758         cursor = limit - v_6;
759         if (!r_verb_suffix()) {
760           break lab0;
761         }
762       }
763     }
764     cursor = limit - v_5;
765     int v_7 = limit - cursor;
766     r_vowel_suffix();
767     cursor = limit - v_7;
768     cursor = limit_backward;
769     int v_8 = cursor;
770     r_postlude();
771     cursor = v_8;
772     return true;
773   }
774 
775   @Override
equals(Object o)776   public boolean equals(Object o) {
777     return o instanceof RomanianStemmer;
778   }
779 
780   @Override
hashCode()781   public int hashCode() {
782     return RomanianStemmer.class.getName().hashCode();
783   }
784 }
785