xref: /Lucene/lucene/analysis/common/src/java/org/tartarus/snowball/ext/SwedishStemmer.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 SwedishStemmer 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("a", -1, 1),
21     new Among("arna", 0, 1),
22     new Among("erna", 0, 1),
23     new Among("heterna", 2, 1),
24     new Among("orna", 0, 1),
25     new Among("ad", -1, 1),
26     new Among("e", -1, 1),
27     new Among("ade", 6, 1),
28     new Among("ande", 6, 1),
29     new Among("arne", 6, 1),
30     new Among("are", 6, 1),
31     new Among("aste", 6, 1),
32     new Among("en", -1, 1),
33     new Among("anden", 12, 1),
34     new Among("aren", 12, 1),
35     new Among("heten", 12, 1),
36     new Among("ern", -1, 1),
37     new Among("ar", -1, 1),
38     new Among("er", -1, 1),
39     new Among("heter", 18, 1),
40     new Among("or", -1, 1),
41     new Among("s", -1, 2),
42     new Among("as", 21, 1),
43     new Among("arnas", 22, 1),
44     new Among("ernas", 22, 1),
45     new Among("ornas", 22, 1),
46     new Among("es", 21, 1),
47     new Among("ades", 26, 1),
48     new Among("andes", 26, 1),
49     new Among("ens", 21, 1),
50     new Among("arens", 29, 1),
51     new Among("hetens", 29, 1),
52     new Among("erns", 21, 1),
53     new Among("at", -1, 1),
54     new Among("andet", -1, 1),
55     new Among("het", -1, 1),
56     new Among("ast", -1, 1)
57   };
58 
59   private static final Among a_1[] = {
60     new Among("dd", -1, -1),
61     new Among("gd", -1, -1),
62     new Among("nn", -1, -1),
63     new Among("dt", -1, -1),
64     new Among("gt", -1, -1),
65     new Among("kt", -1, -1),
66     new Among("tt", -1, -1)
67   };
68 
69   private static final Among a_2[] = {
70     new Among("ig", -1, 1),
71     new Among("lig", 0, 1),
72     new Among("els", -1, 1),
73     new Among("fullt", -1, 3),
74     new Among("l\u00F6st", -1, 2)
75   };
76 
77   private static final char g_v[] = {17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 32};
78 
79   private static final char g_s_ending[] = {119, 127, 149};
80 
81   private int I_x;
82   private int I_p1;
83 
r_mark_regions()84   private boolean r_mark_regions() {
85     I_p1 = limit;
86     int v_1 = cursor;
87     {
88       int c = cursor + 3;
89       if (0 > c || c > limit) {
90         return false;
91       }
92       cursor = c;
93     }
94     I_x = cursor;
95     cursor = v_1;
96     golab0:
97     while (true) {
98       int v_2 = cursor;
99       lab1:
100       {
101         if (!(in_grouping(g_v, 97, 246))) {
102           break lab1;
103         }
104         cursor = v_2;
105         break golab0;
106       }
107       cursor = v_2;
108       if (cursor >= limit) {
109         return false;
110       }
111       cursor++;
112     }
113     golab2:
114     while (true) {
115       lab3:
116       {
117         if (!(out_grouping(g_v, 97, 246))) {
118           break lab3;
119         }
120         break golab2;
121       }
122       if (cursor >= limit) {
123         return false;
124       }
125       cursor++;
126     }
127     I_p1 = cursor;
128     lab4:
129     {
130       if (!(I_p1 < I_x)) {
131         break lab4;
132       }
133       I_p1 = I_x;
134     }
135     return true;
136   }
137 
r_main_suffix()138   private boolean r_main_suffix() {
139     int among_var;
140     if (cursor < I_p1) {
141       return false;
142     }
143     int v_2 = limit_backward;
144     limit_backward = I_p1;
145     ket = cursor;
146     among_var = find_among_b(a_0);
147     if (among_var == 0) {
148       limit_backward = v_2;
149       return false;
150     }
151     bra = cursor;
152     limit_backward = v_2;
153     switch (among_var) {
154       case 1:
155         slice_del();
156         break;
157       case 2:
158         if (!(in_grouping_b(g_s_ending, 98, 121))) {
159           return false;
160         }
161         slice_del();
162         break;
163     }
164     return true;
165   }
166 
r_consonant_pair()167   private boolean r_consonant_pair() {
168     if (cursor < I_p1) {
169       return false;
170     }
171     int v_2 = limit_backward;
172     limit_backward = I_p1;
173     int v_3 = limit - cursor;
174     if (find_among_b(a_1) == 0) {
175       limit_backward = v_2;
176       return false;
177     }
178     cursor = limit - v_3;
179     ket = cursor;
180     if (cursor <= limit_backward) {
181       limit_backward = v_2;
182       return false;
183     }
184     cursor--;
185     bra = cursor;
186     slice_del();
187     limit_backward = v_2;
188     return true;
189   }
190 
r_other_suffix()191   private boolean r_other_suffix() {
192     int among_var;
193     if (cursor < I_p1) {
194       return false;
195     }
196     int v_2 = limit_backward;
197     limit_backward = I_p1;
198     ket = cursor;
199     among_var = find_among_b(a_2);
200     if (among_var == 0) {
201       limit_backward = v_2;
202       return false;
203     }
204     bra = cursor;
205     switch (among_var) {
206       case 1:
207         slice_del();
208         break;
209       case 2:
210         slice_from("l\u00F6s");
211         break;
212       case 3:
213         slice_from("full");
214         break;
215     }
216     limit_backward = v_2;
217     return true;
218   }
219 
220   @Override
stem()221   public boolean stem() {
222     int v_1 = cursor;
223     r_mark_regions();
224     cursor = v_1;
225     limit_backward = cursor;
226     cursor = limit;
227     int v_2 = limit - cursor;
228     r_main_suffix();
229     cursor = limit - v_2;
230     int v_3 = limit - cursor;
231     r_consonant_pair();
232     cursor = limit - v_3;
233     int v_4 = limit - cursor;
234     r_other_suffix();
235     cursor = limit - v_4;
236     cursor = limit_backward;
237     return true;
238   }
239 
240   @Override
equals(Object o)241   public boolean equals(Object o) {
242     return o instanceof SwedishStemmer;
243   }
244 
245   @Override
hashCode()246   public int hashCode() {
247     return SwedishStemmer.class.getName().hashCode();
248   }
249 }
250