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