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