xref: /Lucene/lucene/analysis/common/src/java/org/tartarus/snowball/ext/SpanishStemmer.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 SpanishStemmer 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, 6),
21     new Among("\u00E1", 0, 1),
22     new Among("\u00E9", 0, 2),
23     new Among("\u00ED", 0, 3),
24     new Among("\u00F3", 0, 4),
25     new Among("\u00FA", 0, 5)
26   };
27 
28   private static final Among a_1[] = {
29     new Among("la", -1, -1),
30     new Among("sela", 0, -1),
31     new Among("le", -1, -1),
32     new Among("me", -1, -1),
33     new Among("se", -1, -1),
34     new Among("lo", -1, -1),
35     new Among("selo", 5, -1),
36     new Among("las", -1, -1),
37     new Among("selas", 7, -1),
38     new Among("les", -1, -1),
39     new Among("los", -1, -1),
40     new Among("selos", 10, -1),
41     new Among("nos", -1, -1)
42   };
43 
44   private static final Among a_2[] = {
45     new Among("ando", -1, 6),
46     new Among("iendo", -1, 6),
47     new Among("yendo", -1, 7),
48     new Among("\u00E1ndo", -1, 2),
49     new Among("i\u00E9ndo", -1, 1),
50     new Among("ar", -1, 6),
51     new Among("er", -1, 6),
52     new Among("ir", -1, 6),
53     new Among("\u00E1r", -1, 3),
54     new Among("\u00E9r", -1, 4),
55     new Among("\u00EDr", -1, 5)
56   };
57 
58   private static final Among a_3[] = {
59     new Among("ic", -1, -1),
60     new Among("ad", -1, -1),
61     new Among("os", -1, -1),
62     new Among("iv", -1, 1)
63   };
64 
65   private static final Among a_4[] = {
66     new Among("able", -1, 1), new Among("ible", -1, 1), new Among("ante", -1, 1)
67   };
68 
69   private static final Among a_5[] = {
70     new Among("ic", -1, 1), new Among("abil", -1, 1), new Among("iv", -1, 1)
71   };
72 
73   private static final Among a_6[] = {
74     new Among("ica", -1, 1),
75     new Among("ancia", -1, 2),
76     new Among("encia", -1, 5),
77     new Among("adora", -1, 2),
78     new Among("osa", -1, 1),
79     new Among("ista", -1, 1),
80     new Among("iva", -1, 9),
81     new Among("anza", -1, 1),
82     new Among("log\u00EDa", -1, 3),
83     new Among("idad", -1, 8),
84     new Among("able", -1, 1),
85     new Among("ible", -1, 1),
86     new Among("ante", -1, 2),
87     new Among("mente", -1, 7),
88     new Among("amente", 13, 6),
89     new Among("aci\u00F3n", -1, 2),
90     new Among("uci\u00F3n", -1, 4),
91     new Among("ico", -1, 1),
92     new Among("ismo", -1, 1),
93     new Among("oso", -1, 1),
94     new Among("amiento", -1, 1),
95     new Among("imiento", -1, 1),
96     new Among("ivo", -1, 9),
97     new Among("ador", -1, 2),
98     new Among("icas", -1, 1),
99     new Among("ancias", -1, 2),
100     new Among("encias", -1, 5),
101     new Among("adoras", -1, 2),
102     new Among("osas", -1, 1),
103     new Among("istas", -1, 1),
104     new Among("ivas", -1, 9),
105     new Among("anzas", -1, 1),
106     new Among("log\u00EDas", -1, 3),
107     new Among("idades", -1, 8),
108     new Among("ables", -1, 1),
109     new Among("ibles", -1, 1),
110     new Among("aciones", -1, 2),
111     new Among("uciones", -1, 4),
112     new Among("adores", -1, 2),
113     new Among("antes", -1, 2),
114     new Among("icos", -1, 1),
115     new Among("ismos", -1, 1),
116     new Among("osos", -1, 1),
117     new Among("amientos", -1, 1),
118     new Among("imientos", -1, 1),
119     new Among("ivos", -1, 9)
120   };
121 
122   private static final Among a_7[] = {
123     new Among("ya", -1, 1),
124     new Among("ye", -1, 1),
125     new Among("yan", -1, 1),
126     new Among("yen", -1, 1),
127     new Among("yeron", -1, 1),
128     new Among("yendo", -1, 1),
129     new Among("yo", -1, 1),
130     new Among("yas", -1, 1),
131     new Among("yes", -1, 1),
132     new Among("yais", -1, 1),
133     new Among("yamos", -1, 1),
134     new Among("y\u00F3", -1, 1)
135   };
136 
137   private static final Among a_8[] = {
138     new Among("aba", -1, 2),
139     new Among("ada", -1, 2),
140     new Among("ida", -1, 2),
141     new Among("ara", -1, 2),
142     new Among("iera", -1, 2),
143     new Among("\u00EDa", -1, 2),
144     new Among("ar\u00EDa", 5, 2),
145     new Among("er\u00EDa", 5, 2),
146     new Among("ir\u00EDa", 5, 2),
147     new Among("ad", -1, 2),
148     new Among("ed", -1, 2),
149     new Among("id", -1, 2),
150     new Among("ase", -1, 2),
151     new Among("iese", -1, 2),
152     new Among("aste", -1, 2),
153     new Among("iste", -1, 2),
154     new Among("an", -1, 2),
155     new Among("aban", 16, 2),
156     new Among("aran", 16, 2),
157     new Among("ieran", 16, 2),
158     new Among("\u00EDan", 16, 2),
159     new Among("ar\u00EDan", 20, 2),
160     new Among("er\u00EDan", 20, 2),
161     new Among("ir\u00EDan", 20, 2),
162     new Among("en", -1, 1),
163     new Among("asen", 24, 2),
164     new Among("iesen", 24, 2),
165     new Among("aron", -1, 2),
166     new Among("ieron", -1, 2),
167     new Among("ar\u00E1n", -1, 2),
168     new Among("er\u00E1n", -1, 2),
169     new Among("ir\u00E1n", -1, 2),
170     new Among("ado", -1, 2),
171     new Among("ido", -1, 2),
172     new Among("ando", -1, 2),
173     new Among("iendo", -1, 2),
174     new Among("ar", -1, 2),
175     new Among("er", -1, 2),
176     new Among("ir", -1, 2),
177     new Among("as", -1, 2),
178     new Among("abas", 39, 2),
179     new Among("adas", 39, 2),
180     new Among("idas", 39, 2),
181     new Among("aras", 39, 2),
182     new Among("ieras", 39, 2),
183     new Among("\u00EDas", 39, 2),
184     new Among("ar\u00EDas", 45, 2),
185     new Among("er\u00EDas", 45, 2),
186     new Among("ir\u00EDas", 45, 2),
187     new Among("es", -1, 1),
188     new Among("ases", 49, 2),
189     new Among("ieses", 49, 2),
190     new Among("abais", -1, 2),
191     new Among("arais", -1, 2),
192     new Among("ierais", -1, 2),
193     new Among("\u00EDais", -1, 2),
194     new Among("ar\u00EDais", 55, 2),
195     new Among("er\u00EDais", 55, 2),
196     new Among("ir\u00EDais", 55, 2),
197     new Among("aseis", -1, 2),
198     new Among("ieseis", -1, 2),
199     new Among("asteis", -1, 2),
200     new Among("isteis", -1, 2),
201     new Among("\u00E1is", -1, 2),
202     new Among("\u00E9is", -1, 1),
203     new Among("ar\u00E9is", 64, 2),
204     new Among("er\u00E9is", 64, 2),
205     new Among("ir\u00E9is", 64, 2),
206     new Among("ados", -1, 2),
207     new Among("idos", -1, 2),
208     new Among("amos", -1, 2),
209     new Among("\u00E1bamos", 70, 2),
210     new Among("\u00E1ramos", 70, 2),
211     new Among("i\u00E9ramos", 70, 2),
212     new Among("\u00EDamos", 70, 2),
213     new Among("ar\u00EDamos", 74, 2),
214     new Among("er\u00EDamos", 74, 2),
215     new Among("ir\u00EDamos", 74, 2),
216     new Among("emos", -1, 1),
217     new Among("aremos", 78, 2),
218     new Among("eremos", 78, 2),
219     new Among("iremos", 78, 2),
220     new Among("\u00E1semos", 78, 2),
221     new Among("i\u00E9semos", 78, 2),
222     new Among("imos", -1, 2),
223     new Among("ar\u00E1s", -1, 2),
224     new Among("er\u00E1s", -1, 2),
225     new Among("ir\u00E1s", -1, 2),
226     new Among("\u00EDs", -1, 2),
227     new Among("ar\u00E1", -1, 2),
228     new Among("er\u00E1", -1, 2),
229     new Among("ir\u00E1", -1, 2),
230     new Among("ar\u00E9", -1, 2),
231     new Among("er\u00E9", -1, 2),
232     new Among("ir\u00E9", -1, 2),
233     new Among("i\u00F3", -1, 2)
234   };
235 
236   private static final Among a_9[] = {
237     new Among("a", -1, 1),
238     new Among("e", -1, 2),
239     new Among("o", -1, 1),
240     new Among("os", -1, 1),
241     new Among("\u00E1", -1, 1),
242     new Among("\u00E9", -1, 2),
243     new Among("\u00ED", -1, 1),
244     new Among("\u00F3", -1, 1)
245   };
246 
247   private static final char g_v[] = {
248     17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 10
249   };
250 
251   private int I_p2;
252   private int I_p1;
253   private int I_pV;
254 
r_mark_regions()255   private boolean r_mark_regions() {
256     I_pV = limit;
257     I_p1 = limit;
258     I_p2 = limit;
259     int v_1 = cursor;
260     lab0:
261     {
262       lab1:
263       {
264         int v_2 = cursor;
265         lab2:
266         {
267           if (!(in_grouping(g_v, 97, 252))) {
268             break lab2;
269           }
270           lab3:
271           {
272             int v_3 = cursor;
273             lab4:
274             {
275               if (!(out_grouping(g_v, 97, 252))) {
276                 break lab4;
277               }
278               golab5:
279               while (true) {
280                 lab6:
281                 {
282                   if (!(in_grouping(g_v, 97, 252))) {
283                     break lab6;
284                   }
285                   break golab5;
286                 }
287                 if (cursor >= limit) {
288                   break lab4;
289                 }
290                 cursor++;
291               }
292               break lab3;
293             }
294             cursor = v_3;
295             if (!(in_grouping(g_v, 97, 252))) {
296               break lab2;
297             }
298             golab7:
299             while (true) {
300               lab8:
301               {
302                 if (!(out_grouping(g_v, 97, 252))) {
303                   break lab8;
304                 }
305                 break golab7;
306               }
307               if (cursor >= limit) {
308                 break lab2;
309               }
310               cursor++;
311             }
312           }
313           break lab1;
314         }
315         cursor = v_2;
316         if (!(out_grouping(g_v, 97, 252))) {
317           break lab0;
318         }
319         lab9:
320         {
321           int v_6 = cursor;
322           lab10:
323           {
324             if (!(out_grouping(g_v, 97, 252))) {
325               break lab10;
326             }
327             golab11:
328             while (true) {
329               lab12:
330               {
331                 if (!(in_grouping(g_v, 97, 252))) {
332                   break lab12;
333                 }
334                 break golab11;
335               }
336               if (cursor >= limit) {
337                 break lab10;
338               }
339               cursor++;
340             }
341             break lab9;
342           }
343           cursor = v_6;
344           if (!(in_grouping(g_v, 97, 252))) {
345             break lab0;
346           }
347           if (cursor >= limit) {
348             break lab0;
349           }
350           cursor++;
351         }
352       }
353       I_pV = cursor;
354     }
355     cursor = v_1;
356     int v_8 = cursor;
357     lab13:
358     {
359       golab14:
360       while (true) {
361         lab15:
362         {
363           if (!(in_grouping(g_v, 97, 252))) {
364             break lab15;
365           }
366           break golab14;
367         }
368         if (cursor >= limit) {
369           break lab13;
370         }
371         cursor++;
372       }
373       golab16:
374       while (true) {
375         lab17:
376         {
377           if (!(out_grouping(g_v, 97, 252))) {
378             break lab17;
379           }
380           break golab16;
381         }
382         if (cursor >= limit) {
383           break lab13;
384         }
385         cursor++;
386       }
387       I_p1 = cursor;
388       golab18:
389       while (true) {
390         lab19:
391         {
392           if (!(in_grouping(g_v, 97, 252))) {
393             break lab19;
394           }
395           break golab18;
396         }
397         if (cursor >= limit) {
398           break lab13;
399         }
400         cursor++;
401       }
402       golab20:
403       while (true) {
404         lab21:
405         {
406           if (!(out_grouping(g_v, 97, 252))) {
407             break lab21;
408           }
409           break golab20;
410         }
411         if (cursor >= limit) {
412           break lab13;
413         }
414         cursor++;
415       }
416       I_p2 = cursor;
417     }
418     cursor = v_8;
419     return true;
420   }
421 
r_postlude()422   private boolean r_postlude() {
423     int among_var;
424     while (true) {
425       int v_1 = cursor;
426       lab0:
427       {
428         bra = cursor;
429         among_var = find_among(a_0);
430         if (among_var == 0) {
431           break lab0;
432         }
433         ket = cursor;
434         switch (among_var) {
435           case 1:
436             slice_from("a");
437             break;
438           case 2:
439             slice_from("e");
440             break;
441           case 3:
442             slice_from("i");
443             break;
444           case 4:
445             slice_from("o");
446             break;
447           case 5:
448             slice_from("u");
449             break;
450           case 6:
451             if (cursor >= limit) {
452               break lab0;
453             }
454             cursor++;
455             break;
456         }
457         continue;
458       }
459       cursor = v_1;
460       break;
461     }
462     return true;
463   }
464 
r_RV()465   private boolean r_RV() {
466     if (!(I_pV <= cursor)) {
467       return false;
468     }
469     return true;
470   }
471 
r_R1()472   private boolean r_R1() {
473     if (!(I_p1 <= cursor)) {
474       return false;
475     }
476     return true;
477   }
478 
r_R2()479   private boolean r_R2() {
480     if (!(I_p2 <= cursor)) {
481       return false;
482     }
483     return true;
484   }
485 
r_attached_pronoun()486   private boolean r_attached_pronoun() {
487     int among_var;
488     ket = cursor;
489     if (find_among_b(a_1) == 0) {
490       return false;
491     }
492     bra = cursor;
493     among_var = find_among_b(a_2);
494     if (among_var == 0) {
495       return false;
496     }
497     if (!r_RV()) {
498       return false;
499     }
500     switch (among_var) {
501       case 1:
502         bra = cursor;
503         slice_from("iendo");
504         break;
505       case 2:
506         bra = cursor;
507         slice_from("ando");
508         break;
509       case 3:
510         bra = cursor;
511         slice_from("ar");
512         break;
513       case 4:
514         bra = cursor;
515         slice_from("er");
516         break;
517       case 5:
518         bra = cursor;
519         slice_from("ir");
520         break;
521       case 6:
522         slice_del();
523         break;
524       case 7:
525         if (!(eq_s_b("u"))) {
526           return false;
527         }
528         slice_del();
529         break;
530     }
531     return true;
532   }
533 
r_standard_suffix()534   private boolean r_standard_suffix() {
535     int among_var;
536     ket = cursor;
537     among_var = find_among_b(a_6);
538     if (among_var == 0) {
539       return false;
540     }
541     bra = cursor;
542     switch (among_var) {
543       case 1:
544         if (!r_R2()) {
545           return false;
546         }
547         slice_del();
548         break;
549       case 2:
550         if (!r_R2()) {
551           return false;
552         }
553         slice_del();
554         int v_1 = limit - cursor;
555         lab0:
556         {
557           ket = cursor;
558           if (!(eq_s_b("ic"))) {
559             cursor = limit - v_1;
560             break lab0;
561           }
562           bra = cursor;
563           if (!r_R2()) {
564             cursor = limit - v_1;
565             break lab0;
566           }
567           slice_del();
568         }
569         break;
570       case 3:
571         if (!r_R2()) {
572           return false;
573         }
574         slice_from("log");
575         break;
576       case 4:
577         if (!r_R2()) {
578           return false;
579         }
580         slice_from("u");
581         break;
582       case 5:
583         if (!r_R2()) {
584           return false;
585         }
586         slice_from("ente");
587         break;
588       case 6:
589         if (!r_R1()) {
590           return false;
591         }
592         slice_del();
593         int v_2 = limit - cursor;
594         lab1:
595         {
596           ket = cursor;
597           among_var = find_among_b(a_3);
598           if (among_var == 0) {
599             cursor = limit - v_2;
600             break lab1;
601           }
602           bra = cursor;
603           if (!r_R2()) {
604             cursor = limit - v_2;
605             break lab1;
606           }
607           slice_del();
608           switch (among_var) {
609             case 1:
610               ket = cursor;
611               if (!(eq_s_b("at"))) {
612                 cursor = limit - v_2;
613                 break lab1;
614               }
615               bra = cursor;
616               if (!r_R2()) {
617                 cursor = limit - v_2;
618                 break lab1;
619               }
620               slice_del();
621               break;
622           }
623         }
624         break;
625       case 7:
626         if (!r_R2()) {
627           return false;
628         }
629         slice_del();
630         int v_3 = limit - cursor;
631         lab2:
632         {
633           ket = cursor;
634           if (find_among_b(a_4) == 0) {
635             cursor = limit - v_3;
636             break lab2;
637           }
638           bra = cursor;
639           if (!r_R2()) {
640             cursor = limit - v_3;
641             break lab2;
642           }
643           slice_del();
644         }
645         break;
646       case 8:
647         if (!r_R2()) {
648           return false;
649         }
650         slice_del();
651         int v_4 = limit - cursor;
652         lab3:
653         {
654           ket = cursor;
655           if (find_among_b(a_5) == 0) {
656             cursor = limit - v_4;
657             break lab3;
658           }
659           bra = cursor;
660           if (!r_R2()) {
661             cursor = limit - v_4;
662             break lab3;
663           }
664           slice_del();
665         }
666         break;
667       case 9:
668         if (!r_R2()) {
669           return false;
670         }
671         slice_del();
672         int v_5 = limit - cursor;
673         lab4:
674         {
675           ket = cursor;
676           if (!(eq_s_b("at"))) {
677             cursor = limit - v_5;
678             break lab4;
679           }
680           bra = cursor;
681           if (!r_R2()) {
682             cursor = limit - v_5;
683             break lab4;
684           }
685           slice_del();
686         }
687         break;
688     }
689     return true;
690   }
691 
r_y_verb_suffix()692   private boolean r_y_verb_suffix() {
693     if (cursor < I_pV) {
694       return false;
695     }
696     int v_2 = limit_backward;
697     limit_backward = I_pV;
698     ket = cursor;
699     if (find_among_b(a_7) == 0) {
700       limit_backward = v_2;
701       return false;
702     }
703     bra = cursor;
704     limit_backward = v_2;
705     if (!(eq_s_b("u"))) {
706       return false;
707     }
708     slice_del();
709     return true;
710   }
711 
r_verb_suffix()712   private boolean r_verb_suffix() {
713     int among_var;
714     if (cursor < I_pV) {
715       return false;
716     }
717     int v_2 = limit_backward;
718     limit_backward = I_pV;
719     ket = cursor;
720     among_var = find_among_b(a_8);
721     if (among_var == 0) {
722       limit_backward = v_2;
723       return false;
724     }
725     bra = cursor;
726     limit_backward = v_2;
727     switch (among_var) {
728       case 1:
729         int v_3 = limit - cursor;
730         lab0:
731         {
732           if (!(eq_s_b("u"))) {
733             cursor = limit - v_3;
734             break lab0;
735           }
736           int v_4 = limit - cursor;
737           if (!(eq_s_b("g"))) {
738             cursor = limit - v_3;
739             break lab0;
740           }
741           cursor = limit - v_4;
742         }
743         bra = cursor;
744         slice_del();
745         break;
746       case 2:
747         slice_del();
748         break;
749     }
750     return true;
751   }
752 
r_residual_suffix()753   private boolean r_residual_suffix() {
754     int among_var;
755     ket = cursor;
756     among_var = find_among_b(a_9);
757     if (among_var == 0) {
758       return false;
759     }
760     bra = cursor;
761     switch (among_var) {
762       case 1:
763         if (!r_RV()) {
764           return false;
765         }
766         slice_del();
767         break;
768       case 2:
769         if (!r_RV()) {
770           return false;
771         }
772         slice_del();
773         int v_1 = limit - cursor;
774         lab0:
775         {
776           ket = cursor;
777           if (!(eq_s_b("u"))) {
778             cursor = limit - v_1;
779             break lab0;
780           }
781           bra = cursor;
782           int v_2 = limit - cursor;
783           if (!(eq_s_b("g"))) {
784             cursor = limit - v_1;
785             break lab0;
786           }
787           cursor = limit - v_2;
788           if (!r_RV()) {
789             cursor = limit - v_1;
790             break lab0;
791           }
792           slice_del();
793         }
794         break;
795     }
796     return true;
797   }
798 
799   @Override
stem()800   public boolean stem() {
801     r_mark_regions();
802     limit_backward = cursor;
803     cursor = limit;
804     int v_2 = limit - cursor;
805     r_attached_pronoun();
806     cursor = limit - v_2;
807     int v_3 = limit - cursor;
808     lab0:
809     {
810       lab1:
811       {
812         int v_4 = limit - cursor;
813         lab2:
814         {
815           if (!r_standard_suffix()) {
816             break lab2;
817           }
818           break lab1;
819         }
820         cursor = limit - v_4;
821         lab3:
822         {
823           if (!r_y_verb_suffix()) {
824             break lab3;
825           }
826           break lab1;
827         }
828         cursor = limit - v_4;
829         if (!r_verb_suffix()) {
830           break lab0;
831         }
832       }
833     }
834     cursor = limit - v_3;
835     int v_5 = limit - cursor;
836     r_residual_suffix();
837     cursor = limit - v_5;
838     cursor = limit_backward;
839     int v_6 = cursor;
840     r_postlude();
841     cursor = v_6;
842     return true;
843   }
844 
845   @Override
equals(Object o)846   public boolean equals(Object o) {
847     return o instanceof SpanishStemmer;
848   }
849 
850   @Override
hashCode()851   public int hashCode() {
852     return SpanishStemmer.class.getName().hashCode();
853   }
854 }
855