xapian-core  2.0.0
finnish.cc
Go to the documentation of this file.
1 /* Generated from finnish.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
2 
3 #include <config.h>
4 
5 #define SNOWBALL_RUNTIME_THROW_EXCEPTIONS
6 #include "finnish.h"
7 
8 #include <stddef.h>
9 
11 
12 static int r_tidy(struct SN_env * z);
13 static int r_other_endings(struct SN_env * z);
14 static int r_t_plural(struct SN_env * z);
15 static int r_i_plural(struct SN_env * z);
16 static int r_case_ending(struct SN_env * z);
17 static int r_VI(struct SN_env * z);
18 static int r_LONG(struct SN_env * z);
19 static int r_possessive(struct SN_env * z);
20 static int r_particle_etc(struct SN_env * z);
21 static int r_R2(struct SN_env * z);
22 static int r_mark_regions(struct SN_env * z);
23 
24 static const symbol s_0[] = { 'k', 's', 'e' };
25 static const symbol s_1[] = { 'k', 's', 'i' };
26 static const symbol s_2[] = { 0xC3, 0xA4 };
27 static const symbol s_3[] = { 0xC3, 0xB6 };
28 static const symbol s_4[] = { 'i', 'e' };
29 static const symbol s_5[] = { 'p', 'o' };
30 static const symbol s_6[] = { 'p', 'o' };
31 
32 static const symbol s_0_0[2] = { 'p', 'a' };
33 static const symbol s_0_1[3] = { 's', 't', 'i' };
34 static const symbol s_0_2[4] = { 'k', 'a', 'a', 'n' };
35 static const symbol s_0_3[3] = { 'h', 'a', 'n' };
36 static const symbol s_0_4[3] = { 'k', 'i', 'n' };
37 static const symbol s_0_5[4] = { 'h', 0xC3, 0xA4, 'n' };
38 static const symbol s_0_6[6] = { 'k', 0xC3, 0xA4, 0xC3, 0xA4, 'n' };
39 static const symbol s_0_7[2] = { 'k', 'o' };
40 static const symbol s_0_8[3] = { 'p', 0xC3, 0xA4 };
41 static const symbol s_0_9[3] = { 'k', 0xC3, 0xB6 };
42 static const struct among a_0[10] = {
43 { 2, s_0_0, 0, 1, 0},
44 { 3, s_0_1, 0, 2, 0},
45 { 4, s_0_2, 0, 1, 0},
46 { 3, s_0_3, 0, 1, 0},
47 { 3, s_0_4, 0, 1, 0},
48 { 4, s_0_5, 0, 1, 0},
49 { 6, s_0_6, 0, 1, 0},
50 { 2, s_0_7, 0, 1, 0},
51 { 3, s_0_8, 0, 1, 0},
52 { 3, s_0_9, 0, 1, 0}
53 };
54 
55 static const symbol s_1_0[3] = { 'l', 'l', 'a' };
56 static const symbol s_1_1[2] = { 'n', 'a' };
57 static const symbol s_1_2[3] = { 's', 's', 'a' };
58 static const symbol s_1_3[2] = { 't', 'a' };
59 static const symbol s_1_4[3] = { 'l', 't', 'a' };
60 static const symbol s_1_5[3] = { 's', 't', 'a' };
61 static const struct among a_1[6] = {
62 { 3, s_1_0, 0, -1, 0},
63 { 2, s_1_1, 0, -1, 0},
64 { 3, s_1_2, 0, -1, 0},
65 { 2, s_1_3, 0, -1, 0},
66 { 3, s_1_4, -1, -1, 0},
67 { 3, s_1_5, -2, -1, 0}
68 };
69 
70 static const symbol s_2_0[4] = { 'l', 'l', 0xC3, 0xA4 };
71 static const symbol s_2_1[3] = { 'n', 0xC3, 0xA4 };
72 static const symbol s_2_2[4] = { 's', 's', 0xC3, 0xA4 };
73 static const symbol s_2_3[3] = { 't', 0xC3, 0xA4 };
74 static const symbol s_2_4[4] = { 'l', 't', 0xC3, 0xA4 };
75 static const symbol s_2_5[4] = { 's', 't', 0xC3, 0xA4 };
76 static const struct among a_2[6] = {
77 { 4, s_2_0, 0, -1, 0},
78 { 3, s_2_1, 0, -1, 0},
79 { 4, s_2_2, 0, -1, 0},
80 { 3, s_2_3, 0, -1, 0},
81 { 4, s_2_4, -1, -1, 0},
82 { 4, s_2_5, -2, -1, 0}
83 };
84 
85 static const symbol s_3_0[3] = { 'l', 'l', 'e' };
86 static const symbol s_3_1[3] = { 'i', 'n', 'e' };
87 static const struct among a_3[2] = {
88 { 3, s_3_0, 0, -1, 0},
89 { 3, s_3_1, 0, -1, 0}
90 };
91 
92 static const symbol s_4_0[3] = { 'n', 's', 'a' };
93 static const symbol s_4_1[3] = { 'm', 'm', 'e' };
94 static const symbol s_4_2[3] = { 'n', 'n', 'e' };
95 static const symbol s_4_3[2] = { 'n', 'i' };
96 static const symbol s_4_4[2] = { 's', 'i' };
97 static const symbol s_4_5[2] = { 'a', 'n' };
98 static const symbol s_4_6[2] = { 'e', 'n' };
99 static const symbol s_4_7[3] = { 0xC3, 0xA4, 'n' };
100 static const symbol s_4_8[4] = { 'n', 's', 0xC3, 0xA4 };
101 static const struct among a_4[9] = {
102 { 3, s_4_0, 0, 3, 0},
103 { 3, s_4_1, 0, 3, 0},
104 { 3, s_4_2, 0, 3, 0},
105 { 2, s_4_3, 0, 2, 0},
106 { 2, s_4_4, 0, 1, 0},
107 { 2, s_4_5, 0, 4, 0},
108 { 2, s_4_6, 0, 6, 0},
109 { 3, s_4_7, 0, 5, 0},
110 { 4, s_4_8, 0, 3, 0}
111 };
112 
113 static const symbol s_5_0[2] = { 'a', 'a' };
114 static const symbol s_5_1[2] = { 'e', 'e' };
115 static const symbol s_5_2[2] = { 'i', 'i' };
116 static const symbol s_5_3[2] = { 'o', 'o' };
117 static const symbol s_5_4[2] = { 'u', 'u' };
118 static const symbol s_5_5[4] = { 0xC3, 0xA4, 0xC3, 0xA4 };
119 static const symbol s_5_6[4] = { 0xC3, 0xB6, 0xC3, 0xB6 };
120 static const struct among a_5[7] = {
121 { 2, s_5_0, 0, -1, 0},
122 { 2, s_5_1, 0, -1, 0},
123 { 2, s_5_2, 0, -1, 0},
124 { 2, s_5_3, 0, -1, 0},
125 { 2, s_5_4, 0, -1, 0},
126 { 4, s_5_5, 0, -1, 0},
127 { 4, s_5_6, 0, -1, 0}
128 };
129 
130 static const symbol s_6_0[1] = { 'a' };
131 static const symbol s_6_1[3] = { 'l', 'l', 'a' };
132 static const symbol s_6_2[2] = { 'n', 'a' };
133 static const symbol s_6_3[3] = { 's', 's', 'a' };
134 static const symbol s_6_4[2] = { 't', 'a' };
135 static const symbol s_6_5[3] = { 'l', 't', 'a' };
136 static const symbol s_6_6[3] = { 's', 't', 'a' };
137 static const symbol s_6_7[3] = { 't', 't', 'a' };
138 static const symbol s_6_8[3] = { 'l', 'l', 'e' };
139 static const symbol s_6_9[3] = { 'i', 'n', 'e' };
140 static const symbol s_6_10[3] = { 'k', 's', 'i' };
141 static const symbol s_6_11[1] = { 'n' };
142 static const symbol s_6_12[3] = { 'h', 'a', 'n' };
143 static const symbol s_6_13[3] = { 'd', 'e', 'n' };
144 static const symbol s_6_14[4] = { 's', 'e', 'e', 'n' };
145 static const symbol s_6_15[3] = { 'h', 'e', 'n' };
146 static const symbol s_6_16[4] = { 't', 't', 'e', 'n' };
147 static const symbol s_6_17[3] = { 'h', 'i', 'n' };
148 static const symbol s_6_18[4] = { 's', 'i', 'i', 'n' };
149 static const symbol s_6_19[3] = { 'h', 'o', 'n' };
150 static const symbol s_6_20[4] = { 'h', 0xC3, 0xA4, 'n' };
151 static const symbol s_6_21[4] = { 'h', 0xC3, 0xB6, 'n' };
152 static const symbol s_6_22[2] = { 0xC3, 0xA4 };
153 static const symbol s_6_23[4] = { 'l', 'l', 0xC3, 0xA4 };
154 static const symbol s_6_24[3] = { 'n', 0xC3, 0xA4 };
155 static const symbol s_6_25[4] = { 's', 's', 0xC3, 0xA4 };
156 static const symbol s_6_26[3] = { 't', 0xC3, 0xA4 };
157 static const symbol s_6_27[4] = { 'l', 't', 0xC3, 0xA4 };
158 static const symbol s_6_28[4] = { 's', 't', 0xC3, 0xA4 };
159 static const symbol s_6_29[4] = { 't', 't', 0xC3, 0xA4 };
160 static const struct among a_6[30] = {
161 { 1, s_6_0, 0, 8, 0},
162 { 3, s_6_1, -1, -1, 0},
163 { 2, s_6_2, -2, -1, 0},
164 { 3, s_6_3, -3, -1, 0},
165 { 2, s_6_4, -4, -1, 0},
166 { 3, s_6_5, -1, -1, 0},
167 { 3, s_6_6, -2, -1, 0},
168 { 3, s_6_7, -3, 2, 0},
169 { 3, s_6_8, 0, -1, 0},
170 { 3, s_6_9, 0, -1, 0},
171 { 3, s_6_10, 0, -1, 0},
172 { 1, s_6_11, 0, 7, 0},
173 { 3, s_6_12, -1, 1, 0},
174 { 3, s_6_13, -2, -1, 1},
175 { 4, s_6_14, -3, -1, 2},
176 { 3, s_6_15, -4, 2, 0},
177 { 4, s_6_16, -5, -1, 1},
178 { 3, s_6_17, -6, 3, 0},
179 { 4, s_6_18, -7, -1, 1},
180 { 3, s_6_19, -8, 4, 0},
181 { 4, s_6_20, -9, 5, 0},
182 { 4, s_6_21, -10, 6, 0},
183 { 2, s_6_22, 0, 8, 0},
184 { 4, s_6_23, -1, -1, 0},
185 { 3, s_6_24, -2, -1, 0},
186 { 4, s_6_25, -3, -1, 0},
187 { 3, s_6_26, -4, -1, 0},
188 { 4, s_6_27, -1, -1, 0},
189 { 4, s_6_28, -2, -1, 0},
190 { 4, s_6_29, -3, 2, 0}
191 };
192 
193 static int af_6(struct SN_env * z) {
194  switch (z->af) {
195  case 1: return r_VI(z);
196  case 2: return r_LONG(z);
197  }
198  return -1;
199 }
200 
201 static const symbol s_7_0[3] = { 'e', 'j', 'a' };
202 static const symbol s_7_1[3] = { 'm', 'm', 'a' };
203 static const symbol s_7_2[4] = { 'i', 'm', 'm', 'a' };
204 static const symbol s_7_3[3] = { 'm', 'p', 'a' };
205 static const symbol s_7_4[4] = { 'i', 'm', 'p', 'a' };
206 static const symbol s_7_5[3] = { 'm', 'm', 'i' };
207 static const symbol s_7_6[4] = { 'i', 'm', 'm', 'i' };
208 static const symbol s_7_7[3] = { 'm', 'p', 'i' };
209 static const symbol s_7_8[4] = { 'i', 'm', 'p', 'i' };
210 static const symbol s_7_9[4] = { 'e', 'j', 0xC3, 0xA4 };
211 static const symbol s_7_10[4] = { 'm', 'm', 0xC3, 0xA4 };
212 static const symbol s_7_11[5] = { 'i', 'm', 'm', 0xC3, 0xA4 };
213 static const symbol s_7_12[4] = { 'm', 'p', 0xC3, 0xA4 };
214 static const symbol s_7_13[5] = { 'i', 'm', 'p', 0xC3, 0xA4 };
215 static const struct among a_7[14] = {
216 { 3, s_7_0, 0, -1, 0},
217 { 3, s_7_1, 0, 1, 0},
218 { 4, s_7_2, -1, -1, 0},
219 { 3, s_7_3, 0, 1, 0},
220 { 4, s_7_4, -1, -1, 0},
221 { 3, s_7_5, 0, 1, 0},
222 { 4, s_7_6, -1, -1, 0},
223 { 3, s_7_7, 0, 1, 0},
224 { 4, s_7_8, -1, -1, 0},
225 { 4, s_7_9, 0, -1, 0},
226 { 4, s_7_10, 0, 1, 0},
227 { 5, s_7_11, -1, -1, 0},
228 { 4, s_7_12, 0, 1, 0},
229 { 5, s_7_13, -1, -1, 0}
230 };
231 
232 static const symbol s_9_0[3] = { 'm', 'm', 'a' };
233 static const symbol s_9_1[4] = { 'i', 'm', 'm', 'a' };
234 static const struct among a_9[2] = {
235 { 3, s_9_0, 0, 1, 0},
236 { 4, s_9_1, -1, -1, 0}
237 };
238 
239 static const unsigned char g_AEI[] = { 17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8 };
240 
241 static const unsigned char g_C[] = { 119, 223, 119, 1 };
242 
243 static const unsigned char g_V1[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 };
244 
245 static const unsigned char g_V2[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 };
246 
247 static const unsigned char g_particle_end[] = { 17, 97, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 };
248 
249 static int r_mark_regions(struct SN_env * z) {
250  ((SN_local *)z)->i_p1 = z->l;
251  ((SN_local *)z)->i_p2 = z->l;
252  {
253  int ret = out_grouping_U(z, g_V1, 97, 246, 1);
254  if (ret < 0) return 0;
255  z->c += ret;
256  }
257  {
258  int ret = in_grouping_U(z, g_V1, 97, 246, 1);
259  if (ret < 0) return 0;
260  z->c += ret;
261  }
262  ((SN_local *)z)->i_p1 = z->c;
263  {
264  int ret = out_grouping_U(z, g_V1, 97, 246, 1);
265  if (ret < 0) return 0;
266  z->c += ret;
267  }
268  {
269  int ret = in_grouping_U(z, g_V1, 97, 246, 1);
270  if (ret < 0) return 0;
271  z->c += ret;
272  }
273  ((SN_local *)z)->i_p2 = z->c;
274  return 1;
275 }
276 
277 static int r_R2(struct SN_env * z) {
278  return ((SN_local *)z)->i_p2 <= z->c;
279 }
280 
281 static int r_particle_etc(struct SN_env * z) {
282  int among_var;
283  {
284  int v_1;
285  if (z->c < ((SN_local *)z)->i_p1) return 0;
286  v_1 = z->lb; z->lb = ((SN_local *)z)->i_p1;
287  z->ket = z->c;
288  among_var = find_among_b(z, a_0, 10, 0);
289  if (!among_var) { z->lb = v_1; return 0; }
290  z->bra = z->c;
291  z->lb = v_1;
292  }
293  switch (among_var) {
294  case 1:
295  if (in_grouping_b_U(z, g_particle_end, 97, 246, 0)) return 0;
296  break;
297  case 2:
298  {
299  int ret = r_R2(z);
300  if (ret == 0) return ret;
301  }
302  break;
303  }
304  slice_del(z);
305  return 1;
306 }
307 
308 static int r_possessive(struct SN_env * z) {
309  int among_var;
310  {
311  int v_1;
312  if (z->c < ((SN_local *)z)->i_p1) return 0;
313  v_1 = z->lb; z->lb = ((SN_local *)z)->i_p1;
314  z->ket = z->c;
315  among_var = find_among_b(z, a_4, 9, 0);
316  if (!among_var) { z->lb = v_1; return 0; }
317  z->bra = z->c;
318  z->lb = v_1;
319  }
320  switch (among_var) {
321  case 1:
322  {
323  int v_2 = z->l - z->c;
324  if (z->c <= z->lb || z->p[z->c - 1] != 'k') goto lab0;
325  z->c--;
326  return 0;
327  lab0:
328  z->c = z->l - v_2;
329  }
330  slice_del(z);
331  break;
332  case 2:
333  slice_del(z);
334  z->ket = z->c;
335  if (!(eq_s_b(z, 3, s_0))) return 0;
336  z->bra = z->c;
337  slice_from_s(z, 3, s_1);
338  break;
339  case 3:
340  slice_del(z);
341  break;
342  case 4:
343  if (z->c - 1 <= z->lb || z->p[z->c - 1] != 97) return 0;
344  if (!find_among_b(z, a_1, 6, 0)) return 0;
345  slice_del(z);
346  break;
347  case 5:
348  if (z->c - 2 <= z->lb || z->p[z->c - 1] != 164) return 0;
349  if (!find_among_b(z, a_2, 6, 0)) return 0;
350  slice_del(z);
351  break;
352  case 6:
353  if (z->c - 2 <= z->lb || z->p[z->c - 1] != 101) return 0;
354  if (!find_among_b(z, a_3, 2, 0)) return 0;
355  slice_del(z);
356  break;
357  }
358  return 1;
359 }
360 
361 static int r_LONG(struct SN_env * z) {
362  return find_among_b(z, a_5, 7, 0) != 0;
363 }
364 
365 static int r_VI(struct SN_env * z) {
366  if (z->c <= z->lb || z->p[z->c - 1] != 'i') return 0;
367  z->c--;
368  return !in_grouping_b_U(z, g_V2, 97, 246, 0);
369 }
370 
371 static int r_case_ending(struct SN_env * z) {
372  int among_var;
373  {
374  int v_1;
375  if (z->c < ((SN_local *)z)->i_p1) return 0;
376  v_1 = z->lb; z->lb = ((SN_local *)z)->i_p1;
377  z->ket = z->c;
378  among_var = find_among_b(z, a_6, 30, af_6);
379  if (!among_var) { z->lb = v_1; return 0; }
380  z->bra = z->c;
381  z->lb = v_1;
382  }
383  switch (among_var) {
384  case 1:
385  if (z->c <= z->lb || z->p[z->c - 1] != 'a') return 0;
386  z->c--;
387  break;
388  case 2:
389  if (z->c <= z->lb || z->p[z->c - 1] != 'e') return 0;
390  z->c--;
391  break;
392  case 3:
393  if (z->c <= z->lb || z->p[z->c - 1] != 'i') return 0;
394  z->c--;
395  break;
396  case 4:
397  if (z->c <= z->lb || z->p[z->c - 1] != 'o') return 0;
398  z->c--;
399  break;
400  case 5:
401  if (!(eq_s_b(z, 2, s_2))) return 0;
402  break;
403  case 6:
404  if (!(eq_s_b(z, 2, s_3))) return 0;
405  break;
406  case 7:
407  {
408  int v_2 = z->l - z->c;
409  {
410  int v_3 = z->l - z->c;
411  do {
412  int v_4 = z->l - z->c;
413  if (!r_LONG(z)) goto lab1;
414  break;
415  lab1:
416  z->c = z->l - v_4;
417  if (!(eq_s_b(z, 2, s_4))) { z->c = z->l - v_2; goto lab0; }
418  } while (0);
419  z->c = z->l - v_3;
420  {
421  int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
422  if (ret < 0) { z->c = z->l - v_2; goto lab0; }
423  z->c = ret;
424  }
425  }
426  z->bra = z->c;
427  lab0:
428  ;
429  }
430  break;
431  case 8:
432  if (in_grouping_b_U(z, g_V1, 97, 246, 0)) return 0;
433  if (in_grouping_b_U(z, g_C, 98, 122, 0)) return 0;
434  break;
435  }
436  slice_del(z);
437  ((SN_local *)z)->b_ending_removed = true;
438  return 1;
439 }
440 
441 static int r_other_endings(struct SN_env * z) {
442  int among_var;
443  {
444  int v_1;
445  if (z->c < ((SN_local *)z)->i_p2) return 0;
446  v_1 = z->lb; z->lb = ((SN_local *)z)->i_p2;
447  z->ket = z->c;
448  among_var = find_among_b(z, a_7, 14, 0);
449  if (!among_var) { z->lb = v_1; return 0; }
450  z->bra = z->c;
451  z->lb = v_1;
452  }
453  switch (among_var) {
454  case 1:
455  {
456  int v_2 = z->l - z->c;
457  if (!(eq_s_b(z, 2, s_5))) goto lab0;
458  return 0;
459  lab0:
460  z->c = z->l - v_2;
461  }
462  break;
463  }
464  slice_del(z);
465  return 1;
466 }
467 
468 static int r_i_plural(struct SN_env * z) {
469  {
470  int v_1;
471  if (z->c < ((SN_local *)z)->i_p1) return 0;
472  v_1 = z->lb; z->lb = ((SN_local *)z)->i_p1;
473  z->ket = z->c;
474  if (z->c <= z->lb || (z->p[z->c - 1] != 105 && z->p[z->c - 1] != 106)) { z->lb = v_1; return 0; }
475  z->c--;
476  z->bra = z->c;
477  z->lb = v_1;
478  }
479  slice_del(z);
480  return 1;
481 }
482 
483 static int r_t_plural(struct SN_env * z) {
484  int among_var;
485  {
486  int v_1;
487  if (z->c < ((SN_local *)z)->i_p1) return 0;
488  v_1 = z->lb; z->lb = ((SN_local *)z)->i_p1;
489  z->ket = z->c;
490  if (z->c <= z->lb || z->p[z->c - 1] != 't') { z->lb = v_1; return 0; }
491  z->c--;
492  z->bra = z->c;
493  {
494  int v_2 = z->l - z->c;
495  if (in_grouping_b_U(z, g_V1, 97, 246, 0)) { z->lb = v_1; return 0; }
496  z->c = z->l - v_2;
497  }
498  slice_del(z);
499  z->lb = v_1;
500  }
501  {
502  int v_3;
503  if (z->c < ((SN_local *)z)->i_p2) return 0;
504  v_3 = z->lb; z->lb = ((SN_local *)z)->i_p2;
505  z->ket = z->c;
506  if (z->c - 2 <= z->lb || z->p[z->c - 1] != 97) { z->lb = v_3; return 0; }
507  among_var = find_among_b(z, a_9, 2, 0);
508  if (!among_var) { z->lb = v_3; return 0; }
509  z->bra = z->c;
510  z->lb = v_3;
511  }
512  switch (among_var) {
513  case 1:
514  {
515  int v_4 = z->l - z->c;
516  if (!(eq_s_b(z, 2, s_6))) goto lab0;
517  return 0;
518  lab0:
519  z->c = z->l - v_4;
520  }
521  break;
522  }
523  slice_del(z);
524  return 1;
525 }
526 
527 static int r_tidy(struct SN_env * z) {
528  {
529  int v_1;
530  if (z->c < ((SN_local *)z)->i_p1) return 0;
531  v_1 = z->lb; z->lb = ((SN_local *)z)->i_p1;
532  {
533  int v_2 = z->l - z->c;
534  {
535  int v_3 = z->l - z->c;
536  if (!r_LONG(z)) goto lab0;
537  z->c = z->l - v_3;
538  z->ket = z->c;
539  {
540  int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
541  if (ret < 0) goto lab0;
542  z->c = ret;
543  }
544  z->bra = z->c;
545  slice_del(z);
546  }
547  lab0:
548  z->c = z->l - v_2;
549  }
550  {
551  int v_4 = z->l - z->c;
552  z->ket = z->c;
553  if (in_grouping_b_U(z, g_AEI, 97, 228, 0)) goto lab1;
554  z->bra = z->c;
555  if (in_grouping_b_U(z, g_C, 98, 122, 0)) goto lab1;
556  slice_del(z);
557  lab1:
558  z->c = z->l - v_4;
559  }
560  {
561  int v_5 = z->l - z->c;
562  z->ket = z->c;
563  if (z->c <= z->lb || z->p[z->c - 1] != 'j') goto lab2;
564  z->c--;
565  z->bra = z->c;
566  do {
567  int v_6 = z->l - z->c;
568  if (z->c <= z->lb || z->p[z->c - 1] != 'o') goto lab3;
569  z->c--;
570  break;
571  lab3:
572  z->c = z->l - v_6;
573  if (z->c <= z->lb || z->p[z->c - 1] != 'u') goto lab2;
574  z->c--;
575  } while (0);
576  slice_del(z);
577  lab2:
578  z->c = z->l - v_5;
579  }
580  {
581  int v_7 = z->l - z->c;
582  z->ket = z->c;
583  if (z->c <= z->lb || z->p[z->c - 1] != 'o') goto lab4;
584  z->c--;
585  z->bra = z->c;
586  if (z->c <= z->lb || z->p[z->c - 1] != 'j') goto lab4;
587  z->c--;
588  slice_del(z);
589  lab4:
590  z->c = z->l - v_7;
591  }
592  z->lb = v_1;
593  }
594  if (in_grouping_b_U(z, g_V1, 97, 246, 1) < 0) return 0;
595  z->ket = z->c;
596  if (in_grouping_b_U(z, g_C, 98, 122, 0)) return 0;
597  z->bra = z->c;
598  slice_to(z, &((SN_local *)z)->s_x);
599  if (!(eq_v_b(z, ((SN_local *)z)->s_x))) return 0;
600  slice_del(z);
601  return 1;
602 }
603 
605  {
606  int v_1 = z->c;
607  r_mark_regions(z);
608  z->c = v_1;
609  }
610  ((SN_local *)z)->b_ending_removed = false;
611  z->lb = z->c; z->c = z->l;
612  {
613  int v_2 = z->l - z->c;
614  r_particle_etc(z);
615  z->c = z->l - v_2;
616  }
617  {
618  int v_3 = z->l - z->c;
619  r_possessive(z);
620  z->c = z->l - v_3;
621  }
622  {
623  int v_4 = z->l - z->c;
624  r_case_ending(z);
625  z->c = z->l - v_4;
626  }
627  {
628  int v_5 = z->l - z->c;
629  r_other_endings(z);
630  z->c = z->l - v_5;
631  }
632  do {
633  if (!((SN_local *)z)->b_ending_removed) goto lab0;
634  {
635  int v_6 = z->l - z->c;
636  r_i_plural(z);
637  z->c = z->l - v_6;
638  }
639  break;
640  lab0:
641  {
642  int v_7 = z->l - z->c;
643  r_t_plural(z);
644  z->c = z->l - v_7;
645  }
646  } while (0);
647  {
648  int v_8 = z->l - z->c;
649  r_tidy(z);
650  z->c = z->l - v_8;
651  }
652  z->c = z->lb;
653  return 1;
654 }
unsigned char symbol
Definition: api.h:4
static int stem(struct SN_env *z)
Definition: finnish.cc:604
static const symbol s_0_2[4]
Definition: finnish.cc:34
static int r_case_ending(struct SN_env *z)
Definition: finnish.cc:371
static const symbol s_2[]
Definition: finnish.cc:26
static const unsigned char g_C[]
Definition: finnish.cc:241
static const symbol s_6_24[3]
Definition: finnish.cc:154
static const struct among a_3[2]
Definition: finnish.cc:87
static const symbol s_6_21[4]
Definition: finnish.cc:151
static const symbol s_4[]
Definition: finnish.cc:28
static const symbol s_7_13[5]
Definition: finnish.cc:214
static const struct among a_7[14]
Definition: finnish.cc:215
static const unsigned char g_V1[]
Definition: finnish.cc:243
static const symbol s_4_1[3]
Definition: finnish.cc:93
static const symbol s_5_6[4]
Definition: finnish.cc:119
static const symbol s_1_5[3]
Definition: finnish.cc:60
static const symbol s_7_7[3]
Definition: finnish.cc:208
static const symbol s_6_17[3]
Definition: finnish.cc:147
static const symbol s_0_3[3]
Definition: finnish.cc:35
static int af_6(struct SN_env *z)
Definition: finnish.cc:193
static const symbol s_9_0[3]
Definition: finnish.cc:232
static const symbol s_5_3[2]
Definition: finnish.cc:116
static const unsigned char g_particle_end[]
Definition: finnish.cc:247
static const symbol s_6_1[3]
Definition: finnish.cc:131
static const struct among a_5[7]
Definition: finnish.cc:120
static const symbol s_5_0[2]
Definition: finnish.cc:113
static const symbol s_2_3[3]
Definition: finnish.cc:73
static int r_tidy(struct SN_env *z)
Definition: finnish.cc:527
static const struct among a_2[6]
Definition: finnish.cc:76
static const symbol s_6_15[3]
Definition: finnish.cc:145
static const symbol s_1_3[2]
Definition: finnish.cc:58
static const symbol s_2_1[3]
Definition: finnish.cc:71
static const symbol s_6_12[3]
Definition: finnish.cc:142
static const symbol s_6[]
Definition: finnish.cc:30
static const symbol s_0_0[2]
Definition: finnish.cc:32
static const symbol s_0_5[4]
Definition: finnish.cc:37
static const symbol s_6_20[4]
Definition: finnish.cc:150
static const symbol s_6_29[4]
Definition: finnish.cc:159
static const symbol s_3[]
Definition: finnish.cc:27
static const symbol s_2_2[4]
Definition: finnish.cc:72
static const symbol s_4_6[2]
Definition: finnish.cc:98
static const symbol s_6_6[3]
Definition: finnish.cc:136
static const symbol s_3_0[3]
Definition: finnish.cc:85
static const symbol s_4_4[2]
Definition: finnish.cc:96
static const symbol s_7_1[3]
Definition: finnish.cc:202
static const symbol s_0_7[2]
Definition: finnish.cc:39
static const symbol s_2_4[4]
Definition: finnish.cc:74
static const symbol s_7_12[4]
Definition: finnish.cc:213
static const symbol s_7_9[4]
Definition: finnish.cc:210
static const symbol s_6_5[3]
Definition: finnish.cc:135
static int r_R2(struct SN_env *z)
Definition: finnish.cc:277
static const symbol s_7_6[4]
Definition: finnish.cc:207
static const symbol s_6_4[2]
Definition: finnish.cc:134
static const symbol s_0_8[3]
Definition: finnish.cc:40
static const symbol s_6_19[3]
Definition: finnish.cc:149
static const symbol s_6_10[3]
Definition: finnish.cc:140
static const symbol s_7_5[3]
Definition: finnish.cc:206
static const symbol s_6_27[4]
Definition: finnish.cc:157
static const symbol s_3_1[3]
Definition: finnish.cc:86
static const symbol s_6_13[3]
Definition: finnish.cc:143
static const symbol s_1_1[2]
Definition: finnish.cc:56
static const symbol s_7_8[4]
Definition: finnish.cc:209
static const symbol s_6_18[4]
Definition: finnish.cc:148
static const symbol s_6_9[3]
Definition: finnish.cc:139
static int r_other_endings(struct SN_env *z)
Definition: finnish.cc:441
static int r_t_plural(struct SN_env *z)
Definition: finnish.cc:483
static const unsigned char g_V2[]
Definition: finnish.cc:245
static const symbol s_7_0[3]
Definition: finnish.cc:201
static const symbol s_0_1[3]
Definition: finnish.cc:33
Xapian::Internal::Snowball::Finnish::SN_local SN_local
Definition: finnish.cc:10
static const symbol s_6_2[2]
Definition: finnish.cc:132
static int r_VI(struct SN_env *z)
Definition: finnish.cc:365
static const symbol s_6_7[3]
Definition: finnish.cc:137
static const struct among a_4[9]
Definition: finnish.cc:101
static const symbol s_5_4[2]
Definition: finnish.cc:117
static const symbol s_6_22[2]
Definition: finnish.cc:152
static int r_LONG(struct SN_env *z)
Definition: finnish.cc:361
static const symbol s_6_16[4]
Definition: finnish.cc:146
static const symbol s_0_9[3]
Definition: finnish.cc:41
static const symbol s_7_2[4]
Definition: finnish.cc:203
static const struct among a_6[30]
Definition: finnish.cc:160
static int r_i_plural(struct SN_env *z)
Definition: finnish.cc:468
static const symbol s_6_11[1]
Definition: finnish.cc:141
static const symbol s_7_4[4]
Definition: finnish.cc:205
static const struct among a_1[6]
Definition: finnish.cc:61
static const symbol s_1[]
Definition: finnish.cc:25
static const symbol s_5_5[4]
Definition: finnish.cc:118
static const symbol s_9_1[4]
Definition: finnish.cc:233
static const symbol s_1_2[3]
Definition: finnish.cc:57
static const symbol s_6_8[3]
Definition: finnish.cc:138
static const symbol s_5_2[2]
Definition: finnish.cc:115
static const struct among a_9[2]
Definition: finnish.cc:234
static int r_possessive(struct SN_env *z)
Definition: finnish.cc:308
static const symbol s_6_14[4]
Definition: finnish.cc:144
static int r_mark_regions(struct SN_env *z)
Definition: finnish.cc:249
static const symbol s_7_3[3]
Definition: finnish.cc:204
static const unsigned char g_AEI[]
Definition: finnish.cc:239
static const symbol s_2_0[4]
Definition: finnish.cc:70
static const symbol s_6_23[4]
Definition: finnish.cc:153
static const symbol s_1_0[3]
Definition: finnish.cc:55
static const symbol s_6_0[1]
Definition: finnish.cc:130
static const symbol s_6_3[3]
Definition: finnish.cc:133
static const symbol s_0_6[6]
Definition: finnish.cc:38
static const struct among a_0[10]
Definition: finnish.cc:42
static const symbol s_4_3[2]
Definition: finnish.cc:95
static const symbol s_4_8[4]
Definition: finnish.cc:100
static const symbol s_5_1[2]
Definition: finnish.cc:114
static const symbol s_1_4[3]
Definition: finnish.cc:59
static const symbol s_6_25[4]
Definition: finnish.cc:155
static const symbol s_6_26[3]
Definition: finnish.cc:156
static const symbol s_2_5[4]
Definition: finnish.cc:75
static int r_particle_etc(struct SN_env *z)
Definition: finnish.cc:281
static const symbol s_6_28[4]
Definition: finnish.cc:158
static const symbol s_7_10[4]
Definition: finnish.cc:211
static const symbol s_4_7[3]
Definition: finnish.cc:99
static const symbol s_5[]
Definition: finnish.cc:29
static const symbol s_4_2[3]
Definition: finnish.cc:94
static const symbol s_4_0[3]
Definition: finnish.cc:92
static const symbol s_7_11[5]
Definition: finnish.cc:212
static const symbol s_4_5[2]
Definition: finnish.cc:97
static const symbol s_0[]
Definition: finnish.cc:24
static const symbol s_0_4[3]
Definition: finnish.cc:36
int out_grouping_U(struct SN_env *z, const unsigned char *s, int min, int max, int repeat)
Definition: utilities.cc:164
int in_grouping_U(struct SN_env *z, const unsigned char *s, int min, int max, int repeat)
Definition: utilities.cc:140
int eq_v_b(struct SN_env *z, const symbol *p)
Definition: utilities.cc:252
SNOWBALL_ERR slice_from_s(struct SN_env *z, int s_size, const symbol *s)
Definition: utilities.cc:439
SNOWBALL_ERR slice_to(struct SN_env *z, symbol **p)
Definition: utilities.cc:485
int in_grouping_b_U(struct SN_env *z, const unsigned char *s, int min, int max, int repeat)
Definition: utilities.cc:152
int skip_b_utf8(const symbol *p, int c, int limit, int n)
Definition: utilities.cc:75
int eq_s_b(struct SN_env *z, int s_size, const symbol *s)
Definition: utilities.cc:243
SNOWBALL_ERR slice_del(struct SN_env *z)
Definition: utilities.cc:450
int find_among_b(struct SN_env *z, const struct among *v, int v_size, int(*)(struct SN_env *))
Definition: utilities.cc:322
Definition: api.h:15
int af
Definition: api.h:18
int lb
Definition: api.h:17
symbol * p
Definition: api.h:16
int ket
Definition: api.h:17
int c
Definition: api.h:17
int bra
Definition: api.h:17
int l
Definition: api.h:17
Definition: header.h:256