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