Branch data Line data Source code
1 : : /* Generated from dutch_porter.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
2 : :
3 : : #include "stem_UTF_8_dutch_porter.h"
4 : :
5 : : #include <stddef.h>
6 : :
7 : : #include "snowball_runtime.h"
8 : :
9 : : struct SN_local {
10 : : struct SN_env z;
11 : : int i_p2;
12 : : int i_p1;
13 : : unsigned char b_e_found;
14 : : };
15 : :
16 : : typedef struct SN_local SN_local;
17 : :
18 : : #ifdef __cplusplus
19 : : extern "C" {
20 : : #endif
21 : : extern int dutch_porter_UTF_8_stem(struct SN_env * z);
22 : : #ifdef __cplusplus
23 : : }
24 : : #endif
25 : :
26 : : static int r_standard_suffix(struct SN_env * z);
27 : : static int r_undouble(struct SN_env * z);
28 : : static int r_R2(struct SN_env * z);
29 : : static int r_R1(struct SN_env * z);
30 : : static int r_mark_regions(struct SN_env * z);
31 : : static int r_en_ending(struct SN_env * z);
32 : : static int r_e_ending(struct SN_env * z);
33 : : static int r_postlude(struct SN_env * z);
34 : : static int r_prelude(struct SN_env * z);
35 : :
36 : : static const symbol s_0[] = { 'a' };
37 : : static const symbol s_1[] = { 'e' };
38 : : static const symbol s_2[] = { 'i' };
39 : : static const symbol s_3[] = { 'o' };
40 : : static const symbol s_4[] = { 'u' };
41 : : static const symbol s_5[] = { 'Y' };
42 : : static const symbol s_6[] = { 'I' };
43 : : static const symbol s_7[] = { 'Y' };
44 : : static const symbol s_8[] = { 'y' };
45 : : static const symbol s_9[] = { 'i' };
46 : : static const symbol s_10[] = { 'g', 'e', 'm' };
47 : : static const symbol s_11[] = { 'h', 'e', 'i', 'd' };
48 : : static const symbol s_12[] = { 'h', 'e', 'i', 'd' };
49 : : static const symbol s_13[] = { 'e', 'n' };
50 : : static const symbol s_14[] = { 'i', 'g' };
51 : :
52 : : static const symbol s_0_1[2] = { 0xC3, 0xA1 };
53 : : static const symbol s_0_2[2] = { 0xC3, 0xA4 };
54 : : static const symbol s_0_3[2] = { 0xC3, 0xA9 };
55 : : static const symbol s_0_4[2] = { 0xC3, 0xAB };
56 : : static const symbol s_0_5[2] = { 0xC3, 0xAD };
57 : : static const symbol s_0_6[2] = { 0xC3, 0xAF };
58 : : static const symbol s_0_7[2] = { 0xC3, 0xB3 };
59 : : static const symbol s_0_8[2] = { 0xC3, 0xB6 };
60 : : static const symbol s_0_9[2] = { 0xC3, 0xBA };
61 : : static const symbol s_0_10[2] = { 0xC3, 0xBC };
62 : : static const struct among a_0[11] = {
63 : : { 0, 0, 0, 6, 0},
64 : : { 2, s_0_1, -1, 1, 0},
65 : : { 2, s_0_2, -2, 1, 0},
66 : : { 2, s_0_3, -3, 2, 0},
67 : : { 2, s_0_4, -4, 2, 0},
68 : : { 2, s_0_5, -5, 3, 0},
69 : : { 2, s_0_6, -6, 3, 0},
70 : : { 2, s_0_7, -7, 4, 0},
71 : : { 2, s_0_8, -8, 4, 0},
72 : : { 2, s_0_9, -9, 5, 0},
73 : : { 2, s_0_10, -10, 5, 0}
74 : : };
75 : :
76 : : static const symbol s_1_1[1] = { 'I' };
77 : : static const symbol s_1_2[1] = { 'Y' };
78 : : static const struct among a_1[3] = {
79 : : { 0, 0, 0, 3, 0},
80 : : { 1, s_1_1, -1, 2, 0},
81 : : { 1, s_1_2, -2, 1, 0}
82 : : };
83 : :
84 : : static const symbol s_2_0[2] = { 'd', 'd' };
85 : : static const symbol s_2_1[2] = { 'k', 'k' };
86 : : static const symbol s_2_2[2] = { 't', 't' };
87 : : static const struct among a_2[3] = {
88 : : { 2, s_2_0, 0, -1, 0},
89 : : { 2, s_2_1, 0, -1, 0},
90 : : { 2, s_2_2, 0, -1, 0}
91 : : };
92 : :
93 : : static const symbol s_3_0[3] = { 'e', 'n', 'e' };
94 : : static const symbol s_3_1[2] = { 's', 'e' };
95 : : static const symbol s_3_2[2] = { 'e', 'n' };
96 : : static const symbol s_3_3[5] = { 'h', 'e', 'd', 'e', 'n' };
97 : : static const symbol s_3_4[1] = { 's' };
98 : : static const struct among a_3[5] = {
99 : : { 3, s_3_0, 0, 2, 0},
100 : : { 2, s_3_1, 0, 3, 0},
101 : : { 2, s_3_2, 0, 2, 0},
102 : : { 5, s_3_3, -1, 1, 0},
103 : : { 1, s_3_4, 0, 3, 0}
104 : : };
105 : :
106 : : static const symbol s_4_0[3] = { 'e', 'n', 'd' };
107 : : static const symbol s_4_1[2] = { 'i', 'g' };
108 : : static const symbol s_4_2[3] = { 'i', 'n', 'g' };
109 : : static const symbol s_4_3[4] = { 'l', 'i', 'j', 'k' };
110 : : static const symbol s_4_4[4] = { 'b', 'a', 'a', 'r' };
111 : : static const symbol s_4_5[3] = { 'b', 'a', 'r' };
112 : : static const struct among a_4[6] = {
113 : : { 3, s_4_0, 0, 1, 0},
114 : : { 2, s_4_1, 0, 2, 0},
115 : : { 3, s_4_2, 0, 1, 0},
116 : : { 4, s_4_3, 0, 3, 0},
117 : : { 4, s_4_4, 0, 4, 0},
118 : : { 3, s_4_5, 0, 5, 0}
119 : : };
120 : :
121 : : static const symbol s_5_0[2] = { 'a', 'a' };
122 : : static const symbol s_5_1[2] = { 'e', 'e' };
123 : : static const symbol s_5_2[2] = { 'o', 'o' };
124 : : static const symbol s_5_3[2] = { 'u', 'u' };
125 : : static const struct among a_5[4] = {
126 : : { 2, s_5_0, 0, -1, 0},
127 : : { 2, s_5_1, 0, -1, 0},
128 : : { 2, s_5_2, 0, -1, 0},
129 : : { 2, s_5_3, 0, -1, 0}
130 : : };
131 : :
132 : : static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 };
133 : :
134 : : static const unsigned char g_v_I[] = { 1, 0, 0, 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 };
135 : :
136 : : static const unsigned char g_v_j[] = { 17, 67, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 };
137 : :
138 : 0 : static int r_prelude(struct SN_env * z) {
139 : 0 : int among_var;
140 : : {
141 : 0 : int v_1 = z->c;
142 : 0 : while (1) {
143 : 0 : int v_2 = z->c;
144 : 0 : z->bra = z->c;
145 [ # # # # : 0 : if (z->c + 1 >= z->l || z->p[z->c + 1] >> 5 != 5 || !((340306450 >> (z->p[z->c + 1] & 0x1f)) & 1)) among_var = 6; else
# # ]
146 : 0 : among_var = find_among(z, a_0, 11, 0);
147 : 0 : z->ket = z->c;
148 [ # # # # : 0 : switch (among_var) {
# # # ]
149 : : case 1:
150 : : {
151 : 0 : int ret = slice_from_s(z, 1, s_0);
152 [ # # ]: 0 : if (ret < 0) return ret;
153 [ # # ]: 0 : }
154 : 0 : break;
155 : : case 2:
156 : : {
157 : 0 : int ret = slice_from_s(z, 1, s_1);
158 [ # # ]: 0 : if (ret < 0) return ret;
159 [ # # ]: 0 : }
160 : 0 : break;
161 : : case 3:
162 : : {
163 : 0 : int ret = slice_from_s(z, 1, s_2);
164 [ # # ]: 0 : if (ret < 0) return ret;
165 [ # # ]: 0 : }
166 : 0 : break;
167 : : case 4:
168 : : {
169 : 0 : int ret = slice_from_s(z, 1, s_3);
170 [ # # ]: 0 : if (ret < 0) return ret;
171 [ # # ]: 0 : }
172 : 0 : break;
173 : : case 5:
174 : : {
175 : 0 : int ret = slice_from_s(z, 1, s_4);
176 [ # # ]: 0 : if (ret < 0) return ret;
177 [ # # ]: 0 : }
178 : 0 : break;
179 : : case 6:
180 : : {
181 : 0 : int ret = skip_utf8(z->p, z->c, z->l, 1);
182 [ # # ]: 0 : if (ret < 0) goto lab0;
183 : 0 : z->c = ret;
184 [ # # # ]: 0 : }
185 : 0 : break;
186 : : }
187 : 0 : continue;
188 : : lab0:
189 : 0 : z->c = v_2;
190 : 0 : break;
191 [ # # # ]: 0 : }
192 : 0 : z->c = v_1;
193 [ # # ]: 0 : }
194 : : {
195 : 0 : int v_3 = z->c;
196 : 0 : z->bra = z->c;
197 [ # # # # ]: 0 : if (z->c == z->l || z->p[z->c] != 'y') { z->c = v_3; goto lab1; }
198 : 0 : z->c++;
199 : 0 : z->ket = z->c;
200 : : {
201 : 0 : int ret = slice_from_s(z, 1, s_5);
202 [ # # ]: 0 : if (ret < 0) return ret;
203 [ # # ]: 0 : }
204 : : lab1:
205 : : ;
206 [ # # ]: 0 : }
207 : 0 : while (1) {
208 : 0 : int v_4 = z->c;
209 : : {
210 : 0 : int ret = out_grouping_U(z, g_v, 97, 232, 1);
211 [ # # ]: 0 : if (ret < 0) goto lab2;
212 : 0 : z->c += ret;
213 [ # # # ]: 0 : }
214 : : {
215 : 0 : int v_5 = z->c;
216 : 0 : z->bra = z->c;
217 : 0 : do {
218 : 0 : int v_6 = z->c;
219 [ # # # # ]: 0 : if (z->c == z->l || z->p[z->c] != 'i') goto lab4;
220 : 0 : z->c++;
221 : 0 : z->ket = z->c;
222 : : {
223 : 0 : int v_7 = z->c;
224 [ # # ]: 0 : if (in_grouping_U(z, g_v, 97, 232, 0)) goto lab5;
225 : : {
226 : 0 : int ret = slice_from_s(z, 1, s_6);
227 [ # # ]: 0 : if (ret < 0) return ret;
228 [ # # ]: 0 : }
229 : : lab5:
230 : 0 : z->c = v_7;
231 [ # # ]: 0 : }
232 : 0 : break;
233 : : lab4:
234 : 0 : z->c = v_6;
235 [ # # # # ]: 0 : if (z->c == z->l || z->p[z->c] != 'y') { z->c = v_5; goto lab3; }
236 : 0 : z->c++;
237 : 0 : z->ket = z->c;
238 : : {
239 : 0 : int ret = slice_from_s(z, 1, s_7);
240 [ # # ]: 0 : if (ret < 0) return ret;
241 [ # # ]: 0 : }
242 [ # # # # ]: 0 : } while (0);
243 : : lab3:
244 : : ;
245 [ # # ]: 0 : }
246 : 0 : continue;
247 : : lab2:
248 : 0 : z->c = v_4;
249 : 0 : break;
250 [ # # # ]: 0 : }
251 : 0 : return 1;
252 : 0 : }
253 : :
254 : 0 : static int r_mark_regions(struct SN_env * z) {
255 : 0 : int i_x;
256 : 0 : ((SN_local *)z)->i_p1 = z->l;
257 : 0 : ((SN_local *)z)->i_p2 = z->l;
258 : : {
259 : 0 : int v_1 = z->c;
260 : : {
261 : 0 : int ret = skip_utf8(z->p, z->c, z->l, 3);
262 [ # # ]: 0 : if (ret < 0) return 0;
263 : 0 : z->c = ret;
264 [ # # ]: 0 : }
265 : 0 : i_x = z->c;
266 : 0 : z->c = v_1;
267 [ # # ]: 0 : }
268 : : {
269 : 0 : int ret = out_grouping_U(z, g_v, 97, 232, 1);
270 [ # # ]: 0 : if (ret < 0) return 0;
271 : 0 : z->c += ret;
272 [ # # ]: 0 : }
273 : : {
274 : 0 : int ret = in_grouping_U(z, g_v, 97, 232, 1);
275 [ # # ]: 0 : if (ret < 0) return 0;
276 : 0 : z->c += ret;
277 [ # # ]: 0 : }
278 : 0 : ((SN_local *)z)->i_p1 = z->c;
279 [ # # ]: 0 : if (((SN_local *)z)->i_p1 >= i_x) goto lab0;
280 : 0 : ((SN_local *)z)->i_p1 = i_x;
281 : : lab0:
282 : : {
283 : 0 : int ret = out_grouping_U(z, g_v, 97, 232, 1);
284 [ # # ]: 0 : if (ret < 0) return 0;
285 : 0 : z->c += ret;
286 [ # # ]: 0 : }
287 : : {
288 : 0 : int ret = in_grouping_U(z, g_v, 97, 232, 1);
289 [ # # ]: 0 : if (ret < 0) return 0;
290 : 0 : z->c += ret;
291 [ # # ]: 0 : }
292 : 0 : ((SN_local *)z)->i_p2 = z->c;
293 : 0 : return 1;
294 : 0 : }
295 : :
296 : 0 : static int r_postlude(struct SN_env * z) {
297 : 0 : int among_var;
298 : 0 : while (1) {
299 : 0 : int v_1 = z->c;
300 : 0 : z->bra = z->c;
301 [ # # # # : 0 : if (z->c >= z->l || (z->p[z->c + 0] != 73 && z->p[z->c + 0] != 89)) among_var = 3; else
# # ]
302 : 0 : among_var = find_among(z, a_1, 3, 0);
303 : 0 : z->ket = z->c;
304 [ # # # # ]: 0 : switch (among_var) {
305 : : case 1:
306 : : {
307 : 0 : int ret = slice_from_s(z, 1, s_8);
308 [ # # ]: 0 : if (ret < 0) return ret;
309 [ # # ]: 0 : }
310 : 0 : break;
311 : : case 2:
312 : : {
313 : 0 : int ret = slice_from_s(z, 1, s_9);
314 [ # # ]: 0 : if (ret < 0) return ret;
315 [ # # ]: 0 : }
316 : 0 : break;
317 : : case 3:
318 : : {
319 : 0 : int ret = skip_utf8(z->p, z->c, z->l, 1);
320 [ # # ]: 0 : if (ret < 0) goto lab0;
321 : 0 : z->c = ret;
322 [ # # # ]: 0 : }
323 : 0 : break;
324 : : }
325 : 0 : continue;
326 : : lab0:
327 : 0 : z->c = v_1;
328 : 0 : break;
329 [ # # # ]: 0 : }
330 : 0 : return 1;
331 : 0 : }
332 : :
333 : 0 : static int r_R1(struct SN_env * z) {
334 : 0 : return ((SN_local *)z)->i_p1 <= z->c;
335 : : }
336 : :
337 : 0 : static int r_R2(struct SN_env * z) {
338 : 0 : return ((SN_local *)z)->i_p2 <= z->c;
339 : : }
340 : :
341 : 0 : static int r_undouble(struct SN_env * z) {
342 : : {
343 : 0 : int v_1 = z->l - z->c;
344 [ # # # # : 0 : if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1050640 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
# # ]
345 [ # # ]: 0 : if (!find_among_b(z, a_2, 3, 0)) return 0;
346 : 0 : z->c = z->l - v_1;
347 [ # # ]: 0 : }
348 : 0 : z->ket = z->c;
349 : : {
350 : 0 : int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
351 [ # # ]: 0 : if (ret < 0) return 0;
352 : 0 : z->c = ret;
353 [ # # ]: 0 : }
354 : 0 : z->bra = z->c;
355 : : {
356 : 0 : int ret = slice_del(z);
357 [ # # ]: 0 : if (ret < 0) return ret;
358 [ # # ]: 0 : }
359 : 0 : return 1;
360 : 0 : }
361 : :
362 : 0 : static int r_e_ending(struct SN_env * z) {
363 : 0 : ((SN_local *)z)->b_e_found = 0;
364 : 0 : z->ket = z->c;
365 [ # # # # ]: 0 : if (z->c <= z->lb || z->p[z->c - 1] != 'e') return 0;
366 : 0 : z->c--;
367 : 0 : z->bra = z->c;
368 : : {
369 : 0 : int ret = r_R1(z);
370 [ # # ]: 0 : if (ret <= 0) return ret;
371 [ # # ]: 0 : }
372 : : {
373 : 0 : int v_1 = z->l - z->c;
374 [ # # ]: 0 : if (out_grouping_b_U(z, g_v, 97, 232, 0)) return 0;
375 : 0 : z->c = z->l - v_1;
376 [ # # ]: 0 : }
377 : : {
378 : 0 : int ret = slice_del(z);
379 [ # # ]: 0 : if (ret < 0) return ret;
380 [ # # ]: 0 : }
381 : 0 : ((SN_local *)z)->b_e_found = 1;
382 : 0 : return r_undouble(z);
383 : 0 : }
384 : :
385 : 0 : static int r_en_ending(struct SN_env * z) {
386 : : {
387 : 0 : int ret = r_R1(z);
388 [ # # ]: 0 : if (ret <= 0) return ret;
389 [ # # ]: 0 : }
390 : : {
391 : 0 : int v_1 = z->l - z->c;
392 [ # # ]: 0 : if (out_grouping_b_U(z, g_v, 97, 232, 0)) return 0;
393 : 0 : z->c = z->l - v_1;
394 : : {
395 : 0 : int v_2 = z->l - z->c;
396 [ # # ]: 0 : if (!(eq_s_b(z, 3, s_10))) goto lab0;
397 : 0 : return 0;
398 : : lab0:
399 : 0 : z->c = z->l - v_2;
400 [ # # ]: 0 : }
401 [ # # ]: 0 : }
402 : : {
403 : 0 : int ret = slice_del(z);
404 [ # # ]: 0 : if (ret < 0) return ret;
405 [ # # ]: 0 : }
406 : 0 : return r_undouble(z);
407 : 0 : }
408 : :
409 : 0 : static int r_standard_suffix(struct SN_env * z) {
410 : 0 : int among_var;
411 : : {
412 : 0 : int v_1 = z->l - z->c;
413 : 0 : z->ket = z->c;
414 [ # # # # : 0 : if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((540704 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab0;
# # ]
415 : 0 : among_var = find_among_b(z, a_3, 5, 0);
416 [ # # ]: 0 : if (!among_var) goto lab0;
417 : 0 : z->bra = z->c;
418 [ # # # # ]: 0 : switch (among_var) {
419 : : case 1:
420 : : {
421 : 0 : int ret = r_R1(z);
422 [ # # ]: 0 : if (ret == 0) goto lab0;
423 [ # # ]: 0 : if (ret < 0) return ret;
424 [ # # ]: 0 : }
425 : : {
426 : 0 : int ret = slice_from_s(z, 4, s_11);
427 [ # # ]: 0 : if (ret < 0) return ret;
428 [ # # ]: 0 : }
429 : 0 : break;
430 : : case 2:
431 : : {
432 : 0 : int ret = r_en_ending(z);
433 [ # # ]: 0 : if (ret == 0) goto lab0;
434 [ # # ]: 0 : if (ret < 0) return ret;
435 [ # # # ]: 0 : }
436 : 0 : break;
437 : : case 3:
438 : : {
439 : 0 : int ret = r_R1(z);
440 [ # # ]: 0 : if (ret == 0) goto lab0;
441 [ # # ]: 0 : if (ret < 0) return ret;
442 [ # # ]: 0 : }
443 [ # # ]: 0 : if (out_grouping_b_U(z, g_v_j, 97, 232, 0)) goto lab0;
444 : : {
445 : 0 : int ret = slice_del(z);
446 [ # # ]: 0 : if (ret < 0) return ret;
447 [ # # ]: 0 : }
448 : 0 : break;
449 : 0 : }
450 : : lab0:
451 : 0 : z->c = z->l - v_1;
452 [ # # ]: 0 : }
453 : : {
454 : 0 : int v_2 = z->l - z->c;
455 : : {
456 : 0 : int ret = r_e_ending(z);
457 [ # # ]: 0 : if (ret < 0) return ret;
458 [ # # ]: 0 : }
459 : 0 : z->c = z->l - v_2;
460 [ # # ]: 0 : }
461 : : {
462 : 0 : int v_3 = z->l - z->c;
463 : 0 : z->ket = z->c;
464 [ # # ]: 0 : if (!(eq_s_b(z, 4, s_12))) goto lab1;
465 : 0 : z->bra = z->c;
466 : : {
467 : 0 : int ret = r_R2(z);
468 [ # # ]: 0 : if (ret == 0) goto lab1;
469 [ # # ]: 0 : if (ret < 0) return ret;
470 [ # # # ]: 0 : }
471 : : {
472 : 0 : int v_4 = z->l - z->c;
473 [ # # # # ]: 0 : if (z->c <= z->lb || z->p[z->c - 1] != 'c') goto lab2;
474 : 0 : z->c--;
475 : 0 : goto lab1;
476 : : lab2:
477 : 0 : z->c = z->l - v_4;
478 [ # # ]: 0 : }
479 : : {
480 : 0 : int ret = slice_del(z);
481 [ # # ]: 0 : if (ret < 0) return ret;
482 [ # # ]: 0 : }
483 : 0 : z->ket = z->c;
484 [ # # ]: 0 : if (!(eq_s_b(z, 2, s_13))) goto lab1;
485 : 0 : z->bra = z->c;
486 : : {
487 : 0 : int ret = r_en_ending(z);
488 [ # # ]: 0 : if (ret == 0) goto lab1;
489 [ # # ]: 0 : if (ret < 0) return ret;
490 [ # # ]: 0 : }
491 : : lab1:
492 : 0 : z->c = z->l - v_3;
493 [ # # ]: 0 : }
494 : : {
495 : 0 : int v_5 = z->l - z->c;
496 : 0 : z->ket = z->c;
497 [ # # # # : 0 : if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((264336 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab3;
# # ]
498 : 0 : among_var = find_among_b(z, a_4, 6, 0);
499 [ # # ]: 0 : if (!among_var) goto lab3;
500 : 0 : z->bra = z->c;
501 [ # # # # : 0 : switch (among_var) {
# # ]
502 : : case 1:
503 : : {
504 : 0 : int ret = r_R2(z);
505 [ # # ]: 0 : if (ret == 0) goto lab3;
506 [ # # ]: 0 : if (ret < 0) return ret;
507 [ # # ]: 0 : }
508 : : {
509 : 0 : int ret = slice_del(z);
510 [ # # ]: 0 : if (ret < 0) return ret;
511 [ # # ]: 0 : }
512 : 0 : do {
513 : 0 : int v_6 = z->l - z->c;
514 : 0 : z->ket = z->c;
515 [ # # ]: 0 : if (!(eq_s_b(z, 2, s_14))) goto lab4;
516 : 0 : z->bra = z->c;
517 : : {
518 : 0 : int ret = r_R2(z);
519 [ # # ]: 0 : if (ret == 0) goto lab4;
520 [ # # ]: 0 : if (ret < 0) return ret;
521 [ # # # ]: 0 : }
522 : : {
523 : 0 : int v_7 = z->l - z->c;
524 [ # # # # ]: 0 : if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab5;
525 : 0 : z->c--;
526 : 0 : goto lab4;
527 : : lab5:
528 : 0 : z->c = z->l - v_7;
529 [ # # ]: 0 : }
530 : : {
531 : 0 : int ret = slice_del(z);
532 [ # # ]: 0 : if (ret < 0) return ret;
533 [ # # ]: 0 : }
534 : 0 : break;
535 : : lab4:
536 : 0 : z->c = z->l - v_6;
537 : : {
538 : 0 : int ret = r_undouble(z);
539 [ # # ]: 0 : if (ret == 0) goto lab3;
540 [ # # ]: 0 : if (ret < 0) return ret;
541 [ # # ]: 0 : }
542 [ # # # ]: 0 : } while (0);
543 : 0 : break;
544 : : case 2:
545 : : {
546 : 0 : int ret = r_R2(z);
547 [ # # ]: 0 : if (ret == 0) goto lab3;
548 [ # # ]: 0 : if (ret < 0) return ret;
549 [ # # ]: 0 : }
550 : : {
551 : 0 : int v_8 = z->l - z->c;
552 [ # # # # ]: 0 : if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab6;
553 : 0 : z->c--;
554 : 0 : goto lab3;
555 : : lab6:
556 : 0 : z->c = z->l - v_8;
557 [ # # ]: 0 : }
558 : : {
559 : 0 : int ret = slice_del(z);
560 [ # # ]: 0 : if (ret < 0) return ret;
561 [ # # ]: 0 : }
562 : 0 : break;
563 : : case 3:
564 : : {
565 : 0 : int ret = r_R2(z);
566 [ # # ]: 0 : if (ret == 0) goto lab3;
567 [ # # ]: 0 : if (ret < 0) return ret;
568 [ # # ]: 0 : }
569 : : {
570 : 0 : int ret = slice_del(z);
571 [ # # ]: 0 : if (ret < 0) return ret;
572 [ # # ]: 0 : }
573 : : {
574 : 0 : int ret = r_e_ending(z);
575 [ # # ]: 0 : if (ret == 0) goto lab3;
576 [ # # ]: 0 : if (ret < 0) return ret;
577 [ # # ]: 0 : }
578 : 0 : break;
579 : : case 4:
580 : : {
581 : 0 : int ret = r_R2(z);
582 [ # # ]: 0 : if (ret == 0) goto lab3;
583 [ # # ]: 0 : if (ret < 0) return ret;
584 [ # # # ]: 0 : }
585 : : {
586 : 0 : int ret = slice_del(z);
587 [ # # ]: 0 : if (ret < 0) return ret;
588 [ # # ]: 0 : }
589 : 0 : break;
590 : : case 5:
591 : : {
592 : 0 : int ret = r_R2(z);
593 [ # # ]: 0 : if (ret == 0) goto lab3;
594 [ # # ]: 0 : if (ret < 0) return ret;
595 [ # # ]: 0 : }
596 [ # # ]: 0 : if (!((SN_local *)z)->b_e_found) goto lab3;
597 : : {
598 : 0 : int ret = slice_del(z);
599 [ # # ]: 0 : if (ret < 0) return ret;
600 [ # # ]: 0 : }
601 : 0 : break;
602 : 0 : }
603 : : lab3:
604 : 0 : z->c = z->l - v_5;
605 [ # # ]: 0 : }
606 : : {
607 : 0 : int v_9 = z->l - z->c;
608 [ # # ]: 0 : if (out_grouping_b_U(z, g_v_I, 73, 232, 0)) goto lab7;
609 : : {
610 : 0 : int v_10 = z->l - z->c;
611 [ # # # # : 0 : if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((2129954 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab7;
# # ]
612 [ # # ]: 0 : if (!find_among_b(z, a_5, 4, 0)) goto lab7;
613 [ # # ]: 0 : if (out_grouping_b_U(z, g_v, 97, 232, 0)) goto lab7;
614 : 0 : z->c = z->l - v_10;
615 [ # # # ]: 0 : }
616 : 0 : z->ket = z->c;
617 : : {
618 : 0 : int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
619 [ # # ]: 0 : if (ret < 0) goto lab7;
620 : 0 : z->c = ret;
621 [ # # ]: 0 : }
622 : 0 : z->bra = z->c;
623 : : {
624 : 0 : int ret = slice_del(z);
625 [ # # ]: 0 : if (ret < 0) return ret;
626 [ # # ]: 0 : }
627 : : lab7:
628 : 0 : z->c = z->l - v_9;
629 [ # # ]: 0 : }
630 : 0 : return 1;
631 : 0 : }
632 : :
633 : 0 : extern int dutch_porter_UTF_8_stem(struct SN_env * z) {
634 : : {
635 : 0 : int v_1 = z->c;
636 : : {
637 : 0 : int ret = r_prelude(z);
638 [ # # ]: 0 : if (ret < 0) return ret;
639 [ # # ]: 0 : }
640 : 0 : z->c = v_1;
641 [ # # ]: 0 : }
642 : : {
643 : 0 : int v_2 = z->c;
644 : : {
645 : 0 : int ret = r_mark_regions(z);
646 [ # # ]: 0 : if (ret < 0) return ret;
647 [ # # ]: 0 : }
648 : 0 : z->c = v_2;
649 [ # # ]: 0 : }
650 : 0 : z->lb = z->c; z->c = z->l;
651 : : {
652 : 0 : int ret = r_standard_suffix(z);
653 [ # # ]: 0 : if (ret < 0) return ret;
654 [ # # ]: 0 : }
655 : 0 : z->c = z->lb;
656 : : {
657 : 0 : int v_3 = z->c;
658 : : {
659 : 0 : int ret = r_postlude(z);
660 [ # # ]: 0 : if (ret < 0) return ret;
661 [ # # ]: 0 : }
662 : 0 : z->c = v_3;
663 [ # # ]: 0 : }
664 : 0 : return 1;
665 : 0 : }
666 : :
667 : 0 : extern struct SN_env * dutch_porter_UTF_8_create_env(void) {
668 : 0 : struct SN_env * z = SN_new_env(sizeof(SN_local));
669 [ # # ]: 0 : if (z) {
670 : 0 : ((SN_local *)z)->i_p2 = 0;
671 : 0 : ((SN_local *)z)->i_p1 = 0;
672 : 0 : ((SN_local *)z)->b_e_found = 0;
673 : 0 : }
674 : 0 : return z;
675 : 0 : }
676 : :
677 : 0 : extern void dutch_porter_UTF_8_close_env(struct SN_env * z) {
678 : 0 : SN_delete_env(z);
679 : 0 : }
680 : :
|