Line data Source code
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 :
132 0 : static int r_prelude(struct SN_env * z) {
133 0 : { int c_test = z->c; /* test, line 30 */
134 : while(1) { /* repeat, line 30 */
135 0 : int c1 = z->c;
136 0 : { int c2 = z->c; /* or, line 33 */
137 0 : z->bra = z->c; /* [, line 32 */
138 0 : if (!(eq_s(z, 2, s_0))) goto lab2;
139 0 : z->ket = z->c; /* ], line 32 */
140 0 : { int ret = slice_from_s(z, 2, s_1); /* <-, line 32 */
141 0 : if (ret < 0) return ret;
142 : }
143 0 : goto lab1;
144 : lab2:
145 0 : z->c = c2;
146 0 : { int ret = skip_utf8(z->p, z->c, 0, z->l, 1);
147 0 : if (ret < 0) goto lab0;
148 0 : z->c = ret; /* next, line 33 */
149 : }
150 : }
151 : lab1:
152 0 : continue;
153 : lab0:
154 0 : z->c = c1;
155 0 : break;
156 0 : }
157 0 : z->c = c_test;
158 : }
159 : while(1) { /* repeat, line 36 */
160 0 : int c3 = z->c;
161 : while(1) { /* goto, line 36 */
162 0 : int c4 = z->c;
163 0 : if (in_grouping_U(z, g_v, 97, 252, 0)) goto lab4;
164 0 : z->bra = z->c; /* [, line 37 */
165 0 : { int c5 = z->c; /* or, line 37 */
166 0 : if (!(eq_s(z, 1, s_2))) goto lab6;
167 0 : z->ket = z->c; /* ], line 37 */
168 0 : if (in_grouping_U(z, g_v, 97, 252, 0)) goto lab6;
169 0 : { int ret = slice_from_s(z, 1, s_3); /* <-, line 37 */
170 0 : if (ret < 0) return ret;
171 : }
172 0 : goto lab5;
173 : lab6:
174 0 : z->c = c5;
175 0 : if (!(eq_s(z, 1, s_4))) goto lab4;
176 0 : z->ket = z->c; /* ], line 38 */
177 0 : if (in_grouping_U(z, g_v, 97, 252, 0)) goto lab4;
178 0 : { int ret = slice_from_s(z, 1, s_5); /* <-, line 38 */
179 0 : if (ret < 0) return ret;
180 : }
181 : }
182 : lab5:
183 0 : z->c = c4;
184 0 : break;
185 : lab4:
186 0 : z->c = c4;
187 0 : { int ret = skip_utf8(z->p, z->c, 0, z->l, 1);
188 0 : if (ret < 0) goto lab3;
189 0 : z->c = ret; /* goto, line 36 */
190 : }
191 0 : }
192 0 : continue;
193 : lab3:
194 0 : z->c = c3;
195 0 : break;
196 0 : }
197 0 : return 1;
198 : }
199 :
200 0 : static int r_mark_regions(struct SN_env * z) {
201 0 : z->I[0] = z->l;
202 0 : z->I[1] = z->l;
203 0 : { int c_test = z->c; /* test, line 47 */
204 0 : { int ret = skip_utf8(z->p, z->c, 0, z->l, + 3);
205 0 : if (ret < 0) return 0;
206 0 : z->c = ret; /* hop, line 47 */
207 : }
208 0 : z->I[2] = z->c; /* setmark x, line 47 */
209 0 : z->c = c_test;
210 : }
211 : { /* gopast */ /* grouping v, line 49 */
212 0 : int ret = out_grouping_U(z, g_v, 97, 252, 1);
213 0 : if (ret < 0) return 0;
214 0 : z->c += ret;
215 : }
216 : { /* gopast */ /* non v, line 49 */
217 0 : int ret = in_grouping_U(z, g_v, 97, 252, 1);
218 0 : if (ret < 0) return 0;
219 0 : z->c += ret;
220 : }
221 0 : z->I[0] = z->c; /* setmark p1, line 49 */
222 : /* try, line 50 */
223 0 : if (!(z->I[0] < z->I[2])) goto lab0;
224 0 : z->I[0] = z->I[2];
225 : lab0:
226 : { /* gopast */ /* grouping v, line 51 */
227 0 : int ret = out_grouping_U(z, g_v, 97, 252, 1);
228 0 : if (ret < 0) return 0;
229 0 : z->c += ret;
230 : }
231 : { /* gopast */ /* non v, line 51 */
232 0 : int ret = in_grouping_U(z, g_v, 97, 252, 1);
233 0 : if (ret < 0) return 0;
234 0 : z->c += ret;
235 : }
236 0 : z->I[1] = z->c; /* setmark p2, line 51 */
237 0 : return 1;
238 : }
239 :
240 0 : static int r_postlude(struct SN_env * z) {
241 : int among_var;
242 : while(1) { /* repeat, line 55 */
243 0 : int c1 = z->c;
244 0 : z->bra = z->c; /* [, line 57 */
245 0 : among_var = find_among(z, a_0, 6); /* substring, line 57 */
246 0 : if (!(among_var)) goto lab0;
247 0 : z->ket = z->c; /* ], line 57 */
248 0 : switch(among_var) {
249 0 : case 0: goto lab0;
250 : case 1:
251 0 : { int ret = slice_from_s(z, 1, s_6); /* <-, line 58 */
252 0 : if (ret < 0) return ret;
253 : }
254 0 : break;
255 : case 2:
256 0 : { int ret = slice_from_s(z, 1, s_7); /* <-, line 59 */
257 0 : if (ret < 0) return ret;
258 : }
259 0 : break;
260 : case 3:
261 0 : { int ret = slice_from_s(z, 1, s_8); /* <-, line 60 */
262 0 : if (ret < 0) return ret;
263 : }
264 0 : break;
265 : case 4:
266 0 : { int ret = slice_from_s(z, 1, s_9); /* <-, line 61 */
267 0 : if (ret < 0) return ret;
268 : }
269 0 : break;
270 : case 5:
271 0 : { int ret = slice_from_s(z, 1, s_10); /* <-, line 62 */
272 0 : if (ret < 0) return ret;
273 : }
274 0 : break;
275 : case 6:
276 0 : { int ret = skip_utf8(z->p, z->c, 0, z->l, 1);
277 0 : if (ret < 0) goto lab0;
278 0 : z->c = ret; /* next, line 63 */
279 : }
280 0 : break;
281 : }
282 0 : continue;
283 : lab0:
284 0 : z->c = c1;
285 0 : break;
286 0 : }
287 0 : return 1;
288 : }
289 :
290 0 : static int r_R1(struct SN_env * z) {
291 0 : if (!(z->I[0] <= z->c)) return 0;
292 0 : return 1;
293 : }
294 :
295 0 : static int r_R2(struct SN_env * z) {
296 0 : if (!(z->I[1] <= z->c)) return 0;
297 0 : return 1;
298 : }
299 :
300 0 : static int r_standard_suffix(struct SN_env * z) {
301 : int among_var;
302 0 : { int m1 = z->l - z->c; (void)m1; /* do, line 74 */
303 0 : z->ket = z->c; /* [, line 75 */
304 0 : if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((811040 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab0;
305 0 : among_var = find_among_b(z, a_1, 7); /* substring, line 75 */
306 0 : if (!(among_var)) goto lab0;
307 0 : z->bra = z->c; /* ], line 75 */
308 0 : { int ret = r_R1(z);
309 0 : if (ret == 0) goto lab0; /* call R1, line 75 */
310 0 : if (ret < 0) return ret;
311 : }
312 0 : switch(among_var) {
313 0 : case 0: goto lab0;
314 : case 1:
315 0 : { int ret = slice_del(z); /* delete, line 77 */
316 0 : if (ret < 0) return ret;
317 : }
318 0 : break;
319 : case 2:
320 0 : if (in_grouping_b_U(z, g_s_ending, 98, 116, 0)) goto lab0;
321 0 : { int ret = slice_del(z); /* delete, line 80 */
322 0 : if (ret < 0) return ret;
323 : }
324 0 : break;
325 : }
326 : lab0:
327 0 : z->c = z->l - m1;
328 : }
329 0 : { int m2 = z->l - z->c; (void)m2; /* do, line 84 */
330 0 : z->ket = z->c; /* [, line 85 */
331 0 : if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1327104 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab1;
332 0 : among_var = find_among_b(z, a_2, 4); /* substring, line 85 */
333 0 : if (!(among_var)) goto lab1;
334 0 : z->bra = z->c; /* ], line 85 */
335 0 : { int ret = r_R1(z);
336 0 : if (ret == 0) goto lab1; /* call R1, line 85 */
337 0 : if (ret < 0) return ret;
338 : }
339 0 : switch(among_var) {
340 0 : case 0: goto lab1;
341 : case 1:
342 0 : { int ret = slice_del(z); /* delete, line 87 */
343 0 : if (ret < 0) return ret;
344 : }
345 0 : break;
346 : case 2:
347 0 : if (in_grouping_b_U(z, g_st_ending, 98, 116, 0)) goto lab1;
348 0 : { int ret = skip_utf8(z->p, z->c, z->lb, z->l, - 3);
349 0 : if (ret < 0) goto lab1;
350 0 : z->c = ret; /* hop, line 90 */
351 : }
352 0 : { int ret = slice_del(z); /* delete, line 90 */
353 0 : if (ret < 0) return ret;
354 : }
355 0 : break;
356 : }
357 : lab1:
358 0 : z->c = z->l - m2;
359 : }
360 0 : { int m3 = z->l - z->c; (void)m3; /* do, line 94 */
361 0 : z->ket = z->c; /* [, line 95 */
362 0 : if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1051024 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab2;
363 0 : among_var = find_among_b(z, a_4, 8); /* substring, line 95 */
364 0 : if (!(among_var)) goto lab2;
365 0 : z->bra = z->c; /* ], line 95 */
366 0 : { int ret = r_R2(z);
367 0 : if (ret == 0) goto lab2; /* call R2, line 95 */
368 0 : if (ret < 0) return ret;
369 : }
370 0 : switch(among_var) {
371 0 : case 0: goto lab2;
372 : case 1:
373 0 : { int ret = slice_del(z); /* delete, line 97 */
374 0 : if (ret < 0) return ret;
375 : }
376 0 : { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 98 */
377 0 : z->ket = z->c; /* [, line 98 */
378 0 : if (!(eq_s_b(z, 2, s_11))) { z->c = z->l - m_keep; goto lab3; }
379 0 : z->bra = z->c; /* ], line 98 */
380 0 : { int m4 = z->l - z->c; (void)m4; /* not, line 98 */
381 0 : if (!(eq_s_b(z, 1, s_12))) goto lab4;
382 0 : { z->c = z->l - m_keep; goto lab3; }
383 : lab4:
384 0 : z->c = z->l - m4;
385 : }
386 0 : { int ret = r_R2(z);
387 0 : if (ret == 0) { z->c = z->l - m_keep; goto lab3; } /* call R2, line 98 */
388 0 : if (ret < 0) return ret;
389 : }
390 0 : { int ret = slice_del(z); /* delete, line 98 */
391 0 : if (ret < 0) return ret;
392 : }
393 : lab3:
394 : ;
395 : }
396 0 : break;
397 : case 2:
398 0 : { int m5 = z->l - z->c; (void)m5; /* not, line 101 */
399 0 : if (!(eq_s_b(z, 1, s_13))) goto lab5;
400 0 : goto lab2;
401 : lab5:
402 0 : z->c = z->l - m5;
403 : }
404 0 : { int ret = slice_del(z); /* delete, line 101 */
405 0 : if (ret < 0) return ret;
406 : }
407 0 : break;
408 : case 3:
409 0 : { int ret = slice_del(z); /* delete, line 104 */
410 0 : if (ret < 0) return ret;
411 : }
412 0 : { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 105 */
413 0 : z->ket = z->c; /* [, line 106 */
414 0 : { int m6 = z->l - z->c; (void)m6; /* or, line 106 */
415 0 : if (!(eq_s_b(z, 2, s_14))) goto lab8;
416 0 : goto lab7;
417 : lab8:
418 0 : z->c = z->l - m6;
419 0 : if (!(eq_s_b(z, 2, s_15))) { z->c = z->l - m_keep; goto lab6; }
420 : }
421 : lab7:
422 0 : z->bra = z->c; /* ], line 106 */
423 0 : { int ret = r_R1(z);
424 0 : if (ret == 0) { z->c = z->l - m_keep; goto lab6; } /* call R1, line 106 */
425 0 : if (ret < 0) return ret;
426 : }
427 0 : { int ret = slice_del(z); /* delete, line 106 */
428 0 : if (ret < 0) return ret;
429 : }
430 : lab6:
431 : ;
432 : }
433 0 : break;
434 : case 4:
435 0 : { int ret = slice_del(z); /* delete, line 110 */
436 0 : if (ret < 0) return ret;
437 : }
438 0 : { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 111 */
439 0 : z->ket = z->c; /* [, line 112 */
440 0 : 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 0 : among_var = find_among_b(z, a_3, 2); /* substring, line 112 */
442 0 : if (!(among_var)) { z->c = z->l - m_keep; goto lab9; }
443 0 : z->bra = z->c; /* ], line 112 */
444 0 : { int ret = r_R2(z);
445 0 : if (ret == 0) { z->c = z->l - m_keep; goto lab9; } /* call R2, line 112 */
446 0 : if (ret < 0) return ret;
447 : }
448 0 : switch(among_var) {
449 0 : case 0: { z->c = z->l - m_keep; goto lab9; }
450 : case 1:
451 0 : { int ret = slice_del(z); /* delete, line 114 */
452 0 : if (ret < 0) return ret;
453 : }
454 0 : break;
455 : }
456 : lab9:
457 : ;
458 : }
459 0 : break;
460 : }
461 : lab2:
462 0 : z->c = z->l - m3;
463 : }
464 0 : return 1;
465 : }
466 :
467 0 : extern int german_UTF_8_stem(struct SN_env * z) {
468 0 : { int c1 = z->c; /* do, line 125 */
469 0 : { int ret = r_prelude(z);
470 0 : if (ret == 0) goto lab0; /* call prelude, line 125 */
471 0 : if (ret < 0) return ret;
472 : }
473 : lab0:
474 0 : z->c = c1;
475 : }
476 0 : { int c2 = z->c; /* do, line 126 */
477 0 : { int ret = r_mark_regions(z);
478 0 : if (ret == 0) goto lab1; /* call mark_regions, line 126 */
479 0 : if (ret < 0) return ret;
480 : }
481 : lab1:
482 0 : z->c = c2;
483 : }
484 0 : z->lb = z->c; z->c = z->l; /* backwards, line 127 */
485 :
486 0 : { int m3 = z->l - z->c; (void)m3; /* do, line 128 */
487 0 : { int ret = r_standard_suffix(z);
488 0 : if (ret == 0) goto lab2; /* call standard_suffix, line 128 */
489 0 : if (ret < 0) return ret;
490 : }
491 : lab2:
492 0 : z->c = z->l - m3;
493 : }
494 0 : z->c = z->lb;
495 0 : { int c4 = z->c; /* do, line 129 */
496 0 : { int ret = r_postlude(z);
497 0 : if (ret == 0) goto lab3; /* call postlude, line 129 */
498 0 : if (ret < 0) return ret;
499 : }
500 : lab3:
501 0 : z->c = c4;
502 : }
503 0 : return 1;
504 : }
505 :
506 0 : extern struct SN_env * german_UTF_8_create_env(void) { return SN_create_env(0, 3, 0); }
507 :
508 0 : extern void german_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }
509 :
|