xapian-core  2.0.0
german.cc
Go to the documentation of this file.
1 /* Generated from german.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
2 
3 #include <config.h>
4 
5 #define SNOWBALL_RUNTIME_THROW_EXCEPTIONS
6 #include "german.h"
7 
8 #include <stddef.h>
9 
11 
12 static int r_standard_suffix(struct SN_env * z);
13 static int r_R2(struct SN_env * z);
14 static int r_R1(struct SN_env * z);
15 static int r_mark_regions(struct SN_env * z);
16 static int r_postlude(struct SN_env * z);
17 static int r_prelude(struct SN_env * z);
18 
19 static const symbol s_0[] = { 'U' };
20 static const symbol s_1[] = { 'Y' };
21 static const symbol s_2[] = { 's', 's' };
22 static const symbol s_3[] = { 0xC3, 0xA4 };
23 static const symbol s_4[] = { 0xC3, 0xB6 };
24 static const symbol s_5[] = { 0xC3, 0xBC };
25 static const symbol s_6[] = { 'y' };
26 static const symbol s_7[] = { 'u' };
27 static const symbol s_8[] = { 'a' };
28 static const symbol s_9[] = { 'o' };
29 static const symbol s_10[] = { 's', 'y', 's', 't' };
30 static const symbol s_11[] = { 'n', 'i', 's' };
31 static const symbol s_12[] = { 'l' };
32 static const symbol s_13[] = { 'i', 'g' };
33 static const symbol s_14[] = { 'e', 'r' };
34 static const symbol s_15[] = { 'e', 'n' };
35 
36 static const symbol s_0_1[2] = { 'a', 'e' };
37 static const symbol s_0_2[2] = { 'o', 'e' };
38 static const symbol s_0_3[2] = { 'q', 'u' };
39 static const symbol s_0_4[2] = { 'u', 'e' };
40 static const symbol s_0_5[2] = { 0xC3, 0x9F };
41 static const struct among a_0[6] = {
42 { 0, 0, 0, 5, 0},
43 { 2, s_0_1, -1, 2, 0},
44 { 2, s_0_2, -2, 3, 0},
45 { 2, s_0_3, -3, -1, 0},
46 { 2, s_0_4, -4, 4, 0},
47 { 2, s_0_5, -5, 1, 0}
48 };
49 
50 static const symbol s_1_1[1] = { 'U' };
51 static const symbol s_1_2[1] = { 'Y' };
52 static const symbol s_1_3[2] = { 0xC3, 0xA4 };
53 static const symbol s_1_4[2] = { 0xC3, 0xB6 };
54 static const symbol s_1_5[2] = { 0xC3, 0xBC };
55 static const struct among a_1[6] = {
56 { 0, 0, 0, 5, 0},
57 { 1, s_1_1, -1, 2, 0},
58 { 1, s_1_2, -2, 1, 0},
59 { 2, s_1_3, -3, 3, 0},
60 { 2, s_1_4, -4, 4, 0},
61 { 2, s_1_5, -5, 2, 0}
62 };
63 
64 static const symbol s_2_0[1] = { 'e' };
65 static const symbol s_2_1[2] = { 'e', 'm' };
66 static const symbol s_2_2[2] = { 'e', 'n' };
67 static const symbol s_2_3[7] = { 'e', 'r', 'i', 'n', 'n', 'e', 'n' };
68 static const symbol s_2_4[4] = { 'e', 'r', 'i', 'n' };
69 static const symbol s_2_5[2] = { 'l', 'n' };
70 static const symbol s_2_6[3] = { 'e', 'r', 'n' };
71 static const symbol s_2_7[2] = { 'e', 'r' };
72 static const symbol s_2_8[1] = { 's' };
73 static const symbol s_2_9[2] = { 'e', 's' };
74 static const symbol s_2_10[3] = { 'l', 'n', 's' };
75 static const struct among a_2[11] = {
76 { 1, s_2_0, 0, 3, 0},
77 { 2, s_2_1, 0, 1, 0},
78 { 2, s_2_2, 0, 3, 0},
79 { 7, s_2_3, -1, 2, 0},
80 { 4, s_2_4, 0, 2, 0},
81 { 2, s_2_5, 0, 5, 0},
82 { 3, s_2_6, 0, 2, 0},
83 { 2, s_2_7, 0, 2, 0},
84 { 1, s_2_8, 0, 4, 0},
85 { 2, s_2_9, -1, 3, 0},
86 { 3, s_2_10, -2, 5, 0}
87 };
88 
89 static const symbol s_3_0[4] = { 't', 'i', 'c', 'k' };
90 static const symbol s_3_1[4] = { 'p', 'l', 'a', 'n' };
91 static const symbol s_3_2[6] = { 'g', 'e', 'o', 'r', 'd', 'n' };
92 static const symbol s_3_3[6] = { 'i', 'n', 't', 'e', 'r', 'n' };
93 static const symbol s_3_4[2] = { 't', 'r' };
94 static const struct among a_3[5] = {
95 { 4, s_3_0, 0, -1, 0},
96 { 4, s_3_1, 0, -1, 0},
97 { 6, s_3_2, 0, -1, 0},
98 { 6, s_3_3, 0, -1, 0},
99 { 2, s_3_4, 0, -1, 0}
100 };
101 
102 static const symbol s_4_0[2] = { 'e', 'n' };
103 static const symbol s_4_1[2] = { 'e', 'r' };
104 static const symbol s_4_2[2] = { 'e', 't' };
105 static const symbol s_4_3[2] = { 's', 't' };
106 static const symbol s_4_4[3] = { 'e', 's', 't' };
107 static const struct among a_4[5] = {
108 { 2, s_4_0, 0, 1, 0},
109 { 2, s_4_1, 0, 1, 0},
110 { 2, s_4_2, 0, 3, 0},
111 { 2, s_4_3, 0, 2, 0},
112 { 3, s_4_4, -1, 1, 0}
113 };
114 
115 static const symbol s_5_0[2] = { 'i', 'g' };
116 static const symbol s_5_1[4] = { 'l', 'i', 'c', 'h' };
117 static const struct among a_5[2] = {
118 { 2, s_5_0, 0, 1, 0},
119 { 4, s_5_1, 0, 1, 0}
120 };
121 
122 static const symbol s_6_0[3] = { 'e', 'n', 'd' };
123 static const symbol s_6_1[2] = { 'i', 'g' };
124 static const symbol s_6_2[3] = { 'u', 'n', 'g' };
125 static const symbol s_6_3[4] = { 'l', 'i', 'c', 'h' };
126 static const symbol s_6_4[4] = { 'i', 's', 'c', 'h' };
127 static const symbol s_6_5[2] = { 'i', 'k' };
128 static const symbol s_6_6[4] = { 'h', 'e', 'i', 't' };
129 static const symbol s_6_7[4] = { 'k', 'e', 'i', 't' };
130 static const struct among a_6[8] = {
131 { 3, s_6_0, 0, 1, 0},
132 { 2, s_6_1, 0, 2, 0},
133 { 3, s_6_2, 0, 1, 0},
134 { 4, s_6_3, 0, 3, 0},
135 { 4, s_6_4, 0, 2, 0},
136 { 2, s_6_5, 0, 2, 0},
137 { 4, s_6_6, 0, 3, 0},
138 { 4, s_6_7, 0, 4, 0}
139 };
140 
141 static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32, 8 };
142 
143 static const unsigned char g_et_ending[] = { 1, 128, 198, 227, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 };
144 
145 static const unsigned char g_s_ending[] = { 117, 30, 5 };
146 
147 static const unsigned char g_st_ending[] = { 117, 30, 4 };
148 
149 static int r_prelude(struct SN_env * z) {
150  int among_var;
151  {
152  int v_1 = z->c;
153  while (1) {
154  int v_2 = z->c;
155  while (1) {
156  int v_3 = z->c;
157  if (in_grouping_U(z, g_v, 97, 252, 0)) goto lab1;
158  z->bra = z->c;
159  do {
160  int v_4 = z->c;
161  if (z->c == z->l || z->p[z->c] != 'u') goto lab2;
162  z->c++;
163  z->ket = z->c;
164  if (in_grouping_U(z, g_v, 97, 252, 0)) goto lab2;
165  slice_from_s(z, 1, s_0);
166  break;
167  lab2:
168  z->c = v_4;
169  if (z->c == z->l || z->p[z->c] != 'y') goto lab1;
170  z->c++;
171  z->ket = z->c;
172  if (in_grouping_U(z, g_v, 97, 252, 0)) goto lab1;
173  slice_from_s(z, 1, s_1);
174  } while (0);
175  z->c = v_3;
176  break;
177  lab1:
178  z->c = v_3;
179  {
180  int ret = skip_utf8(z->p, z->c, z->l, 1);
181  if (ret < 0) goto lab0;
182  z->c = ret;
183  }
184  }
185  continue;
186  lab0:
187  z->c = v_2;
188  break;
189  }
190  z->c = v_1;
191  }
192  while (1) {
193  int v_5 = z->c;
194  z->bra = z->c;
195  among_var = find_among(z, a_0, 6, 0);
196  z->ket = z->c;
197  switch (among_var) {
198  case 1:
199  slice_from_s(z, 2, s_2);
200  break;
201  case 2:
202  slice_from_s(z, 2, s_3);
203  break;
204  case 3:
205  slice_from_s(z, 2, s_4);
206  break;
207  case 4:
208  slice_from_s(z, 2, s_5);
209  break;
210  case 5:
211  {
212  int ret = skip_utf8(z->p, z->c, z->l, 1);
213  if (ret < 0) goto lab3;
214  z->c = ret;
215  }
216  break;
217  }
218  continue;
219  lab3:
220  z->c = v_5;
221  break;
222  }
223  return 1;
224 }
225 
226 static int r_mark_regions(struct SN_env * z) {
227  int i_x;
228  ((SN_local *)z)->i_p1 = z->l;
229  ((SN_local *)z)->i_p2 = z->l;
230  {
231  int v_1 = z->c;
232  {
233  int ret = skip_utf8(z->p, z->c, z->l, 3);
234  if (ret < 0) return 0;
235  z->c = ret;
236  }
237  i_x = z->c;
238  z->c = v_1;
239  }
240  {
241  int ret = out_grouping_U(z, g_v, 97, 252, 1);
242  if (ret < 0) return 0;
243  z->c += ret;
244  }
245  {
246  int ret = in_grouping_U(z, g_v, 97, 252, 1);
247  if (ret < 0) return 0;
248  z->c += ret;
249  }
250  ((SN_local *)z)->i_p1 = z->c;
251  if (((SN_local *)z)->i_p1 >= i_x) goto lab0;
252  ((SN_local *)z)->i_p1 = i_x;
253 lab0:
254  {
255  int ret = out_grouping_U(z, g_v, 97, 252, 1);
256  if (ret < 0) return 0;
257  z->c += ret;
258  }
259  {
260  int ret = in_grouping_U(z, g_v, 97, 252, 1);
261  if (ret < 0) return 0;
262  z->c += ret;
263  }
264  ((SN_local *)z)->i_p2 = z->c;
265  return 1;
266 }
267 
268 static int r_postlude(struct SN_env * z) {
269  int among_var;
270  while (1) {
271  int v_1 = z->c;
272  z->bra = z->c;
273  among_var = find_among(z, a_1, 6, 0);
274  z->ket = z->c;
275  switch (among_var) {
276  case 1:
277  slice_from_s(z, 1, s_6);
278  break;
279  case 2:
280  slice_from_s(z, 1, s_7);
281  break;
282  case 3:
283  slice_from_s(z, 1, s_8);
284  break;
285  case 4:
286  slice_from_s(z, 1, s_9);
287  break;
288  case 5:
289  {
290  int ret = skip_utf8(z->p, z->c, z->l, 1);
291  if (ret < 0) goto lab0;
292  z->c = ret;
293  }
294  break;
295  }
296  continue;
297  lab0:
298  z->c = v_1;
299  break;
300  }
301  return 1;
302 }
303 
304 static int r_R1(struct SN_env * z) {
305  return ((SN_local *)z)->i_p1 <= z->c;
306 }
307 
308 static int r_R2(struct SN_env * z) {
309  return ((SN_local *)z)->i_p2 <= z->c;
310 }
311 
312 static int r_standard_suffix(struct SN_env * z) {
313  int among_var;
314  {
315  int v_1 = z->l - z->c;
316  z->ket = z->c;
317  if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((811040 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab0;
318  among_var = find_among_b(z, a_2, 11, 0);
319  if (!among_var) goto lab0;
320  z->bra = z->c;
321  if (!r_R1(z)) goto lab0;
322  switch (among_var) {
323  case 1:
324  {
325  int v_2 = z->l - z->c;
326  if (!(eq_s_b(z, 4, s_10))) goto lab1;
327  goto lab0;
328  lab1:
329  z->c = z->l - v_2;
330  }
331  slice_del(z);
332  break;
333  case 2:
334  slice_del(z);
335  break;
336  case 3:
337  slice_del(z);
338  {
339  int v_3 = z->l - z->c;
340  z->ket = z->c;
341  if (z->c <= z->lb || z->p[z->c - 1] != 's') { z->c = z->l - v_3; goto lab2; }
342  z->c--;
343  z->bra = z->c;
344  if (!(eq_s_b(z, 3, s_11))) { z->c = z->l - v_3; goto lab2; }
345  slice_del(z);
346  lab2:
347  ;
348  }
349  break;
350  case 4:
351  if (in_grouping_b_U(z, g_s_ending, 98, 116, 0)) goto lab0;
352  slice_del(z);
353  break;
354  case 5:
355  slice_from_s(z, 1, s_12);
356  break;
357  }
358  lab0:
359  z->c = z->l - v_1;
360  }
361  {
362  int v_4 = z->l - z->c;
363  z->ket = z->c;
364  if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1327104 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab3;
365  among_var = find_among_b(z, a_4, 5, 0);
366  if (!among_var) goto lab3;
367  z->bra = z->c;
368  if (!r_R1(z)) goto lab3;
369  switch (among_var) {
370  case 1:
371  slice_del(z);
372  break;
373  case 2:
374  if (in_grouping_b_U(z, g_st_ending, 98, 116, 0)) goto lab3;
375  {
376  int ret = skip_b_utf8(z->p, z->c, z->lb, 3);
377  if (ret < 0) goto lab3;
378  z->c = ret;
379  }
380  slice_del(z);
381  break;
382  case 3:
383  {
384  int v_5 = z->l - z->c;
385  if (in_grouping_b_U(z, g_et_ending, 85, 228, 0)) goto lab3;
386  z->c = z->l - v_5;
387  }
388  {
389  int v_6 = z->l - z->c;
390  if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((280576 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab4;
391  if (!find_among_b(z, a_3, 5, 0)) goto lab4;
392  goto lab3;
393  lab4:
394  z->c = z->l - v_6;
395  }
396  slice_del(z);
397  break;
398  }
399  lab3:
400  z->c = z->l - v_4;
401  }
402  {
403  int v_7 = z->l - z->c;
404  z->ket = z->c;
405  if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1051024 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab5;
406  among_var = find_among_b(z, a_6, 8, 0);
407  if (!among_var) goto lab5;
408  z->bra = z->c;
409  if (!r_R2(z)) goto lab5;
410  switch (among_var) {
411  case 1:
412  slice_del(z);
413  {
414  int v_8 = z->l - z->c;
415  z->ket = z->c;
416  if (!(eq_s_b(z, 2, s_13))) { z->c = z->l - v_8; goto lab6; }
417  z->bra = z->c;
418  {
419  int v_9 = z->l - z->c;
420  if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab7;
421  z->c--;
422  { z->c = z->l - v_8; goto lab6; }
423  lab7:
424  z->c = z->l - v_9;
425  }
426  if (!r_R2(z)) { z->c = z->l - v_8; goto lab6; }
427  slice_del(z);
428  lab6:
429  ;
430  }
431  break;
432  case 2:
433  {
434  int v_10 = z->l - z->c;
435  if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab8;
436  z->c--;
437  goto lab5;
438  lab8:
439  z->c = z->l - v_10;
440  }
441  slice_del(z);
442  break;
443  case 3:
444  slice_del(z);
445  {
446  int v_11 = z->l - z->c;
447  z->ket = z->c;
448  do {
449  int v_12 = z->l - z->c;
450  if (!(eq_s_b(z, 2, s_14))) goto lab10;
451  break;
452  lab10:
453  z->c = z->l - v_12;
454  if (!(eq_s_b(z, 2, s_15))) { z->c = z->l - v_11; goto lab9; }
455  } while (0);
456  z->bra = z->c;
457  if (!r_R1(z)) { z->c = z->l - v_11; goto lab9; }
458  slice_del(z);
459  lab9:
460  ;
461  }
462  break;
463  case 4:
464  slice_del(z);
465  {
466  int v_13 = z->l - z->c;
467  z->ket = z->c;
468  if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 103 && z->p[z->c - 1] != 104)) { z->c = z->l - v_13; goto lab11; }
469  if (!find_among_b(z, a_5, 2, 0)) { z->c = z->l - v_13; goto lab11; }
470  z->bra = z->c;
471  if (!r_R2(z)) { z->c = z->l - v_13; goto lab11; }
472  slice_del(z);
473  lab11:
474  ;
475  }
476  break;
477  }
478  lab5:
479  z->c = z->l - v_7;
480  }
481  return 1;
482 }
483 
485  {
486  int v_1 = z->c;
487  r_prelude(z);
488  z->c = v_1;
489  }
490  {
491  int v_2 = z->c;
492  r_mark_regions(z);
493  z->c = v_2;
494  }
495  z->lb = z->c; z->c = z->l;
497  z->c = z->lb;
498  {
499  int v_3 = z->c;
500  r_postlude(z);
501  z->c = v_3;
502  }
503  return 1;
504 }
unsigned char symbol
Definition: api.h:4
static int stem(struct SN_env *z)
Definition: german.cc:484
static const symbol s_1_5[2]
Definition: german.cc:54
static const symbol s_2[]
Definition: german.cc:21
static const symbol s_0_4[2]
Definition: german.cc:39
static const symbol s_2_2[2]
Definition: german.cc:66
static const symbol s_2_5[2]
Definition: german.cc:69
static const symbol s_0_5[2]
Definition: german.cc:40
static const symbol s_4[]
Definition: german.cc:23
Xapian::Internal::Snowball::German::SN_local SN_local
Definition: german.cc:10
static const symbol s_2_9[2]
Definition: german.cc:73
static const symbol s_3_4[2]
Definition: german.cc:93
static const symbol s_5_0[2]
Definition: german.cc:115
static int r_standard_suffix(struct SN_env *z)
Definition: german.cc:312
static const symbol s_0_1[2]
Definition: german.cc:36
static const symbol s_4_1[2]
Definition: german.cc:103
static const symbol s_6_7[4]
Definition: german.cc:129
static const symbol s_6_5[2]
Definition: german.cc:127
static const symbol s_2_0[1]
Definition: german.cc:64
static const struct among a_6[8]
Definition: german.cc:130
static const symbol s_1_3[2]
Definition: german.cc:52
static const unsigned char g_st_ending[]
Definition: german.cc:147
static const symbol s_3_0[4]
Definition: german.cc:89
static const symbol s_6[]
Definition: german.cc:25
static const symbol s_3[]
Definition: german.cc:22
static const symbol s_6_6[4]
Definition: german.cc:128
static const symbol s_6_3[4]
Definition: german.cc:125
static const symbol s_2_4[4]
Definition: german.cc:68
static const symbol s_2_10[3]
Definition: german.cc:74
static int r_R2(struct SN_env *z)
Definition: german.cc:308
static const struct among a_5[2]
Definition: german.cc:117
static const symbol s_7[]
Definition: german.cc:26
static const symbol s_13[]
Definition: german.cc:32
static const symbol s_6_2[3]
Definition: german.cc:124
static const symbol s_6_4[4]
Definition: german.cc:126
static const symbol s_4_4[3]
Definition: german.cc:106
static const symbol s_2_3[7]
Definition: german.cc:67
static int r_R1(struct SN_env *z)
Definition: german.cc:304
static const symbol s_1_2[1]
Definition: german.cc:51
static int r_postlude(struct SN_env *z)
Definition: german.cc:268
static const symbol s_14[]
Definition: german.cc:33
static const struct among a_4[5]
Definition: german.cc:107
static int r_prelude(struct SN_env *z)
Definition: german.cc:149
static const symbol s_4_2[2]
Definition: german.cc:104
static const symbol s_2_7[2]
Definition: german.cc:71
static const symbol s_10[]
Definition: german.cc:29
static const symbol s_2_8[1]
Definition: german.cc:72
static const symbol s_1_1[1]
Definition: german.cc:50
static const struct among a_1[6]
Definition: german.cc:55
static const symbol s_1[]
Definition: german.cc:20
static const struct among a_0[6]
Definition: german.cc:41
static const struct among a_2[11]
Definition: german.cc:75
static const symbol s_3_1[4]
Definition: german.cc:90
static const symbol s_1_4[2]
Definition: german.cc:53
static const symbol s_2_6[3]
Definition: german.cc:70
static const symbol s_4_0[2]
Definition: german.cc:102
static int r_mark_regions(struct SN_env *z)
Definition: german.cc:226
static const symbol s_11[]
Definition: german.cc:30
static const symbol s_12[]
Definition: german.cc:31
static const symbol s_6_1[2]
Definition: german.cc:123
static const symbol s_6_0[3]
Definition: german.cc:122
static const unsigned char g_et_ending[]
Definition: german.cc:143
static const struct among a_3[5]
Definition: german.cc:94
static const symbol s_4_3[2]
Definition: german.cc:105
static const symbol s_0_2[2]
Definition: german.cc:37
static const symbol s_3_2[6]
Definition: german.cc:91
static const symbol s_0_3[2]
Definition: german.cc:38
static const symbol s_2_1[2]
Definition: german.cc:65
static const unsigned char g_v[]
Definition: german.cc:141
static const symbol s_3_3[6]
Definition: german.cc:92
static const unsigned char g_s_ending[]
Definition: german.cc:145
static const symbol s_8[]
Definition: german.cc:27
static const symbol s_9[]
Definition: german.cc:28
static const symbol s_5[]
Definition: german.cc:24
static const symbol s_15[]
Definition: german.cc:34
static const symbol s_5_1[4]
Definition: german.cc:116
static const symbol s_0[]
Definition: german.cc:19
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
SNOWBALL_ERR slice_from_s(struct SN_env *z, int s_size, const symbol *s)
Definition: utilities.cc:439
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 skip_utf8(const symbol *p, int c, int limit, int n)
Definition: utilities.cc:50
int find_among_b(struct SN_env *z, const struct among *v, int v_size, int(*)(struct SN_env *))
Definition: utilities.cc:322
int find_among(struct SN_env *z, const struct among *v, int v_size, int(*)(struct SN_env *))
Definition: utilities.cc:256
Definition: api.h:15
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