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