1/* This file was generated automatically by the Snowball to ISO C compiler */
2/* http://snowballstem.org/ */
3
4#include "header.h"
5
6#ifdef __cplusplus
7extern "C" {
8#endif
9extern int turkish_UTF_8_stem(struct SN_env * z);
10#ifdef __cplusplus
11}
12#endif
13static int r_stem_suffix_chain_before_ki(struct SN_env * z);
14static int r_stem_noun_suffixes(struct SN_env * z);
15static int r_stem_nominal_verb_suffixes(struct SN_env * z);
16static int r_postlude(struct SN_env * z);
17static int r_post_process_last_consonants(struct SN_env * z);
18static int r_more_than_one_syllable_word(struct SN_env * z);
19static int r_mark_suffix_with_optional_s_consonant(struct SN_env * z);
20static int r_mark_suffix_with_optional_n_consonant(struct SN_env * z);
21static int r_mark_suffix_with_optional_U_vowel(struct SN_env * z);
22static int r_mark_suffix_with_optional_y_consonant(struct SN_env * z);
23static int r_mark_ysA(struct SN_env * z);
24static int r_mark_ymUs_(struct SN_env * z);
25static int r_mark_yken(struct SN_env * z);
26static int r_mark_yDU(struct SN_env * z);
27static int r_mark_yUz(struct SN_env * z);
28static int r_mark_yUm(struct SN_env * z);
29static int r_mark_yU(struct SN_env * z);
30static int r_mark_ylA(struct SN_env * z);
31static int r_mark_yA(struct SN_env * z);
32static int r_mark_possessives(struct SN_env * z);
33static int r_mark_sUnUz(struct SN_env * z);
34static int r_mark_sUn(struct SN_env * z);
35static int r_mark_sU(struct SN_env * z);
36static int r_mark_nUz(struct SN_env * z);
37static int r_mark_nUn(struct SN_env * z);
38static int r_mark_nU(struct SN_env * z);
39static int r_mark_ndAn(struct SN_env * z);
40static int r_mark_ndA(struct SN_env * z);
41static int r_mark_ncA(struct SN_env * z);
42static int r_mark_nA(struct SN_env * z);
43static int r_mark_lArI(struct SN_env * z);
44static int r_mark_lAr(struct SN_env * z);
45static int r_mark_ki(struct SN_env * z);
46static int r_mark_DUr(struct SN_env * z);
47static int r_mark_DAn(struct SN_env * z);
48static int r_mark_DA(struct SN_env * z);
49static int r_mark_cAsInA(struct SN_env * z);
50static int r_is_reserved_word(struct SN_env * z);
51static int r_check_vowel_harmony(struct SN_env * z);
52static int r_append_U_to_stems_ending_with_d_or_g(struct SN_env * z);
53#ifdef __cplusplus
54extern "C" {
55#endif
56
57
58extern struct SN_env * turkish_UTF_8_create_env(void);
59extern void turkish_UTF_8_close_env(struct SN_env * z);
60
61
62#ifdef __cplusplus
63}
64#endif
65static const symbol s_0_0[1] = { 'm' };
66static const symbol s_0_1[1] = { 'n' };
67static const symbol s_0_2[3] = { 'm', 'i', 'z' };
68static const symbol s_0_3[3] = { 'n', 'i', 'z' };
69static const symbol s_0_4[3] = { 'm', 'u', 'z' };
70static const symbol s_0_5[3] = { 'n', 'u', 'z' };
71static const symbol s_0_6[4] = { 'm', 0xC4, 0xB1, 'z' };
72static const symbol s_0_7[4] = { 'n', 0xC4, 0xB1, 'z' };
73static const symbol s_0_8[4] = { 'm', 0xC3, 0xBC, 'z' };
74static const symbol s_0_9[4] = { 'n', 0xC3, 0xBC, 'z' };
75
76static const struct among a_0[10] =
77{
78/* 0 */ { 1, s_0_0, -1, -1, 0},
79/* 1 */ { 1, s_0_1, -1, -1, 0},
80/* 2 */ { 3, s_0_2, -1, -1, 0},
81/* 3 */ { 3, s_0_3, -1, -1, 0},
82/* 4 */ { 3, s_0_4, -1, -1, 0},
83/* 5 */ { 3, s_0_5, -1, -1, 0},
84/* 6 */ { 4, s_0_6, -1, -1, 0},
85/* 7 */ { 4, s_0_7, -1, -1, 0},
86/* 8 */ { 4, s_0_8, -1, -1, 0},
87/* 9 */ { 4, s_0_9, -1, -1, 0}
88};
89
90static const symbol s_1_0[4] = { 'l', 'e', 'r', 'i' };
91static const symbol s_1_1[5] = { 'l', 'a', 'r', 0xC4, 0xB1 };
92
93static const struct among a_1[2] =
94{
95/* 0 */ { 4, s_1_0, -1, -1, 0},
96/* 1 */ { 5, s_1_1, -1, -1, 0}
97};
98
99static const symbol s_2_0[2] = { 'n', 'i' };
100static const symbol s_2_1[2] = { 'n', 'u' };
101static const symbol s_2_2[3] = { 'n', 0xC4, 0xB1 };
102static const symbol s_2_3[3] = { 'n', 0xC3, 0xBC };
103
104static const struct among a_2[4] =
105{
106/* 0 */ { 2, s_2_0, -1, -1, 0},
107/* 1 */ { 2, s_2_1, -1, -1, 0},
108/* 2 */ { 3, s_2_2, -1, -1, 0},
109/* 3 */ { 3, s_2_3, -1, -1, 0}
110};
111
112static const symbol s_3_0[2] = { 'i', 'n' };
113static const symbol s_3_1[2] = { 'u', 'n' };
114static const symbol s_3_2[3] = { 0xC4, 0xB1, 'n' };
115static const symbol s_3_3[3] = { 0xC3, 0xBC, 'n' };
116
117static const struct among a_3[4] =
118{
119/* 0 */ { 2, s_3_0, -1, -1, 0},
120/* 1 */ { 2, s_3_1, -1, -1, 0},
121/* 2 */ { 3, s_3_2, -1, -1, 0},
122/* 3 */ { 3, s_3_3, -1, -1, 0}
123};
124
125static const symbol s_4_0[1] = { 'a' };
126static const symbol s_4_1[1] = { 'e' };
127
128static const struct among a_4[2] =
129{
130/* 0 */ { 1, s_4_0, -1, -1, 0},
131/* 1 */ { 1, s_4_1, -1, -1, 0}
132};
133
134static const symbol s_5_0[2] = { 'n', 'a' };
135static const symbol s_5_1[2] = { 'n', 'e' };
136
137static const struct among a_5[2] =
138{
139/* 0 */ { 2, s_5_0, -1, -1, 0},
140/* 1 */ { 2, s_5_1, -1, -1, 0}
141};
142
143static const symbol s_6_0[2] = { 'd', 'a' };
144static const symbol s_6_1[2] = { 't', 'a' };
145static const symbol s_6_2[2] = { 'd', 'e' };
146static const symbol s_6_3[2] = { 't', 'e' };
147
148static const struct among a_6[4] =
149{
150/* 0 */ { 2, s_6_0, -1, -1, 0},
151/* 1 */ { 2, s_6_1, -1, -1, 0},
152/* 2 */ { 2, s_6_2, -1, -1, 0},
153/* 3 */ { 2, s_6_3, -1, -1, 0}
154};
155
156static const symbol s_7_0[3] = { 'n', 'd', 'a' };
157static const symbol s_7_1[3] = { 'n', 'd', 'e' };
158
159static const struct among a_7[2] =
160{
161/* 0 */ { 3, s_7_0, -1, -1, 0},
162/* 1 */ { 3, s_7_1, -1, -1, 0}
163};
164
165static const symbol s_8_0[3] = { 'd', 'a', 'n' };
166static const symbol s_8_1[3] = { 't', 'a', 'n' };
167static const symbol s_8_2[3] = { 'd', 'e', 'n' };
168static const symbol s_8_3[3] = { 't', 'e', 'n' };
169
170static const struct among a_8[4] =
171{
172/* 0 */ { 3, s_8_0, -1, -1, 0},
173/* 1 */ { 3, s_8_1, -1, -1, 0},
174/* 2 */ { 3, s_8_2, -1, -1, 0},
175/* 3 */ { 3, s_8_3, -1, -1, 0}
176};
177
178static const symbol s_9_0[4] = { 'n', 'd', 'a', 'n' };
179static const symbol s_9_1[4] = { 'n', 'd', 'e', 'n' };
180
181static const struct among a_9[2] =
182{
183/* 0 */ { 4, s_9_0, -1, -1, 0},
184/* 1 */ { 4, s_9_1, -1, -1, 0}
185};
186
187static const symbol s_10_0[2] = { 'l', 'a' };
188static const symbol s_10_1[2] = { 'l', 'e' };
189
190static const struct among a_10[2] =
191{
192/* 0 */ { 2, s_10_0, -1, -1, 0},
193/* 1 */ { 2, s_10_1, -1, -1, 0}
194};
195
196static const symbol s_11_0[2] = { 'c', 'a' };
197static const symbol s_11_1[2] = { 'c', 'e' };
198
199static const struct among a_11[2] =
200{
201/* 0 */ { 2, s_11_0, -1, -1, 0},
202/* 1 */ { 2, s_11_1, -1, -1, 0}
203};
204
205static const symbol s_12_0[2] = { 'i', 'm' };
206static const symbol s_12_1[2] = { 'u', 'm' };
207static const symbol s_12_2[3] = { 0xC4, 0xB1, 'm' };
208static const symbol s_12_3[3] = { 0xC3, 0xBC, 'm' };
209
210static const struct among a_12[4] =
211{
212/* 0 */ { 2, s_12_0, -1, -1, 0},
213/* 1 */ { 2, s_12_1, -1, -1, 0},
214/* 2 */ { 3, s_12_2, -1, -1, 0},
215/* 3 */ { 3, s_12_3, -1, -1, 0}
216};
217
218static const symbol s_13_0[3] = { 's', 'i', 'n' };
219static const symbol s_13_1[3] = { 's', 'u', 'n' };
220static const symbol s_13_2[4] = { 's', 0xC4, 0xB1, 'n' };
221static const symbol s_13_3[4] = { 's', 0xC3, 0xBC, 'n' };
222
223static const struct among a_13[4] =
224{
225/* 0 */ { 3, s_13_0, -1, -1, 0},
226/* 1 */ { 3, s_13_1, -1, -1, 0},
227/* 2 */ { 4, s_13_2, -1, -1, 0},
228/* 3 */ { 4, s_13_3, -1, -1, 0}
229};
230
231static const symbol s_14_0[2] = { 'i', 'z' };
232static const symbol s_14_1[2] = { 'u', 'z' };
233static const symbol s_14_2[3] = { 0xC4, 0xB1, 'z' };
234static const symbol s_14_3[3] = { 0xC3, 0xBC, 'z' };
235
236static const struct among a_14[4] =
237{
238/* 0 */ { 2, s_14_0, -1, -1, 0},
239/* 1 */ { 2, s_14_1, -1, -1, 0},
240/* 2 */ { 3, s_14_2, -1, -1, 0},
241/* 3 */ { 3, s_14_3, -1, -1, 0}
242};
243
244static const symbol s_15_0[5] = { 's', 'i', 'n', 'i', 'z' };
245static const symbol s_15_1[5] = { 's', 'u', 'n', 'u', 'z' };
246static const symbol s_15_2[7] = { 's', 0xC4, 0xB1, 'n', 0xC4, 0xB1, 'z' };
247static const symbol s_15_3[7] = { 's', 0xC3, 0xBC, 'n', 0xC3, 0xBC, 'z' };
248
249static const struct among a_15[4] =
250{
251/* 0 */ { 5, s_15_0, -1, -1, 0},
252/* 1 */ { 5, s_15_1, -1, -1, 0},
253/* 2 */ { 7, s_15_2, -1, -1, 0},
254/* 3 */ { 7, s_15_3, -1, -1, 0}
255};
256
257static const symbol s_16_0[3] = { 'l', 'a', 'r' };
258static const symbol s_16_1[3] = { 'l', 'e', 'r' };
259
260static const struct among a_16[2] =
261{
262/* 0 */ { 3, s_16_0, -1, -1, 0},
263/* 1 */ { 3, s_16_1, -1, -1, 0}
264};
265
266static const symbol s_17_0[3] = { 'n', 'i', 'z' };
267static const symbol s_17_1[3] = { 'n', 'u', 'z' };
268static const symbol s_17_2[4] = { 'n', 0xC4, 0xB1, 'z' };
269static const symbol s_17_3[4] = { 'n', 0xC3, 0xBC, 'z' };
270
271static const struct among a_17[4] =
272{
273/* 0 */ { 3, s_17_0, -1, -1, 0},
274/* 1 */ { 3, s_17_1, -1, -1, 0},
275/* 2 */ { 4, s_17_2, -1, -1, 0},
276/* 3 */ { 4, s_17_3, -1, -1, 0}
277};
278
279static const symbol s_18_0[3] = { 'd', 'i', 'r' };
280static const symbol s_18_1[3] = { 't', 'i', 'r' };
281static const symbol s_18_2[3] = { 'd', 'u', 'r' };
282static const symbol s_18_3[3] = { 't', 'u', 'r' };
283static const symbol s_18_4[4] = { 'd', 0xC4, 0xB1, 'r' };
284static const symbol s_18_5[4] = { 't', 0xC4, 0xB1, 'r' };
285static const symbol s_18_6[4] = { 'd', 0xC3, 0xBC, 'r' };
286static const symbol s_18_7[4] = { 't', 0xC3, 0xBC, 'r' };
287
288static const struct among a_18[8] =
289{
290/* 0 */ { 3, s_18_0, -1, -1, 0},
291/* 1 */ { 3, s_18_1, -1, -1, 0},
292/* 2 */ { 3, s_18_2, -1, -1, 0},
293/* 3 */ { 3, s_18_3, -1, -1, 0},
294/* 4 */ { 4, s_18_4, -1, -1, 0},
295/* 5 */ { 4, s_18_5, -1, -1, 0},
296/* 6 */ { 4, s_18_6, -1, -1, 0},
297/* 7 */ { 4, s_18_7, -1, -1, 0}
298};
299
300static const symbol s_19_0[7] = { 'c', 'a', 's', 0xC4, 0xB1, 'n', 'a' };
301static const symbol s_19_1[6] = { 'c', 'e', 's', 'i', 'n', 'e' };
302
303static const struct among a_19[2] =
304{
305/* 0 */ { 7, s_19_0, -1, -1, 0},
306/* 1 */ { 6, s_19_1, -1, -1, 0}
307};
308
309static const symbol s_20_0[2] = { 'd', 'i' };
310static const symbol s_20_1[2] = { 't', 'i' };
311static const symbol s_20_2[3] = { 'd', 'i', 'k' };
312static const symbol s_20_3[3] = { 't', 'i', 'k' };
313static const symbol s_20_4[3] = { 'd', 'u', 'k' };
314static const symbol s_20_5[3] = { 't', 'u', 'k' };
315static const symbol s_20_6[4] = { 'd', 0xC4, 0xB1, 'k' };
316static const symbol s_20_7[4] = { 't', 0xC4, 0xB1, 'k' };
317static const symbol s_20_8[4] = { 'd', 0xC3, 0xBC, 'k' };
318static const symbol s_20_9[4] = { 't', 0xC3, 0xBC, 'k' };
319static const symbol s_20_10[3] = { 'd', 'i', 'm' };
320static const symbol s_20_11[3] = { 't', 'i', 'm' };
321static const symbol s_20_12[3] = { 'd', 'u', 'm' };
322static const symbol s_20_13[3] = { 't', 'u', 'm' };
323static const symbol s_20_14[4] = { 'd', 0xC4, 0xB1, 'm' };
324static const symbol s_20_15[4] = { 't', 0xC4, 0xB1, 'm' };
325static const symbol s_20_16[4] = { 'd', 0xC3, 0xBC, 'm' };
326static const symbol s_20_17[4] = { 't', 0xC3, 0xBC, 'm' };
327static const symbol s_20_18[3] = { 'd', 'i', 'n' };
328static const symbol s_20_19[3] = { 't', 'i', 'n' };
329static const symbol s_20_20[3] = { 'd', 'u', 'n' };
330static const symbol s_20_21[3] = { 't', 'u', 'n' };
331static const symbol s_20_22[4] = { 'd', 0xC4, 0xB1, 'n' };
332static const symbol s_20_23[4] = { 't', 0xC4, 0xB1, 'n' };
333static const symbol s_20_24[4] = { 'd', 0xC3, 0xBC, 'n' };
334static const symbol s_20_25[4] = { 't', 0xC3, 0xBC, 'n' };
335static const symbol s_20_26[2] = { 'd', 'u' };
336static const symbol s_20_27[2] = { 't', 'u' };
337static const symbol s_20_28[3] = { 'd', 0xC4, 0xB1 };
338static const symbol s_20_29[3] = { 't', 0xC4, 0xB1 };
339static const symbol s_20_30[3] = { 'd', 0xC3, 0xBC };
340static const symbol s_20_31[3] = { 't', 0xC3, 0xBC };
341
342static const struct among a_20[32] =
343{
344/* 0 */ { 2, s_20_0, -1, -1, 0},
345/* 1 */ { 2, s_20_1, -1, -1, 0},
346/* 2 */ { 3, s_20_2, -1, -1, 0},
347/* 3 */ { 3, s_20_3, -1, -1, 0},
348/* 4 */ { 3, s_20_4, -1, -1, 0},
349/* 5 */ { 3, s_20_5, -1, -1, 0},
350/* 6 */ { 4, s_20_6, -1, -1, 0},
351/* 7 */ { 4, s_20_7, -1, -1, 0},
352/* 8 */ { 4, s_20_8, -1, -1, 0},
353/* 9 */ { 4, s_20_9, -1, -1, 0},
354/* 10 */ { 3, s_20_10, -1, -1, 0},
355/* 11 */ { 3, s_20_11, -1, -1, 0},
356/* 12 */ { 3, s_20_12, -1, -1, 0},
357/* 13 */ { 3, s_20_13, -1, -1, 0},
358/* 14 */ { 4, s_20_14, -1, -1, 0},
359/* 15 */ { 4, s_20_15, -1, -1, 0},
360/* 16 */ { 4, s_20_16, -1, -1, 0},
361/* 17 */ { 4, s_20_17, -1, -1, 0},
362/* 18 */ { 3, s_20_18, -1, -1, 0},
363/* 19 */ { 3, s_20_19, -1, -1, 0},
364/* 20 */ { 3, s_20_20, -1, -1, 0},
365/* 21 */ { 3, s_20_21, -1, -1, 0},
366/* 22 */ { 4, s_20_22, -1, -1, 0},
367/* 23 */ { 4, s_20_23, -1, -1, 0},
368/* 24 */ { 4, s_20_24, -1, -1, 0},
369/* 25 */ { 4, s_20_25, -1, -1, 0},
370/* 26 */ { 2, s_20_26, -1, -1, 0},
371/* 27 */ { 2, s_20_27, -1, -1, 0},
372/* 28 */ { 3, s_20_28, -1, -1, 0},
373/* 29 */ { 3, s_20_29, -1, -1, 0},
374/* 30 */ { 3, s_20_30, -1, -1, 0},
375/* 31 */ { 3, s_20_31, -1, -1, 0}
376};
377
378static const symbol s_21_0[2] = { 's', 'a' };
379static const symbol s_21_1[2] = { 's', 'e' };
380static const symbol s_21_2[3] = { 's', 'a', 'k' };
381static const symbol s_21_3[3] = { 's', 'e', 'k' };
382static const symbol s_21_4[3] = { 's', 'a', 'm' };
383static const symbol s_21_5[3] = { 's', 'e', 'm' };
384static const symbol s_21_6[3] = { 's', 'a', 'n' };
385static const symbol s_21_7[3] = { 's', 'e', 'n' };
386
387static const struct among a_21[8] =
388{
389/* 0 */ { 2, s_21_0, -1, -1, 0},
390/* 1 */ { 2, s_21_1, -1, -1, 0},
391/* 2 */ { 3, s_21_2, -1, -1, 0},
392/* 3 */ { 3, s_21_3, -1, -1, 0},
393/* 4 */ { 3, s_21_4, -1, -1, 0},
394/* 5 */ { 3, s_21_5, -1, -1, 0},
395/* 6 */ { 3, s_21_6, -1, -1, 0},
396/* 7 */ { 3, s_21_7, -1, -1, 0}
397};
398
399static const symbol s_22_0[4] = { 'm', 'i', 0xC5, 0x9F };
400static const symbol s_22_1[4] = { 'm', 'u', 0xC5, 0x9F };
401static const symbol s_22_2[5] = { 'm', 0xC4, 0xB1, 0xC5, 0x9F };
402static const symbol s_22_3[5] = { 'm', 0xC3, 0xBC, 0xC5, 0x9F };
403
404static const struct among a_22[4] =
405{
406/* 0 */ { 4, s_22_0, -1, -1, 0},
407/* 1 */ { 4, s_22_1, -1, -1, 0},
408/* 2 */ { 5, s_22_2, -1, -1, 0},
409/* 3 */ { 5, s_22_3, -1, -1, 0}
410};
411
412static const symbol s_23_0[1] = { 'b' };
413static const symbol s_23_1[1] = { 'c' };
414static const symbol s_23_2[1] = { 'd' };
415static const symbol s_23_3[2] = { 0xC4, 0x9F };
416
417static const struct among a_23[4] =
418{
419/* 0 */ { 1, s_23_0, -1, 1, 0},
420/* 1 */ { 1, s_23_1, -1, 2, 0},
421/* 2 */ { 1, s_23_2, -1, 3, 0},
422/* 3 */ { 2, s_23_3, -1, 4, 0}
423};
424
425static const unsigned char g_vowel[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 8, 0, 0, 0, 0, 0, 0, 1 };
426
427static const unsigned char g_U[] = { 1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1 };
428
429static const unsigned char g_vowel1[] = { 1, 64, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 };
430
431static const unsigned char g_vowel2[] = { 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130 };
432
433static const unsigned char g_vowel3[] = { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 };
434
435static const unsigned char g_vowel4[] = { 17 };
436
437static const unsigned char g_vowel5[] = { 65 };
438
439static const unsigned char g_vowel6[] = { 65 };
440
441static const symbol s_0[] = { 0xC4, 0xB1 };
442static const symbol s_1[] = { 0xC3, 0xB6 };
443static const symbol s_2[] = { 0xC3, 0xBC };
444static const symbol s_3[] = { 'k', 'i' };
445static const symbol s_4[] = { 'k', 'e', 'n' };
446static const symbol s_5[] = { 'p' };
447static const symbol s_6[] = { 0xC3, 0xA7 };
448static const symbol s_7[] = { 't' };
449static const symbol s_8[] = { 'k' };
450static const symbol s_9[] = { 0xC4, 0xB1 };
451static const symbol s_10[] = { 0xC4, 0xB1 };
452static const symbol s_11[] = { 'i' };
453static const symbol s_12[] = { 'u' };
454static const symbol s_13[] = { 0xC3, 0xB6 };
455static const symbol s_14[] = { 0xC3, 0xBC };
456static const symbol s_15[] = { 0xC3, 0xBC };
457static const symbol s_16[] = { 'a', 'd' };
458static const symbol s_17[] = { 's', 'o', 'y' };
459
460static int r_check_vowel_harmony(struct SN_env * z) { /* backwardmode */
461 { int m_test1 = z->l - z->c; /* test, line 110 */
462 if (out_grouping_b_U(z, g_vowel, 97, 305, 1) < 0) return 0; /* goto */ /* grouping vowel, line 112 */
463 { int m2 = z->l - z->c; (void)m2; /* or, line 114 */
464 if (z->c <= z->lb || z->p[z->c - 1] != 'a') goto lab1; /* literal, line 114 */
465 z->c--;
466 if (out_grouping_b_U(z, g_vowel1, 97, 305, 1) < 0) goto lab1; /* goto */ /* grouping vowel1, line 114 */
467 goto lab0;
468 lab1:
469 z->c = z->l - m2;
470 if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab2; /* literal, line 115 */
471 z->c--;
472 if (out_grouping_b_U(z, g_vowel2, 101, 252, 1) < 0) goto lab2; /* goto */ /* grouping vowel2, line 115 */
473 goto lab0;
474 lab2:
475 z->c = z->l - m2;
476 if (!(eq_s_b(z, 2, s_0))) goto lab3; /* literal, line 116 */
477 if (out_grouping_b_U(z, g_vowel3, 97, 305, 1) < 0) goto lab3; /* goto */ /* grouping vowel3, line 116 */
478 goto lab0;
479 lab3:
480 z->c = z->l - m2;
481 if (z->c <= z->lb || z->p[z->c - 1] != 'i') goto lab4; /* literal, line 117 */
482 z->c--;
483 if (out_grouping_b_U(z, g_vowel4, 101, 105, 1) < 0) goto lab4; /* goto */ /* grouping vowel4, line 117 */
484 goto lab0;
485 lab4:
486 z->c = z->l - m2;
487 if (z->c <= z->lb || z->p[z->c - 1] != 'o') goto lab5; /* literal, line 118 */
488 z->c--;
489 if (out_grouping_b_U(z, g_vowel5, 111, 117, 1) < 0) goto lab5; /* goto */ /* grouping vowel5, line 118 */
490 goto lab0;
491 lab5:
492 z->c = z->l - m2;
493 if (!(eq_s_b(z, 2, s_1))) goto lab6; /* literal, line 119 */
494 if (out_grouping_b_U(z, g_vowel6, 246, 252, 1) < 0) goto lab6; /* goto */ /* grouping vowel6, line 119 */
495 goto lab0;
496 lab6:
497 z->c = z->l - m2;
498 if (z->c <= z->lb || z->p[z->c - 1] != 'u') goto lab7; /* literal, line 120 */
499 z->c--;
500 if (out_grouping_b_U(z, g_vowel5, 111, 117, 1) < 0) goto lab7; /* goto */ /* grouping vowel5, line 120 */
501 goto lab0;
502 lab7:
503 z->c = z->l - m2;
504 if (!(eq_s_b(z, 2, s_2))) return 0; /* literal, line 121 */
505 if (out_grouping_b_U(z, g_vowel6, 246, 252, 1) < 0) return 0; /* goto */ /* grouping vowel6, line 121 */
506 }
507 lab0:
508 z->c = z->l - m_test1;
509 }
510 return 1;
511}
512
513static int r_mark_suffix_with_optional_n_consonant(struct SN_env * z) { /* backwardmode */
514 { int m1 = z->l - z->c; (void)m1; /* or, line 132 */
515 if (z->c <= z->lb || z->p[z->c - 1] != 'n') goto lab1; /* literal, line 131 */
516 z->c--;
517 { int m_test2 = z->l - z->c; /* test, line 131 */
518 if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) goto lab1; /* grouping vowel, line 131 */
519 z->c = z->l - m_test2;
520 }
521 goto lab0;
522 lab1:
523 z->c = z->l - m1;
524 { int m3 = z->l - z->c; (void)m3; /* not, line 133 */
525 { int m_test4 = z->l - z->c; /* test, line 133 */
526 if (z->c <= z->lb || z->p[z->c - 1] != 'n') goto lab2; /* literal, line 133 */
527 z->c--;
528 z->c = z->l - m_test4;
529 }
530 return 0;
531 lab2:
532 z->c = z->l - m3;
533 }
534 { int m_test5 = z->l - z->c; /* test, line 133 */
535 { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
536 if (ret < 0) return 0;
537 z->c = ret; /* next, line 133 */
538 }
539 if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) return 0; /* grouping vowel, line 133 */
540 z->c = z->l - m_test5;
541 }
542 }
543lab0:
544 return 1;
545}
546
547static int r_mark_suffix_with_optional_s_consonant(struct SN_env * z) { /* backwardmode */
548 { int m1 = z->l - z->c; (void)m1; /* or, line 143 */
549 if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab1; /* literal, line 142 */
550 z->c--;
551 { int m_test2 = z->l - z->c; /* test, line 142 */
552 if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) goto lab1; /* grouping vowel, line 142 */
553 z->c = z->l - m_test2;
554 }
555 goto lab0;
556 lab1:
557 z->c = z->l - m1;
558 { int m3 = z->l - z->c; (void)m3; /* not, line 144 */
559 { int m_test4 = z->l - z->c; /* test, line 144 */
560 if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab2; /* literal, line 144 */
561 z->c--;
562 z->c = z->l - m_test4;
563 }
564 return 0;
565 lab2:
566 z->c = z->l - m3;
567 }
568 { int m_test5 = z->l - z->c; /* test, line 144 */
569 { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
570 if (ret < 0) return 0;
571 z->c = ret; /* next, line 144 */
572 }
573 if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) return 0; /* grouping vowel, line 144 */
574 z->c = z->l - m_test5;
575 }
576 }
577lab0:
578 return 1;
579}
580
581static int r_mark_suffix_with_optional_y_consonant(struct SN_env * z) { /* backwardmode */
582 { int m1 = z->l - z->c; (void)m1; /* or, line 153 */
583 if (z->c <= z->lb || z->p[z->c - 1] != 'y') goto lab1; /* literal, line 152 */
584 z->c--;
585 { int m_test2 = z->l - z->c; /* test, line 152 */
586 if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) goto lab1; /* grouping vowel, line 152 */
587 z->c = z->l - m_test2;
588 }
589 goto lab0;
590 lab1:
591 z->c = z->l - m1;
592 { int m3 = z->l - z->c; (void)m3; /* not, line 154 */
593 { int m_test4 = z->l - z->c; /* test, line 154 */
594 if (z->c <= z->lb || z->p[z->c - 1] != 'y') goto lab2; /* literal, line 154 */
595 z->c--;
596 z->c = z->l - m_test4;
597 }
598 return 0;
599 lab2:
600 z->c = z->l - m3;
601 }
602 { int m_test5 = z->l - z->c; /* test, line 154 */
603 { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
604 if (ret < 0) return 0;
605 z->c = ret; /* next, line 154 */
606 }
607 if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) return 0; /* grouping vowel, line 154 */
608 z->c = z->l - m_test5;
609 }
610 }
611lab0:
612 return 1;
613}
614
615static int r_mark_suffix_with_optional_U_vowel(struct SN_env * z) { /* backwardmode */
616 { int m1 = z->l - z->c; (void)m1; /* or, line 159 */
617 if (in_grouping_b_U(z, g_U, 105, 305, 0)) goto lab1; /* grouping U, line 158 */
618 { int m_test2 = z->l - z->c; /* test, line 158 */
619 if (out_grouping_b_U(z, g_vowel, 97, 305, 0)) goto lab1; /* non vowel, line 158 */
620 z->c = z->l - m_test2;
621 }
622 goto lab0;
623 lab1:
624 z->c = z->l - m1;
625 { int m3 = z->l - z->c; (void)m3; /* not, line 160 */
626 { int m_test4 = z->l - z->c; /* test, line 160 */
627 if (in_grouping_b_U(z, g_U, 105, 305, 0)) goto lab2; /* grouping U, line 160 */
628 z->c = z->l - m_test4;
629 }
630 return 0;
631 lab2:
632 z->c = z->l - m3;
633 }
634 { int m_test5 = z->l - z->c; /* test, line 160 */
635 { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
636 if (ret < 0) return 0;
637 z->c = ret; /* next, line 160 */
638 }
639 if (out_grouping_b_U(z, g_vowel, 97, 305, 0)) return 0; /* non vowel, line 160 */
640 z->c = z->l - m_test5;
641 }
642 }
643lab0:
644 return 1;
645}
646
647static int r_mark_possessives(struct SN_env * z) { /* backwardmode */
648 if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((67133440 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* among, line 165 */
649 if (!(find_among_b(z, a_0, 10))) return 0;
650 { int ret = r_mark_suffix_with_optional_U_vowel(z); /* call mark_suffix_with_optional_U_vowel, line 167 */
651 if (ret <= 0) return ret;
652 }
653 return 1;
654}
655
656static int r_mark_sU(struct SN_env * z) { /* backwardmode */
657 { int ret = r_check_vowel_harmony(z); /* call check_vowel_harmony, line 171 */
658 if (ret <= 0) return ret;
659 }
660 if (in_grouping_b_U(z, g_U, 105, 305, 0)) return 0; /* grouping U, line 172 */
661 { int ret = r_mark_suffix_with_optional_s_consonant(z); /* call mark_suffix_with_optional_s_consonant, line 173 */
662 if (ret <= 0) return ret;
663 }
664 return 1;
665}
666
667static int r_mark_lArI(struct SN_env * z) { /* backwardmode */
668 if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 105 && z->p[z->c - 1] != 177)) return 0; /* among, line 177 */
669 if (!(find_among_b(z, a_1, 2))) return 0;
670 return 1;
671}
672
673static int r_mark_yU(struct SN_env * z) { /* backwardmode */
674 { int ret = r_check_vowel_harmony(z); /* call check_vowel_harmony, line 181 */
675 if (ret <= 0) return ret;
676 }
677 if (in_grouping_b_U(z, g_U, 105, 305, 0)) return 0; /* grouping U, line 182 */
678 { int ret = r_mark_suffix_with_optional_y_consonant(z); /* call mark_suffix_with_optional_y_consonant, line 183 */
679 if (ret <= 0) return ret;
680 }
681 return 1;
682}
683
684static int r_mark_nU(struct SN_env * z) { /* backwardmode */
685 { int ret = r_check_vowel_harmony(z); /* call check_vowel_harmony, line 187 */
686 if (ret <= 0) return ret;
687 }
688 if (!(find_among_b(z, a_2, 4))) return 0; /* among, line 188 */
689 return 1;
690}
691
692static int r_mark_nUn(struct SN_env * z) { /* backwardmode */
693 { int ret = r_check_vowel_harmony(z); /* call check_vowel_harmony, line 192 */
694 if (ret <= 0) return ret;
695 }
696 if (z->c - 1 <= z->lb || z->p[z->c - 1] != 110) return 0; /* among, line 193 */
697 if (!(find_among_b(z, a_3, 4))) return 0;
698 { int ret = r_mark_suffix_with_optional_n_consonant(z); /* call mark_suffix_with_optional_n_consonant, line 194 */
699 if (ret <= 0) return ret;
700 }
701 return 1;
702}
703
704static int r_mark_yA(struct SN_env * z) { /* backwardmode */
705 { int ret = r_check_vowel_harmony(z); /* call check_vowel_harmony, line 198 */
706 if (ret <= 0) return ret;
707 }
708 if (z->c <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0; /* among, line 199 */
709 if (!(find_among_b(z, a_4, 2))) return 0;
710 { int ret = r_mark_suffix_with_optional_y_consonant(z); /* call mark_suffix_with_optional_y_consonant, line 200 */
711 if (ret <= 0) return ret;
712 }
713 return 1;
714}
715
716static int r_mark_nA(struct SN_env * z) { /* backwardmode */
717 { int ret = r_check_vowel_harmony(z); /* call check_vowel_harmony, line 204 */
718 if (ret <= 0) return ret;
719 }
720 if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0; /* among, line 205 */
721 if (!(find_among_b(z, a_5, 2))) return 0;
722 return 1;
723}
724
725static int r_mark_DA(struct SN_env * z) { /* backwardmode */
726 { int ret = r_check_vowel_harmony(z); /* call check_vowel_harmony, line 209 */
727 if (ret <= 0) return ret;
728 }
729 if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0; /* among, line 210 */
730 if (!(find_among_b(z, a_6, 4))) return 0;
731 return 1;
732}
733
734static int r_mark_ndA(struct SN_env * z) { /* backwardmode */
735 { int ret = r_check_vowel_harmony(z); /* call check_vowel_harmony, line 214 */
736 if (ret <= 0) return ret;
737 }
738 if (z->c - 2 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0; /* among, line 215 */
739 if (!(find_among_b(z, a_7, 2))) return 0;
740 return 1;
741}
742
743static int r_mark_DAn(struct SN_env * z) { /* backwardmode */
744 { int ret = r_check_vowel_harmony(z); /* call check_vowel_harmony, line 219 */
745 if (ret <= 0) return ret;
746 }
747 if (z->c - 2 <= z->lb || z->p[z->c - 1] != 110) return 0; /* among, line 220 */
748 if (!(find_among_b(z, a_8, 4))) return 0;
749 return 1;
750}
751
752static int r_mark_ndAn(struct SN_env * z) { /* backwardmode */
753 { int ret = r_check_vowel_harmony(z); /* call check_vowel_harmony, line 224 */
754 if (ret <= 0) return ret;
755 }
756 if (z->c - 3 <= z->lb || z->p[z->c - 1] != 110) return 0; /* among, line 225 */
757 if (!(find_among_b(z, a_9, 2))) return 0;
758 return 1;
759}
760
761static int r_mark_ylA(struct SN_env * z) { /* backwardmode */
762 { int ret = r_check_vowel_harmony(z); /* call check_vowel_harmony, line 229 */
763 if (ret <= 0) return ret;
764 }
765 if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0; /* among, line 230 */
766 if (!(find_among_b(z, a_10, 2))) return 0;
767 { int ret = r_mark_suffix_with_optional_y_consonant(z); /* call mark_suffix_with_optional_y_consonant, line 231 */
768 if (ret <= 0) return ret;
769 }
770 return 1;
771}
772
773static int r_mark_ki(struct SN_env * z) { /* backwardmode */
774 if (!(eq_s_b(z, 2, s_3))) return 0; /* literal, line 235 */
775 return 1;
776}
777
778static int r_mark_ncA(struct SN_env * z) { /* backwardmode */
779 { int ret = r_check_vowel_harmony(z); /* call check_vowel_harmony, line 239 */
780 if (ret <= 0) return ret;
781 }
782 if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0; /* among, line 240 */
783 if (!(find_among_b(z, a_11, 2))) return 0;
784 { int ret = r_mark_suffix_with_optional_n_consonant(z); /* call mark_suffix_with_optional_n_consonant, line 241 */
785 if (ret <= 0) return ret;
786 }
787 return 1;
788}
789
790static int r_mark_yUm(struct SN_env * z) { /* backwardmode */
791 { int ret = r_check_vowel_harmony(z); /* call check_vowel_harmony, line 245 */
792 if (ret <= 0) return ret;
793 }
794 if (z->c - 1 <= z->lb || z->p[z->c - 1] != 109) return 0; /* among, line 246 */
795 if (!(find_among_b(z, a_12, 4))) return 0;
796 { int ret = r_mark_suffix_with_optional_y_consonant(z); /* call mark_suffix_with_optional_y_consonant, line 247 */
797 if (ret <= 0) return ret;
798 }
799 return 1;
800}
801
802static int r_mark_sUn(struct SN_env * z) { /* backwardmode */
803 { int ret = r_check_vowel_harmony(z); /* call check_vowel_harmony, line 251 */
804 if (ret <= 0) return ret;
805 }
806 if (z->c - 2 <= z->lb || z->p[z->c - 1] != 110) return 0; /* among, line 252 */
807 if (!(find_among_b(z, a_13, 4))) return 0;
808 return 1;
809}
810
811static int r_mark_yUz(struct SN_env * z) { /* backwardmode */
812 { int ret = r_check_vowel_harmony(z); /* call check_vowel_harmony, line 256 */
813 if (ret <= 0) return ret;
814 }
815 if (z->c - 1 <= z->lb || z->p[z->c - 1] != 122) return 0; /* among, line 257 */
816 if (!(find_among_b(z, a_14, 4))) return 0;
817 { int ret = r_mark_suffix_with_optional_y_consonant(z); /* call mark_suffix_with_optional_y_consonant, line 258 */
818 if (ret <= 0) return ret;
819 }
820 return 1;
821}
822
823static int r_mark_sUnUz(struct SN_env * z) { /* backwardmode */
824 if (z->c - 4 <= z->lb || z->p[z->c - 1] != 122) return 0; /* among, line 262 */
825 if (!(find_among_b(z, a_15, 4))) return 0;
826 return 1;
827}
828
829static int r_mark_lAr(struct SN_env * z) { /* backwardmode */
830 { int ret = r_check_vowel_harmony(z); /* call check_vowel_harmony, line 266 */
831 if (ret <= 0) return ret;
832 }
833 if (z->c - 2 <= z->lb || z->p[z->c - 1] != 114) return 0; /* among, line 267 */
834 if (!(find_among_b(z, a_16, 2))) return 0;
835 return 1;
836}
837
838static int r_mark_nUz(struct SN_env * z) { /* backwardmode */
839 { int ret = r_check_vowel_harmony(z); /* call check_vowel_harmony, line 271 */
840 if (ret <= 0) return ret;
841 }
842 if (z->c - 2 <= z->lb || z->p[z->c - 1] != 122) return 0; /* among, line 272 */
843 if (!(find_among_b(z, a_17, 4))) return 0;
844 return 1;
845}
846
847static int r_mark_DUr(struct SN_env * z) { /* backwardmode */
848 { int ret = r_check_vowel_harmony(z); /* call check_vowel_harmony, line 276 */
849 if (ret <= 0) return ret;
850 }
851 if (z->c - 2 <= z->lb || z->p[z->c - 1] != 114) return 0; /* among, line 277 */
852 if (!(find_among_b(z, a_18, 8))) return 0;
853 return 1;
854}
855
856static int r_mark_cAsInA(struct SN_env * z) { /* backwardmode */
857 if (z->c - 5 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0; /* among, line 281 */
858 if (!(find_among_b(z, a_19, 2))) return 0;
859 return 1;
860}
861
862static int r_mark_yDU(struct SN_env * z) { /* backwardmode */
863 { int ret = r_check_vowel_harmony(z); /* call check_vowel_harmony, line 285 */
864 if (ret <= 0) return ret;
865 }
866 if (!(find_among_b(z, a_20, 32))) return 0; /* among, line 286 */
867 { int ret = r_mark_suffix_with_optional_y_consonant(z); /* call mark_suffix_with_optional_y_consonant, line 290 */
868 if (ret <= 0) return ret;
869 }
870 return 1;
871}
872
873static int r_mark_ysA(struct SN_env * z) { /* backwardmode */
874 if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((26658 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* among, line 295 */
875 if (!(find_among_b(z, a_21, 8))) return 0;
876 { int ret = r_mark_suffix_with_optional_y_consonant(z); /* call mark_suffix_with_optional_y_consonant, line 296 */
877 if (ret <= 0) return ret;
878 }
879 return 1;
880}
881
882static int r_mark_ymUs_(struct SN_env * z) { /* backwardmode */
883 { int ret = r_check_vowel_harmony(z); /* call check_vowel_harmony, line 300 */
884 if (ret <= 0) return ret;
885 }
886 if (z->c - 3 <= z->lb || z->p[z->c - 1] != 159) return 0; /* among, line 301 */
887 if (!(find_among_b(z, a_22, 4))) return 0;
888 { int ret = r_mark_suffix_with_optional_y_consonant(z); /* call mark_suffix_with_optional_y_consonant, line 302 */
889 if (ret <= 0) return ret;
890 }
891 return 1;
892}
893
894static int r_mark_yken(struct SN_env * z) { /* backwardmode */
895 if (!(eq_s_b(z, 3, s_4))) return 0; /* literal, line 306 */
896 { int ret = r_mark_suffix_with_optional_y_consonant(z); /* call mark_suffix_with_optional_y_consonant, line 306 */
897 if (ret <= 0) return ret;
898 }
899 return 1;
900}
901
902static int r_stem_nominal_verb_suffixes(struct SN_env * z) { /* backwardmode */
903 z->ket = z->c; /* [, line 310 */
904 z->B[0] = 1; /* set continue_stemming_noun_suffixes, line 311 */
905 { int m1 = z->l - z->c; (void)m1; /* or, line 313 */
906 { int m2 = z->l - z->c; (void)m2; /* or, line 312 */
907 { int ret = r_mark_ymUs_(z); /* call mark_ymUs_, line 312 */
908 if (ret == 0) goto lab3;
909 if (ret < 0) return ret;
910 }
911 goto lab2;
912 lab3:
913 z->c = z->l - m2;
914 { int ret = r_mark_yDU(z); /* call mark_yDU, line 312 */
915 if (ret == 0) goto lab4;
916 if (ret < 0) return ret;
917 }
918 goto lab2;
919 lab4:
920 z->c = z->l - m2;
921 { int ret = r_mark_ysA(z); /* call mark_ysA, line 312 */
922 if (ret == 0) goto lab5;
923 if (ret < 0) return ret;
924 }
925 goto lab2;
926 lab5:
927 z->c = z->l - m2;
928 { int ret = r_mark_yken(z); /* call mark_yken, line 312 */
929 if (ret == 0) goto lab1;
930 if (ret < 0) return ret;
931 }
932 }
933 lab2:
934 goto lab0;
935 lab1:
936 z->c = z->l - m1;
937 { int ret = r_mark_cAsInA(z); /* call mark_cAsInA, line 314 */
938 if (ret == 0) goto lab6;
939 if (ret < 0) return ret;
940 }
941 { int m3 = z->l - z->c; (void)m3; /* or, line 314 */
942 { int ret = r_mark_sUnUz(z); /* call mark_sUnUz, line 314 */
943 if (ret == 0) goto lab8;
944 if (ret < 0) return ret;
945 }
946 goto lab7;
947 lab8:
948 z->c = z->l - m3;
949 { int ret = r_mark_lAr(z); /* call mark_lAr, line 314 */
950 if (ret == 0) goto lab9;
951 if (ret < 0) return ret;
952 }
953 goto lab7;
954 lab9:
955 z->c = z->l - m3;
956 { int ret = r_mark_yUm(z); /* call mark_yUm, line 314 */
957 if (ret == 0) goto lab10;
958 if (ret < 0) return ret;
959 }
960 goto lab7;
961 lab10:
962 z->c = z->l - m3;
963 { int ret = r_mark_sUn(z); /* call mark_sUn, line 314 */
964 if (ret == 0) goto lab11;
965 if (ret < 0) return ret;
966 }
967 goto lab7;
968 lab11:
969 z->c = z->l - m3;
970 { int ret = r_mark_yUz(z); /* call mark_yUz, line 314 */
971 if (ret == 0) goto lab12;
972 if (ret < 0) return ret;
973 }
974 goto lab7;
975 lab12:
976 z->c = z->l - m3;
977 }
978 lab7:
979 { int ret = r_mark_ymUs_(z); /* call mark_ymUs_, line 314 */
980 if (ret == 0) goto lab6;
981 if (ret < 0) return ret;
982 }
983 goto lab0;
984 lab6:
985 z->c = z->l - m1;
986 { int ret = r_mark_lAr(z); /* call mark_lAr, line 317 */
987 if (ret == 0) goto lab13;
988 if (ret < 0) return ret;
989 }
990 z->bra = z->c; /* ], line 317 */
991 { int ret = slice_del(z); /* delete, line 317 */
992 if (ret < 0) return ret;
993 }
994 { int m4 = z->l - z->c; (void)m4; /* try, line 317 */
995 z->ket = z->c; /* [, line 317 */
996 { int m5 = z->l - z->c; (void)m5; /* or, line 317 */
997 { int ret = r_mark_DUr(z); /* call mark_DUr, line 317 */
998 if (ret == 0) goto lab16;
999 if (ret < 0) return ret;
1000 }
1001 goto lab15;
1002 lab16:
1003 z->c = z->l - m5;
1004 { int ret = r_mark_yDU(z); /* call mark_yDU, line 317 */
1005 if (ret == 0) goto lab17;
1006 if (ret < 0) return ret;
1007 }
1008 goto lab15;
1009 lab17:
1010 z->c = z->l - m5;
1011 { int ret = r_mark_ysA(z); /* call mark_ysA, line 317 */
1012 if (ret == 0) goto lab18;
1013 if (ret < 0) return ret;
1014 }
1015 goto lab15;
1016 lab18:
1017 z->c = z->l - m5;
1018 { int ret = r_mark_ymUs_(z); /* call mark_ymUs_, line 317 */
1019 if (ret == 0) { z->c = z->l - m4; goto lab14; }
1020 if (ret < 0) return ret;
1021 }
1022 }
1023 lab15:
1024 lab14:
1025 ;
1026 }
1027 z->B[0] = 0; /* unset continue_stemming_noun_suffixes, line 318 */
1028 goto lab0;
1029 lab13:
1030 z->c = z->l - m1;
1031 { int ret = r_mark_nUz(z); /* call mark_nUz, line 321 */
1032 if (ret == 0) goto lab19;
1033 if (ret < 0) return ret;
1034 }
1035 { int m6 = z->l - z->c; (void)m6; /* or, line 321 */
1036 { int ret = r_mark_yDU(z); /* call mark_yDU, line 321 */
1037 if (ret == 0) goto lab21;
1038 if (ret < 0) return ret;
1039 }
1040 goto lab20;
1041 lab21:
1042 z->c = z->l - m6;
1043 { int ret = r_mark_ysA(z); /* call mark_ysA, line 321 */
1044 if (ret == 0) goto lab19;
1045 if (ret < 0) return ret;
1046 }
1047 }
1048 lab20:
1049 goto lab0;
1050 lab19:
1051 z->c = z->l - m1;
1052 { int m7 = z->l - z->c; (void)m7; /* or, line 323 */
1053 { int ret = r_mark_sUnUz(z); /* call mark_sUnUz, line 323 */
1054 if (ret == 0) goto lab24;
1055 if (ret < 0) return ret;
1056 }
1057 goto lab23;
1058 lab24:
1059 z->c = z->l - m7;
1060 { int ret = r_mark_yUz(z); /* call mark_yUz, line 323 */
1061 if (ret == 0) goto lab25;
1062 if (ret < 0) return ret;
1063 }
1064 goto lab23;
1065 lab25:
1066 z->c = z->l - m7;
1067 { int ret = r_mark_sUn(z); /* call mark_sUn, line 323 */
1068 if (ret == 0) goto lab26;
1069 if (ret < 0) return ret;
1070 }
1071 goto lab23;
1072 lab26:
1073 z->c = z->l - m7;
1074 { int ret = r_mark_yUm(z); /* call mark_yUm, line 323 */
1075 if (ret == 0) goto lab22;
1076 if (ret < 0) return ret;
1077 }
1078 }
1079 lab23:
1080 z->bra = z->c; /* ], line 323 */
1081 { int ret = slice_del(z); /* delete, line 323 */
1082 if (ret < 0) return ret;
1083 }
1084 { int m8 = z->l - z->c; (void)m8; /* try, line 323 */
1085 z->ket = z->c; /* [, line 323 */
1086 { int ret = r_mark_ymUs_(z); /* call mark_ymUs_, line 323 */
1087 if (ret == 0) { z->c = z->l - m8; goto lab27; }
1088 if (ret < 0) return ret;
1089 }
1090 lab27:
1091 ;
1092 }
1093 goto lab0;
1094 lab22:
1095 z->c = z->l - m1;
1096 { int ret = r_mark_DUr(z); /* call mark_DUr, line 325 */
1097 if (ret <= 0) return ret;
1098 }
1099 z->bra = z->c; /* ], line 325 */
1100 { int ret = slice_del(z); /* delete, line 325 */
1101 if (ret < 0) return ret;
1102 }
1103 { int m9 = z->l - z->c; (void)m9; /* try, line 325 */
1104 z->ket = z->c; /* [, line 325 */
1105 { int m10 = z->l - z->c; (void)m10; /* or, line 325 */
1106 { int ret = r_mark_sUnUz(z); /* call mark_sUnUz, line 325 */
1107 if (ret == 0) goto lab30;
1108 if (ret < 0) return ret;
1109 }
1110 goto lab29;
1111 lab30:
1112 z->c = z->l - m10;
1113 { int ret = r_mark_lAr(z); /* call mark_lAr, line 325 */
1114 if (ret == 0) goto lab31;
1115 if (ret < 0) return ret;
1116 }
1117 goto lab29;
1118 lab31:
1119 z->c = z->l - m10;
1120 { int ret = r_mark_yUm(z); /* call mark_yUm, line 325 */
1121 if (ret == 0) goto lab32;
1122 if (ret < 0) return ret;
1123 }
1124 goto lab29;
1125 lab32:
1126 z->c = z->l - m10;
1127 { int ret = r_mark_sUn(z); /* call mark_sUn, line 325 */
1128 if (ret == 0) goto lab33;
1129 if (ret < 0) return ret;
1130 }
1131 goto lab29;
1132 lab33:
1133 z->c = z->l - m10;
1134 { int ret = r_mark_yUz(z); /* call mark_yUz, line 325 */
1135 if (ret == 0) goto lab34;
1136 if (ret < 0) return ret;
1137 }
1138 goto lab29;
1139 lab34:
1140 z->c = z->l - m10;
1141 }
1142 lab29:
1143 { int ret = r_mark_ymUs_(z); /* call mark_ymUs_, line 325 */
1144 if (ret == 0) { z->c = z->l - m9; goto lab28; }
1145 if (ret < 0) return ret;
1146 }
1147 lab28:
1148 ;
1149 }
1150 }
1151lab0:
1152 z->bra = z->c; /* ], line 326 */
1153 { int ret = slice_del(z); /* delete, line 326 */
1154 if (ret < 0) return ret;
1155 }
1156 return 1;
1157}
1158
1159static int r_stem_suffix_chain_before_ki(struct SN_env * z) { /* backwardmode */
1160 z->ket = z->c; /* [, line 331 */
1161 { int ret = r_mark_ki(z); /* call mark_ki, line 332 */
1162 if (ret <= 0) return ret;
1163 }
1164 { int m1 = z->l - z->c; (void)m1; /* or, line 340 */
1165 { int ret = r_mark_DA(z); /* call mark_DA, line 334 */
1166 if (ret == 0) goto lab1;
1167 if (ret < 0) return ret;
1168 }
1169 z->bra = z->c; /* ], line 334 */
1170 { int ret = slice_del(z); /* delete, line 334 */
1171 if (ret < 0) return ret;
1172 }
1173 { int m2 = z->l - z->c; (void)m2; /* try, line 334 */
1174 z->ket = z->c; /* [, line 334 */
1175 { int m3 = z->l - z->c; (void)m3; /* or, line 336 */
1176 { int ret = r_mark_lAr(z); /* call mark_lAr, line 335 */
1177 if (ret == 0) goto lab4;
1178 if (ret < 0) return ret;
1179 }
1180 z->bra = z->c; /* ], line 335 */
1181 { int ret = slice_del(z); /* delete, line 335 */
1182 if (ret < 0) return ret;
1183 }
1184 { int m4 = z->l - z->c; (void)m4; /* try, line 335 */
1185 { int ret = r_stem_suffix_chain_before_ki(z); /* call stem_suffix_chain_before_ki, line 335 */
1186 if (ret == 0) { z->c = z->l - m4; goto lab5; }
1187 if (ret < 0) return ret;
1188 }
1189 lab5:
1190 ;
1191 }
1192 goto lab3;
1193 lab4:
1194 z->c = z->l - m3;
1195 { int ret = r_mark_possessives(z); /* call mark_possessives, line 337 */
1196 if (ret == 0) { z->c = z->l - m2; goto lab2; }
1197 if (ret < 0) return ret;
1198 }
1199 z->bra = z->c; /* ], line 337 */
1200 { int ret = slice_del(z); /* delete, line 337 */
1201 if (ret < 0) return ret;
1202 }
1203 { int m5 = z->l - z->c; (void)m5; /* try, line 337 */
1204 z->ket = z->c; /* [, line 337 */
1205 { int ret = r_mark_lAr(z); /* call mark_lAr, line 337 */
1206 if (ret == 0) { z->c = z->l - m5; goto lab6; }
1207 if (ret < 0) return ret;
1208 }
1209 z->bra = z->c; /* ], line 337 */
1210 { int ret = slice_del(z); /* delete, line 337 */
1211 if (ret < 0) return ret;
1212 }
1213 { int ret = r_stem_suffix_chain_before_ki(z); /* call stem_suffix_chain_before_ki, line 337 */
1214 if (ret == 0) { z->c = z->l - m5; goto lab6; }
1215 if (ret < 0) return ret;
1216 }
1217 lab6:
1218 ;
1219 }
1220 }
1221 lab3:
1222 lab2:
1223 ;
1224 }
1225 goto lab0;
1226 lab1:
1227 z->c = z->l - m1;
1228 { int ret = r_mark_nUn(z); /* call mark_nUn, line 341 */
1229 if (ret == 0) goto lab7;
1230 if (ret < 0) return ret;
1231 }
1232 z->bra = z->c; /* ], line 341 */
1233 { int ret = slice_del(z); /* delete, line 341 */
1234 if (ret < 0) return ret;
1235 }
1236 { int m6 = z->l - z->c; (void)m6; /* try, line 341 */
1237 z->ket = z->c; /* [, line 341 */
1238 { int m7 = z->l - z->c; (void)m7; /* or, line 343 */
1239 { int ret = r_mark_lArI(z); /* call mark_lArI, line 342 */
1240 if (ret == 0) goto lab10;
1241 if (ret < 0) return ret;
1242 }
1243 z->bra = z->c; /* ], line 342 */
1244 { int ret = slice_del(z); /* delete, line 342 */
1245 if (ret < 0) return ret;
1246 }
1247 goto lab9;
1248 lab10:
1249 z->c = z->l - m7;
1250 z->ket = z->c; /* [, line 344 */
1251 { int m8 = z->l - z->c; (void)m8; /* or, line 344 */
1252 { int ret = r_mark_possessives(z); /* call mark_possessives, line 344 */
1253 if (ret == 0) goto lab13;
1254 if (ret < 0) return ret;
1255 }
1256 goto lab12;
1257 lab13:
1258 z->c = z->l - m8;
1259 { int ret = r_mark_sU(z); /* call mark_sU, line 344 */
1260 if (ret == 0) goto lab11;
1261 if (ret < 0) return ret;
1262 }
1263 }
1264 lab12:
1265 z->bra = z->c; /* ], line 344 */
1266 { int ret = slice_del(z); /* delete, line 344 */
1267 if (ret < 0) return ret;
1268 }
1269 { int m9 = z->l - z->c; (void)m9; /* try, line 344 */
1270 z->ket = z->c; /* [, line 344 */
1271 { int ret = r_mark_lAr(z); /* call mark_lAr, line 344 */
1272 if (ret == 0) { z->c = z->l - m9; goto lab14; }
1273 if (ret < 0) return ret;
1274 }
1275 z->bra = z->c; /* ], line 344 */
1276 { int ret = slice_del(z); /* delete, line 344 */
1277 if (ret < 0) return ret;
1278 }
1279 { int ret = r_stem_suffix_chain_before_ki(z); /* call stem_suffix_chain_before_ki, line 344 */
1280 if (ret == 0) { z->c = z->l - m9; goto lab14; }
1281 if (ret < 0) return ret;
1282 }
1283 lab14:
1284 ;
1285 }
1286 goto lab9;
1287 lab11:
1288 z->c = z->l - m7;
1289 { int ret = r_stem_suffix_chain_before_ki(z); /* call stem_suffix_chain_before_ki, line 346 */
1290 if (ret == 0) { z->c = z->l - m6; goto lab8; }
1291 if (ret < 0) return ret;
1292 }
1293 }
1294 lab9:
1295 lab8:
1296 ;
1297 }
1298 goto lab0;
1299 lab7:
1300 z->c = z->l - m1;
1301 { int ret = r_mark_ndA(z); /* call mark_ndA, line 349 */
1302 if (ret <= 0) return ret;
1303 }
1304 { int m10 = z->l - z->c; (void)m10; /* or, line 351 */
1305 { int ret = r_mark_lArI(z); /* call mark_lArI, line 350 */
1306 if (ret == 0) goto lab16;
1307 if (ret < 0) return ret;
1308 }
1309 z->bra = z->c; /* ], line 350 */
1310 { int ret = slice_del(z); /* delete, line 350 */
1311 if (ret < 0) return ret;
1312 }
1313 goto lab15;
1314 lab16:
1315 z->c = z->l - m10;
1316 { int ret = r_mark_sU(z); /* call mark_sU, line 352 */
1317 if (ret == 0) goto lab17;
1318 if (ret < 0) return ret;
1319 }
1320 z->bra = z->c; /* ], line 352 */
1321 { int ret = slice_del(z); /* delete, line 352 */
1322 if (ret < 0) return ret;
1323 }
1324 { int m11 = z->l - z->c; (void)m11; /* try, line 352 */
1325 z->ket = z->c; /* [, line 352 */
1326 { int ret = r_mark_lAr(z); /* call mark_lAr, line 352 */
1327 if (ret == 0) { z->c = z->l - m11; goto lab18; }
1328 if (ret < 0) return ret;
1329 }
1330 z->bra = z->c; /* ], line 352 */
1331 { int ret = slice_del(z); /* delete, line 352 */
1332 if (ret < 0) return ret;
1333 }
1334 { int ret = r_stem_suffix_chain_before_ki(z); /* call stem_suffix_chain_before_ki, line 352 */
1335 if (ret == 0) { z->c = z->l - m11; goto lab18; }
1336 if (ret < 0) return ret;
1337 }
1338 lab18:
1339 ;
1340 }
1341 goto lab15;
1342 lab17:
1343 z->c = z->l - m10;
1344 { int ret = r_stem_suffix_chain_before_ki(z); /* call stem_suffix_chain_before_ki, line 354 */
1345 if (ret <= 0) return ret;
1346 }
1347 }
1348 lab15:
1349 ;
1350 }
1351lab0:
1352 return 1;
1353}
1354
1355static int r_stem_noun_suffixes(struct SN_env * z) { /* backwardmode */
1356 { int m1 = z->l - z->c; (void)m1; /* or, line 361 */
1357 z->ket = z->c; /* [, line 360 */
1358 { int ret = r_mark_lAr(z); /* call mark_lAr, line 360 */
1359 if (ret == 0) goto lab1;
1360 if (ret < 0) return ret;
1361 }
1362 z->bra = z->c; /* ], line 360 */
1363 { int ret = slice_del(z); /* delete, line 360 */
1364 if (ret < 0) return ret;
1365 }
1366 { int m2 = z->l - z->c; (void)m2; /* try, line 360 */
1367 { int ret = r_stem_suffix_chain_before_ki(z); /* call stem_suffix_chain_before_ki, line 360 */
1368 if (ret == 0) { z->c = z->l - m2; goto lab2; }
1369 if (ret < 0) return ret;
1370 }
1371 lab2:
1372 ;
1373 }
1374 goto lab0;
1375 lab1:
1376 z->c = z->l - m1;
1377 z->ket = z->c; /* [, line 362 */
1378 { int ret = r_mark_ncA(z); /* call mark_ncA, line 362 */
1379 if (ret == 0) goto lab3;
1380 if (ret < 0) return ret;
1381 }
1382 z->bra = z->c; /* ], line 362 */
1383 { int ret = slice_del(z); /* delete, line 362 */
1384 if (ret < 0) return ret;
1385 }
1386 { int m3 = z->l - z->c; (void)m3; /* try, line 363 */
1387 { int m4 = z->l - z->c; (void)m4; /* or, line 365 */
1388 z->ket = z->c; /* [, line 364 */
1389 { int ret = r_mark_lArI(z); /* call mark_lArI, line 364 */
1390 if (ret == 0) goto lab6;
1391 if (ret < 0) return ret;
1392 }
1393 z->bra = z->c; /* ], line 364 */
1394 { int ret = slice_del(z); /* delete, line 364 */
1395 if (ret < 0) return ret;
1396 }
1397 goto lab5;
1398 lab6:
1399 z->c = z->l - m4;
1400 z->ket = z->c; /* [, line 366 */
1401 { int m5 = z->l - z->c; (void)m5; /* or, line 366 */
1402 { int ret = r_mark_possessives(z); /* call mark_possessives, line 366 */
1403 if (ret == 0) goto lab9;
1404 if (ret < 0) return ret;
1405 }
1406 goto lab8;
1407 lab9:
1408 z->c = z->l - m5;
1409 { int ret = r_mark_sU(z); /* call mark_sU, line 366 */
1410 if (ret == 0) goto lab7;
1411 if (ret < 0) return ret;
1412 }
1413 }
1414 lab8:
1415 z->bra = z->c; /* ], line 366 */
1416 { int ret = slice_del(z); /* delete, line 366 */
1417 if (ret < 0) return ret;
1418 }
1419 { int m6 = z->l - z->c; (void)m6; /* try, line 366 */
1420 z->ket = z->c; /* [, line 366 */
1421 { int ret = r_mark_lAr(z); /* call mark_lAr, line 366 */
1422 if (ret == 0) { z->c = z->l - m6; goto lab10; }
1423 if (ret < 0) return ret;
1424 }
1425 z->bra = z->c; /* ], line 366 */
1426 { int ret = slice_del(z); /* delete, line 366 */
1427 if (ret < 0) return ret;
1428 }
1429 { int ret = r_stem_suffix_chain_before_ki(z); /* call stem_suffix_chain_before_ki, line 366 */
1430 if (ret == 0) { z->c = z->l - m6; goto lab10; }
1431 if (ret < 0) return ret;
1432 }
1433 lab10:
1434 ;
1435 }
1436 goto lab5;
1437 lab7:
1438 z->c = z->l - m4;
1439 z->ket = z->c; /* [, line 368 */
1440 { int ret = r_mark_lAr(z); /* call mark_lAr, line 368 */
1441 if (ret == 0) { z->c = z->l - m3; goto lab4; }
1442 if (ret < 0) return ret;
1443 }
1444 z->bra = z->c; /* ], line 368 */
1445 { int ret = slice_del(z); /* delete, line 368 */
1446 if (ret < 0) return ret;
1447 }
1448 { int ret = r_stem_suffix_chain_before_ki(z); /* call stem_suffix_chain_before_ki, line 368 */
1449 if (ret == 0) { z->c = z->l - m3; goto lab4; }
1450 if (ret < 0) return ret;
1451 }
1452 }
1453 lab5:
1454 lab4:
1455 ;
1456 }
1457 goto lab0;
1458 lab3:
1459 z->c = z->l - m1;
1460 z->ket = z->c; /* [, line 372 */
1461 { int m7 = z->l - z->c; (void)m7; /* or, line 372 */
1462 { int ret = r_mark_ndA(z); /* call mark_ndA, line 372 */
1463 if (ret == 0) goto lab13;
1464 if (ret < 0) return ret;
1465 }
1466 goto lab12;
1467 lab13:
1468 z->c = z->l - m7;
1469 { int ret = r_mark_nA(z); /* call mark_nA, line 372 */
1470 if (ret == 0) goto lab11;
1471 if (ret < 0) return ret;
1472 }
1473 }
1474 lab12:
1475 { int m8 = z->l - z->c; (void)m8; /* or, line 375 */
1476 { int ret = r_mark_lArI(z); /* call mark_lArI, line 374 */
1477 if (ret == 0) goto lab15;
1478 if (ret < 0) return ret;
1479 }
1480 z->bra = z->c; /* ], line 374 */
1481 { int ret = slice_del(z); /* delete, line 374 */
1482 if (ret < 0) return ret;
1483 }
1484 goto lab14;
1485 lab15:
1486 z->c = z->l - m8;
1487 { int ret = r_mark_sU(z); /* call mark_sU, line 376 */
1488 if (ret == 0) goto lab16;
1489 if (ret < 0) return ret;
1490 }
1491 z->bra = z->c; /* ], line 376 */
1492 { int ret = slice_del(z); /* delete, line 376 */
1493 if (ret < 0) return ret;
1494 }
1495 { int m9 = z->l - z->c; (void)m9; /* try, line 376 */
1496 z->ket = z->c; /* [, line 376 */
1497 { int ret = r_mark_lAr(z); /* call mark_lAr, line 376 */
1498 if (ret == 0) { z->c = z->l - m9; goto lab17; }
1499 if (ret < 0) return ret;
1500 }
1501 z->bra = z->c; /* ], line 376 */
1502 { int ret = slice_del(z); /* delete, line 376 */
1503 if (ret < 0) return ret;
1504 }
1505 { int ret = r_stem_suffix_chain_before_ki(z); /* call stem_suffix_chain_before_ki, line 376 */
1506 if (ret == 0) { z->c = z->l - m9; goto lab17; }
1507 if (ret < 0) return ret;
1508 }
1509 lab17:
1510 ;
1511 }
1512 goto lab14;
1513 lab16:
1514 z->c = z->l - m8;
1515 { int ret = r_stem_suffix_chain_before_ki(z); /* call stem_suffix_chain_before_ki, line 378 */
1516 if (ret == 0) goto lab11;
1517 if (ret < 0) return ret;
1518 }
1519 }
1520 lab14:
1521 goto lab0;
1522 lab11:
1523 z->c = z->l - m1;
1524 z->ket = z->c; /* [, line 382 */
1525 { int m10 = z->l - z->c; (void)m10; /* or, line 382 */
1526 { int ret = r_mark_ndAn(z); /* call mark_ndAn, line 382 */
1527 if (ret == 0) goto lab20;
1528 if (ret < 0) return ret;
1529 }
1530 goto lab19;
1531 lab20:
1532 z->c = z->l - m10;
1533 { int ret = r_mark_nU(z); /* call mark_nU, line 382 */
1534 if (ret == 0) goto lab18;
1535 if (ret < 0) return ret;
1536 }
1537 }
1538 lab19:
1539 { int m11 = z->l - z->c; (void)m11; /* or, line 382 */
1540 { int ret = r_mark_sU(z); /* call mark_sU, line 382 */
1541 if (ret == 0) goto lab22;
1542 if (ret < 0) return ret;
1543 }
1544 z->bra = z->c; /* ], line 382 */
1545 { int ret = slice_del(z); /* delete, line 382 */
1546 if (ret < 0) return ret;
1547 }
1548 { int m12 = z->l - z->c; (void)m12; /* try, line 382 */
1549 z->ket = z->c; /* [, line 382 */
1550 { int ret = r_mark_lAr(z); /* call mark_lAr, line 382 */
1551 if (ret == 0) { z->c = z->l - m12; goto lab23; }
1552 if (ret < 0) return ret;
1553 }
1554 z->bra = z->c; /* ], line 382 */
1555 { int ret = slice_del(z); /* delete, line 382 */
1556 if (ret < 0) return ret;
1557 }
1558 { int ret = r_stem_suffix_chain_before_ki(z); /* call stem_suffix_chain_before_ki, line 382 */
1559 if (ret == 0) { z->c = z->l - m12; goto lab23; }
1560 if (ret < 0) return ret;
1561 }
1562 lab23:
1563 ;
1564 }
1565 goto lab21;
1566 lab22:
1567 z->c = z->l - m11;
1568 { int ret = r_mark_lArI(z); /* call mark_lArI, line 382 */
1569 if (ret == 0) goto lab18;
1570 if (ret < 0) return ret;
1571 }
1572 }
1573 lab21:
1574 goto lab0;
1575 lab18:
1576 z->c = z->l - m1;
1577 z->ket = z->c; /* [, line 384 */
1578 { int ret = r_mark_DAn(z); /* call mark_DAn, line 384 */
1579 if (ret == 0) goto lab24;
1580 if (ret < 0) return ret;
1581 }
1582 z->bra = z->c; /* ], line 384 */
1583 { int ret = slice_del(z); /* delete, line 384 */
1584 if (ret < 0) return ret;
1585 }
1586 { int m13 = z->l - z->c; (void)m13; /* try, line 384 */
1587 z->ket = z->c; /* [, line 384 */
1588 { int m14 = z->l - z->c; (void)m14; /* or, line 387 */
1589 { int ret = r_mark_possessives(z); /* call mark_possessives, line 386 */
1590 if (ret == 0) goto lab27;
1591 if (ret < 0) return ret;
1592 }
1593 z->bra = z->c; /* ], line 386 */
1594 { int ret = slice_del(z); /* delete, line 386 */
1595 if (ret < 0) return ret;
1596 }
1597 { int m15 = z->l - z->c; (void)m15; /* try, line 386 */
1598 z->ket = z->c; /* [, line 386 */
1599 { int ret = r_mark_lAr(z); /* call mark_lAr, line 386 */
1600 if (ret == 0) { z->c = z->l - m15; goto lab28; }
1601 if (ret < 0) return ret;
1602 }
1603 z->bra = z->c; /* ], line 386 */
1604 { int ret = slice_del(z); /* delete, line 386 */
1605 if (ret < 0) return ret;
1606 }
1607 { int ret = r_stem_suffix_chain_before_ki(z); /* call stem_suffix_chain_before_ki, line 386 */
1608 if (ret == 0) { z->c = z->l - m15; goto lab28; }
1609 if (ret < 0) return ret;
1610 }
1611 lab28:
1612 ;
1613 }
1614 goto lab26;
1615 lab27:
1616 z->c = z->l - m14;
1617 { int ret = r_mark_lAr(z); /* call mark_lAr, line 388 */
1618 if (ret == 0) goto lab29;
1619 if (ret < 0) return ret;
1620 }
1621 z->bra = z->c; /* ], line 388 */
1622 { int ret = slice_del(z); /* delete, line 388 */
1623 if (ret < 0) return ret;
1624 }
1625 { int m16 = z->l - z->c; (void)m16; /* try, line 388 */
1626 { int ret = r_stem_suffix_chain_before_ki(z); /* call stem_suffix_chain_before_ki, line 388 */
1627 if (ret == 0) { z->c = z->l - m16; goto lab30; }
1628 if (ret < 0) return ret;
1629 }
1630 lab30:
1631 ;
1632 }
1633 goto lab26;
1634 lab29:
1635 z->c = z->l - m14;
1636 { int ret = r_stem_suffix_chain_before_ki(z); /* call stem_suffix_chain_before_ki, line 390 */
1637 if (ret == 0) { z->c = z->l - m13; goto lab25; }
1638 if (ret < 0) return ret;
1639 }
1640 }
1641 lab26:
1642 lab25:
1643 ;
1644 }
1645 goto lab0;
1646 lab24:
1647 z->c = z->l - m1;
1648 z->ket = z->c; /* [, line 394 */
1649 { int m17 = z->l - z->c; (void)m17; /* or, line 394 */
1650 { int ret = r_mark_nUn(z); /* call mark_nUn, line 394 */
1651 if (ret == 0) goto lab33;
1652 if (ret < 0) return ret;
1653 }
1654 goto lab32;
1655 lab33:
1656 z->c = z->l - m17;
1657 { int ret = r_mark_ylA(z); /* call mark_ylA, line 394 */
1658 if (ret == 0) goto lab31;
1659 if (ret < 0) return ret;
1660 }
1661 }
1662 lab32:
1663 z->bra = z->c; /* ], line 394 */
1664 { int ret = slice_del(z); /* delete, line 394 */
1665 if (ret < 0) return ret;
1666 }
1667 { int m18 = z->l - z->c; (void)m18; /* try, line 395 */
1668 { int m19 = z->l - z->c; (void)m19; /* or, line 397 */
1669 z->ket = z->c; /* [, line 396 */
1670 { int ret = r_mark_lAr(z); /* call mark_lAr, line 396 */
1671 if (ret == 0) goto lab36;
1672 if (ret < 0) return ret;
1673 }
1674 z->bra = z->c; /* ], line 396 */
1675 { int ret = slice_del(z); /* delete, line 396 */
1676 if (ret < 0) return ret;
1677 }
1678 { int ret = r_stem_suffix_chain_before_ki(z); /* call stem_suffix_chain_before_ki, line 396 */
1679 if (ret == 0) goto lab36;
1680 if (ret < 0) return ret;
1681 }
1682 goto lab35;
1683 lab36:
1684 z->c = z->l - m19;
1685 z->ket = z->c; /* [, line 398 */
1686 { int m20 = z->l - z->c; (void)m20; /* or, line 398 */
1687 { int ret = r_mark_possessives(z); /* call mark_possessives, line 398 */
1688 if (ret == 0) goto lab39;
1689 if (ret < 0) return ret;
1690 }
1691 goto lab38;
1692 lab39:
1693 z->c = z->l - m20;
1694 { int ret = r_mark_sU(z); /* call mark_sU, line 398 */
1695 if (ret == 0) goto lab37;
1696 if (ret < 0) return ret;
1697 }
1698 }
1699 lab38:
1700 z->bra = z->c; /* ], line 398 */
1701 { int ret = slice_del(z); /* delete, line 398 */
1702 if (ret < 0) return ret;
1703 }
1704 { int m21 = z->l - z->c; (void)m21; /* try, line 398 */
1705 z->ket = z->c; /* [, line 398 */
1706 { int ret = r_mark_lAr(z); /* call mark_lAr, line 398 */
1707 if (ret == 0) { z->c = z->l - m21; goto lab40; }
1708 if (ret < 0) return ret;
1709 }
1710 z->bra = z->c; /* ], line 398 */
1711 { int ret = slice_del(z); /* delete, line 398 */
1712 if (ret < 0) return ret;
1713 }
1714 { int ret = r_stem_suffix_chain_before_ki(z); /* call stem_suffix_chain_before_ki, line 398 */
1715 if (ret == 0) { z->c = z->l - m21; goto lab40; }
1716 if (ret < 0) return ret;
1717 }
1718 lab40:
1719 ;
1720 }
1721 goto lab35;
1722 lab37:
1723 z->c = z->l - m19;
1724 { int ret = r_stem_suffix_chain_before_ki(z); /* call stem_suffix_chain_before_ki, line 400 */
1725 if (ret == 0) { z->c = z->l - m18; goto lab34; }
1726 if (ret < 0) return ret;
1727 }
1728 }
1729 lab35:
1730 lab34:
1731 ;
1732 }
1733 goto lab0;
1734 lab31:
1735 z->c = z->l - m1;
1736 z->ket = z->c; /* [, line 404 */
1737 { int ret = r_mark_lArI(z); /* call mark_lArI, line 404 */
1738 if (ret == 0) goto lab41;
1739 if (ret < 0) return ret;
1740 }
1741 z->bra = z->c; /* ], line 404 */
1742 { int ret = slice_del(z); /* delete, line 404 */
1743 if (ret < 0) return ret;
1744 }
1745 goto lab0;
1746 lab41:
1747 z->c = z->l - m1;
1748 { int ret = r_stem_suffix_chain_before_ki(z); /* call stem_suffix_chain_before_ki, line 406 */
1749 if (ret == 0) goto lab42;
1750 if (ret < 0) return ret;
1751 }
1752 goto lab0;
1753 lab42:
1754 z->c = z->l - m1;
1755 z->ket = z->c; /* [, line 408 */
1756 { int m22 = z->l - z->c; (void)m22; /* or, line 408 */
1757 { int ret = r_mark_DA(z); /* call mark_DA, line 408 */
1758 if (ret == 0) goto lab45;
1759 if (ret < 0) return ret;
1760 }
1761 goto lab44;
1762 lab45:
1763 z->c = z->l - m22;
1764 { int ret = r_mark_yU(z); /* call mark_yU, line 408 */
1765 if (ret == 0) goto lab46;
1766 if (ret < 0) return ret;
1767 }
1768 goto lab44;
1769 lab46:
1770 z->c = z->l - m22;
1771 { int ret = r_mark_yA(z); /* call mark_yA, line 408 */
1772 if (ret == 0) goto lab43;
1773 if (ret < 0) return ret;
1774 }
1775 }
1776 lab44:
1777 z->bra = z->c; /* ], line 408 */
1778 { int ret = slice_del(z); /* delete, line 408 */
1779 if (ret < 0) return ret;
1780 }
1781 { int m23 = z->l - z->c; (void)m23; /* try, line 408 */
1782 z->ket = z->c; /* [, line 408 */
1783 { int m24 = z->l - z->c; (void)m24; /* or, line 408 */
1784 { int ret = r_mark_possessives(z); /* call mark_possessives, line 408 */
1785 if (ret == 0) goto lab49;
1786 if (ret < 0) return ret;
1787 }
1788 z->bra = z->c; /* ], line 408 */
1789 { int ret = slice_del(z); /* delete, line 408 */
1790 if (ret < 0) return ret;
1791 }
1792 { int m25 = z->l - z->c; (void)m25; /* try, line 408 */
1793 z->ket = z->c; /* [, line 408 */
1794 { int ret = r_mark_lAr(z); /* call mark_lAr, line 408 */
1795 if (ret == 0) { z->c = z->l - m25; goto lab50; }
1796 if (ret < 0) return ret;
1797 }
1798 lab50:
1799 ;
1800 }
1801 goto lab48;
1802 lab49:
1803 z->c = z->l - m24;
1804 { int ret = r_mark_lAr(z); /* call mark_lAr, line 408 */
1805 if (ret == 0) { z->c = z->l - m23; goto lab47; }
1806 if (ret < 0) return ret;
1807 }
1808 }
1809 lab48:
1810 z->bra = z->c; /* ], line 408 */
1811 { int ret = slice_del(z); /* delete, line 408 */
1812 if (ret < 0) return ret;
1813 }
1814 z->ket = z->c; /* [, line 408 */
1815 { int ret = r_stem_suffix_chain_before_ki(z); /* call stem_suffix_chain_before_ki, line 408 */
1816 if (ret == 0) { z->c = z->l - m23; goto lab47; }
1817 if (ret < 0) return ret;
1818 }
1819 lab47:
1820 ;
1821 }
1822 goto lab0;
1823 lab43:
1824 z->c = z->l - m1;
1825 z->ket = z->c; /* [, line 410 */
1826 { int m26 = z->l - z->c; (void)m26; /* or, line 410 */
1827 { int ret = r_mark_possessives(z); /* call mark_possessives, line 410 */
1828 if (ret == 0) goto lab52;
1829 if (ret < 0) return ret;
1830 }
1831 goto lab51;
1832 lab52:
1833 z->c = z->l - m26;
1834 { int ret = r_mark_sU(z); /* call mark_sU, line 410 */
1835 if (ret <= 0) return ret;
1836 }
1837 }
1838 lab51:
1839 z->bra = z->c; /* ], line 410 */
1840 { int ret = slice_del(z); /* delete, line 410 */
1841 if (ret < 0) return ret;
1842 }
1843 { int m27 = z->l - z->c; (void)m27; /* try, line 410 */
1844 z->ket = z->c; /* [, line 410 */
1845 { int ret = r_mark_lAr(z); /* call mark_lAr, line 410 */
1846 if (ret == 0) { z->c = z->l - m27; goto lab53; }
1847 if (ret < 0) return ret;
1848 }
1849 z->bra = z->c; /* ], line 410 */
1850 { int ret = slice_del(z); /* delete, line 410 */
1851 if (ret < 0) return ret;
1852 }
1853 { int ret = r_stem_suffix_chain_before_ki(z); /* call stem_suffix_chain_before_ki, line 410 */
1854 if (ret == 0) { z->c = z->l - m27; goto lab53; }
1855 if (ret < 0) return ret;
1856 }
1857 lab53:
1858 ;
1859 }
1860 }
1861lab0:
1862 return 1;
1863}
1864
1865static int r_post_process_last_consonants(struct SN_env * z) { /* backwardmode */
1866 int among_var;
1867 z->ket = z->c; /* [, line 414 */
1868 among_var = find_among_b(z, a_23, 4); /* substring, line 414 */
1869 if (!(among_var)) return 0;
1870 z->bra = z->c; /* ], line 414 */
1871 switch (among_var) { /* among, line 414 */
1872 case 1:
1873 { int ret = slice_from_s(z, 1, s_5); /* <-, line 415 */
1874 if (ret < 0) return ret;
1875 }
1876 break;
1877 case 2:
1878 { int ret = slice_from_s(z, 2, s_6); /* <-, line 416 */
1879 if (ret < 0) return ret;
1880 }
1881 break;
1882 case 3:
1883 { int ret = slice_from_s(z, 1, s_7); /* <-, line 417 */
1884 if (ret < 0) return ret;
1885 }
1886 break;
1887 case 4:
1888 { int ret = slice_from_s(z, 1, s_8); /* <-, line 418 */
1889 if (ret < 0) return ret;
1890 }
1891 break;
1892 }
1893 return 1;
1894}
1895
1896static int r_append_U_to_stems_ending_with_d_or_g(struct SN_env * z) { /* backwardmode */
1897 { int m_test1 = z->l - z->c; /* test, line 429 */
1898 { int m2 = z->l - z->c; (void)m2; /* or, line 429 */
1899 if (z->c <= z->lb || z->p[z->c - 1] != 'd') goto lab1; /* literal, line 429 */
1900 z->c--;
1901 goto lab0;
1902 lab1:
1903 z->c = z->l - m2;
1904 if (z->c <= z->lb || z->p[z->c - 1] != 'g') return 0; /* literal, line 429 */
1905 z->c--;
1906 }
1907 lab0:
1908 z->c = z->l - m_test1;
1909 }
1910 { int m3 = z->l - z->c; (void)m3; /* or, line 431 */
1911 { int m_test4 = z->l - z->c; /* test, line 430 */
1912 if (out_grouping_b_U(z, g_vowel, 97, 305, 1) < 0) goto lab3; /* goto */ /* grouping vowel, line 430 */
1913 { int m5 = z->l - z->c; (void)m5; /* or, line 430 */
1914 if (z->c <= z->lb || z->p[z->c - 1] != 'a') goto lab5; /* literal, line 430 */
1915 z->c--;
1916 goto lab4;
1917 lab5:
1918 z->c = z->l - m5;
1919 if (!(eq_s_b(z, 2, s_9))) goto lab3; /* literal, line 430 */
1920 }
1921 lab4:
1922 z->c = z->l - m_test4;
1923 }
1924 { int ret;
1925 { int saved_c = z->c;
1926 ret = insert_s(z, z->c, z->c, 2, s_10); /* <+, line 430 */
1927 z->c = saved_c;
1928 }
1929 if (ret < 0) return ret;
1930 }
1931 goto lab2;
1932 lab3:
1933 z->c = z->l - m3;
1934 { int m_test6 = z->l - z->c; /* test, line 432 */
1935 if (out_grouping_b_U(z, g_vowel, 97, 305, 1) < 0) goto lab6; /* goto */ /* grouping vowel, line 432 */
1936 { int m7 = z->l - z->c; (void)m7; /* or, line 432 */
1937 if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab8; /* literal, line 432 */
1938 z->c--;
1939 goto lab7;
1940 lab8:
1941 z->c = z->l - m7;
1942 if (z->c <= z->lb || z->p[z->c - 1] != 'i') goto lab6; /* literal, line 432 */
1943 z->c--;
1944 }
1945 lab7:
1946 z->c = z->l - m_test6;
1947 }
1948 { int ret;
1949 { int saved_c = z->c;
1950 ret = insert_s(z, z->c, z->c, 1, s_11); /* <+, line 432 */
1951 z->c = saved_c;
1952 }
1953 if (ret < 0) return ret;
1954 }
1955 goto lab2;
1956 lab6:
1957 z->c = z->l - m3;
1958 { int m_test8 = z->l - z->c; /* test, line 434 */
1959 if (out_grouping_b_U(z, g_vowel, 97, 305, 1) < 0) goto lab9; /* goto */ /* grouping vowel, line 434 */
1960 { int m9 = z->l - z->c; (void)m9; /* or, line 434 */
1961 if (z->c <= z->lb || z->p[z->c - 1] != 'o') goto lab11; /* literal, line 434 */
1962 z->c--;
1963 goto lab10;
1964 lab11:
1965 z->c = z->l - m9;
1966 if (z->c <= z->lb || z->p[z->c - 1] != 'u') goto lab9; /* literal, line 434 */
1967 z->c--;
1968 }
1969 lab10:
1970 z->c = z->l - m_test8;
1971 }
1972 { int ret;
1973 { int saved_c = z->c;
1974 ret = insert_s(z, z->c, z->c, 1, s_12); /* <+, line 434 */
1975 z->c = saved_c;
1976 }
1977 if (ret < 0) return ret;
1978 }
1979 goto lab2;
1980 lab9:
1981 z->c = z->l - m3;
1982 { int m_test10 = z->l - z->c; /* test, line 436 */
1983 if (out_grouping_b_U(z, g_vowel, 97, 305, 1) < 0) return 0; /* goto */ /* grouping vowel, line 436 */
1984 { int m11 = z->l - z->c; (void)m11; /* or, line 436 */
1985 if (!(eq_s_b(z, 2, s_13))) goto lab13; /* literal, line 436 */
1986 goto lab12;
1987 lab13:
1988 z->c = z->l - m11;
1989 if (!(eq_s_b(z, 2, s_14))) return 0; /* literal, line 436 */
1990 }
1991 lab12:
1992 z->c = z->l - m_test10;
1993 }
1994 { int ret;
1995 { int saved_c = z->c;
1996 ret = insert_s(z, z->c, z->c, 2, s_15); /* <+, line 436 */
1997 z->c = saved_c;
1998 }
1999 if (ret < 0) return ret;
2000 }
2001 }
2002lab2:
2003 return 1;
2004}
2005
2006static int r_is_reserved_word(struct SN_env * z) { /* backwardmode */
2007 if (!(eq_s_b(z, 2, s_16))) return 0; /* literal, line 440 */
2008 { int m1 = z->l - z->c; (void)m1; /* try, line 440 */
2009 if (!(eq_s_b(z, 3, s_17))) { z->c = z->l - m1; goto lab0; } /* literal, line 440 */
2010 lab0:
2011 ;
2012 }
2013 if (z->c > z->lb) return 0; /* atlimit, line 440 */
2014 return 1;
2015}
2016
2017static int r_more_than_one_syllable_word(struct SN_env * z) { /* forwardmode */
2018 { int c_test1 = z->c; /* test, line 447 */
2019 { int i = 2;
2020 while(1) { /* atleast, line 447 */
2021 int c2 = z->c;
2022 { /* gopast */ /* grouping vowel, line 447 */
2023 int ret = out_grouping_U(z, g_vowel, 97, 305, 1);
2024 if (ret < 0) goto lab0;
2025 z->c += ret;
2026 }
2027 i--;
2028 continue;
2029 lab0:
2030 z->c = c2;
2031 break;
2032 }
2033 if (i > 0) return 0;
2034 }
2035 z->c = c_test1;
2036 }
2037 return 1;
2038}
2039
2040static int r_postlude(struct SN_env * z) { /* forwardmode */
2041 z->lb = z->c; z->c = z->l; /* backwards, line 451 */
2042
2043 { int m1 = z->l - z->c; (void)m1; /* not, line 452 */
2044 { int ret = r_is_reserved_word(z); /* call is_reserved_word, line 452 */
2045 if (ret == 0) goto lab0;
2046 if (ret < 0) return ret;
2047 }
2048 return 0;
2049 lab0:
2050 z->c = z->l - m1;
2051 }
2052 { int m2 = z->l - z->c; (void)m2; /* do, line 453 */
2053 { int ret = r_append_U_to_stems_ending_with_d_or_g(z); /* call append_U_to_stems_ending_with_d_or_g, line 453 */
2054 if (ret == 0) goto lab1;
2055 if (ret < 0) return ret;
2056 }
2057 lab1:
2058 z->c = z->l - m2;
2059 }
2060 { int m3 = z->l - z->c; (void)m3; /* do, line 454 */
2061 { int ret = r_post_process_last_consonants(z); /* call post_process_last_consonants, line 454 */
2062 if (ret == 0) goto lab2;
2063 if (ret < 0) return ret;
2064 }
2065 lab2:
2066 z->c = z->l - m3;
2067 }
2068 z->c = z->lb;
2069 return 1;
2070}
2071
2072extern int turkish_UTF_8_stem(struct SN_env * z) { /* forwardmode */
2073 { int ret = r_more_than_one_syllable_word(z); /* call more_than_one_syllable_word, line 460 */
2074 if (ret <= 0) return ret;
2075 }
2076 z->lb = z->c; z->c = z->l; /* backwards, line 462 */
2077
2078 { int m1 = z->l - z->c; (void)m1; /* do, line 463 */
2079 { int ret = r_stem_nominal_verb_suffixes(z); /* call stem_nominal_verb_suffixes, line 463 */
2080 if (ret == 0) goto lab0;
2081 if (ret < 0) return ret;
2082 }
2083 lab0:
2084 z->c = z->l - m1;
2085 }
2086 if (!(z->B[0])) return 0; /* Boolean test continue_stemming_noun_suffixes, line 464 */
2087 { int m2 = z->l - z->c; (void)m2; /* do, line 465 */
2088 { int ret = r_stem_noun_suffixes(z); /* call stem_noun_suffixes, line 465 */
2089 if (ret == 0) goto lab1;
2090 if (ret < 0) return ret;
2091 }
2092 lab1:
2093 z->c = z->l - m2;
2094 }
2095 z->c = z->lb;
2096 { int ret = r_postlude(z); /* call postlude, line 468 */
2097 if (ret <= 0) return ret;
2098 }
2099 return 1;
2100}
2101
2102extern struct SN_env * turkish_UTF_8_create_env(void) { return SN_create_env(0, 0, 1); }
2103
2104extern void turkish_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }
2105
2106