PostgreSQL Source Code  git master
stem_UTF_8_turkish.c
Go to the documentation of this file.
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_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 
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 
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 
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 
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 
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 
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;
650  if (ret <= 0) return ret;
651  }
652  return 1;
653 }
654 
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;
661  if (ret <= 0) return ret;
662  }
663  return 1;
664 }
665 
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 
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;
678  if (ret <= 0) return ret;
679  }
680  return 1;
681 }
682 
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 
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;
698  if (ret <= 0) return ret;
699  }
700  return 1;
701 }
702 
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;
710  if (ret <= 0) return ret;
711  }
712  return 1;
713 }
714 
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 
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 
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 
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 
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 
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;
767  if (ret <= 0) return ret;
768  }
769  return 1;
770 }
771 
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 
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;
784  if (ret <= 0) return ret;
785  }
786  return 1;
787 }
788 
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;
796  if (ret <= 0) return ret;
797  }
798  return 1;
799 }
800 
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 
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;
817  if (ret <= 0) return ret;
818  }
819  return 1;
820 }
821 
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 
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 
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 
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 
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 
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;
867  if (ret <= 0) return ret;
868  }
869  return 1;
870 }
871 
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;
876  if (ret <= 0) return ret;
877  }
878  return 1;
879 }
880 
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;
888  if (ret <= 0) return ret;
889  }
890  return 1;
891 }
892 
893 static int r_mark_yken(struct SN_env * z) {
894  if (!(eq_s_b(z, 3, s_4))) return 0;
896  if (ret <= 0) return ret;
897  }
898  return 1;
899 }
900 
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 
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 
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 
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 
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 
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 
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 
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;
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 
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 
2093 extern struct SN_env * turkish_UTF_8_create_env(void) { return SN_create_env(0, 1); }
2094 
2095 extern void turkish_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }
2096 
struct SN_env * SN_create_env(int S_size, int I_size)
Definition: api.c:3
void SN_close_env(struct SN_env *z, int S_size)
Definition: api.c:34
unsigned char symbol
Definition: api.h:2
int i
Definition: isn.c:73
static const symbol s_22_0[4]
static const symbol s_20_21[3]
static int r_mark_ymUs_(struct SN_env *z)
static const symbol s_2[]
static const symbol s_13_3[4]
static int r_mark_suffix_with_optional_n_consonant(struct SN_env *z)
static int r_mark_nUz(struct SN_env *z)
static const symbol s_0_2[3]
static const symbol s_20_26[2]
static const symbol s_11_1[2]
static int r_mark_yken(struct SN_env *z)
static const symbol s_4[]
static const symbol s_20_0[2]
static int r_is_reserved_word(struct SN_env *z)
static const struct among a_8[4]
static const symbol s_3_2[3]
static const symbol s_12_0[2]
static const struct among a_19[2]
static const struct among a_12[4]
static const symbol s_20_24[4]
static const struct among a_17[4]
static const symbol s_17_3[4]
static const symbol s_15_2[7]
static const symbol s_0_5[3]
static int r_mark_suffix_with_optional_s_consonant(struct SN_env *z)
static const symbol s_20_13[3]
static const unsigned char g_vowel5[]
static int r_mark_nUn(struct SN_env *z)
static const symbol s_0_3[3]
static int r_mark_yUm(struct SN_env *z)
static const symbol s_3_1[2]
static const symbol s_13_0[3]
static const symbol s_0_0[1]
static int r_mark_sUn(struct SN_env *z)
static const symbol s_5_0[2]
static const symbol s_21_3[3]
static const struct among a_7[2]
static const symbol s_20_10[3]
static const symbol s_21_1[2]
static const symbol s_20_14[4]
static const unsigned char g_vowel2[]
static const symbol s_2_3[3]
static const symbol s_19_0[7]
static const symbol s_2_0[2]
static const struct among a_6[4]
static int r_append_U_to_stems_ending_with_d_or_g(struct SN_env *z)
static const struct among a_16[2]
static const symbol s_20_22[4]
static const symbol s_20_17[4]
static const symbol s_18_7[4]
static const struct among a_3[4]
static const symbol s_6[]
static const symbol s_21_6[3]
static int r_mark_DA(struct SN_env *z)
static const symbol s_3[]
static const symbol s_3_0[2]
static const symbol s_15_0[5]
static const symbol s_19_1[6]
static const symbol s_12_3[3]
static const symbol s_20_6[4]
static const symbol s_18_2[3]
static const symbol s_20_3[3]
static int r_mark_ylA(struct SN_env *z)
static const struct among a_22[4]
static const symbol s_20_31[3]
static int r_mark_yA(struct SN_env *z)
static const symbol s_7_1[3]
static int r_mark_ndA(struct SN_env *z)
static const symbol s_18_4[4]
static const symbol s_18_1[3]
static int r_mark_sU(struct SN_env *z)
static const struct among a_23[4]
static const symbol s_20_8[4]
static const struct among a_5[2]
static const symbol s_7[]
static const symbol s_8_0[3]
struct SN_env * turkish_UTF_8_create_env(void)
static const symbol s_13[]
static int r_mark_yU(struct SN_env *z)
static const symbol s_8_2[3]
static const symbol s_23_1[1]
static int r_mark_nA(struct SN_env *z)
static int r_mark_yUz(struct SN_env *z)
static const symbol s_20_27[2]
static const symbol s_23_2[1]
static const symbol s_18_3[3]
static const symbol s_13_1[3]
static const symbol s_20_19[3]
static const symbol s_20_30[3]
static const symbol s_17_0[3]
static const struct among a_11[2]
static const symbol s_14_0[2]
static int r_mark_cAsInA(struct SN_env *z)
static const struct among a_10[2]
static const symbol s_18_0[3]
static const symbol s_16_1[3]
static const symbol s_10_1[2]
static const symbol s_12_1[2]
static const symbol s_21_5[3]
static const symbol s_0_6[4]
static const symbol s_0_9[4]
static int r_mark_DAn(struct SN_env *z)
static const symbol s_7_0[3]
static int r_mark_lArI(struct SN_env *z)
static const symbol s_20_4[3]
static int r_check_vowel_harmony(struct SN_env *z)
static int r_mark_ndAn(struct SN_env *z)
static const struct among a_1[2]
static const symbol s_8_1[3]
static const symbol s_21_0[2]
static const symbol s_22_1[4]
void turkish_UTF_8_close_env(struct SN_env *z)
static const symbol s_6_2[2]
static int r_mark_suffix_with_optional_y_consonant(struct SN_env *z)
static const symbol s_15_3[7]
static const struct among a_14[4]
static const symbol s_4_1[1]
static const symbol s_20_2[3]
static const symbol s_20_23[4]
static const symbol s_20_25[4]
static const symbol s_17_2[4]
static int r_mark_ki(struct SN_env *z)
static const symbol s_16[]
static int r_postlude(struct SN_env *z)
static const symbol s_14[]
static const unsigned char g_vowel1[]
static const struct among a_20[32]
static int r_mark_DUr(struct SN_env *z)
static const symbol s_15_1[5]
static const symbol s_9_0[4]
static int r_stem_nominal_verb_suffixes(struct SN_env *z)
static const struct among a_18[8]
static const struct among a_4[2]
static const struct among a_15[4]
static const symbol s_0_7[4]
static const symbol s_10[]
static int r_mark_yDU(struct SN_env *z)
static const struct among a_2[4]
static const symbol s_4_0[1]
static const symbol s_1[]
static const symbol s_20_9[4]
static const symbol s_21_7[3]
static const symbol s_9_1[4]
static const symbol s_20_28[3]
static const struct among a_13[4]
static const symbol s_14_2[3]
static const symbol s_20_20[3]
static const symbol s_3_3[3]
static const struct among a_9[2]
static const symbol s_17_1[3]
static const symbol s_2_2[3]
int turkish_UTF_8_stem(struct SN_env *z)
static const symbol s_20_1[2]
static int r_mark_lAr(struct SN_env *z)
static int r_mark_ysA(struct SN_env *z)
static const symbol s_20_5[3]
static const symbol s_11[]
static const symbol s_12[]
static int r_stem_suffix_chain_before_ki(struct SN_env *z)
static const symbol s_6_1[2]
static const unsigned char g_U[]
static const symbol s_20_18[3]
static const symbol s_6_3[2]
static int r_mark_suffix_with_optional_U_vowel(struct SN_env *z)
static const unsigned char g_vowel6[]
static int r_mark_nU(struct SN_env *z)
static const struct among a_21[8]
static const symbol s_21_4[3]
static const symbol s_20_7[4]
static const symbol s_23_0[1]
static const symbol s_0_1[1]
static const symbol s_0_8[4]
static int r_more_than_one_syllable_word(struct SN_env *z)
static int r_mark_possessives(struct SN_env *z)
static const symbol s_10_0[2]
static const struct among a_0[10]
static const symbol s_22_2[5]
static int r_mark_ncA(struct SN_env *z)
static const symbol s_20_12[3]
static const symbol s_5_1[2]
static const symbol s_18_5[4]
static const symbol s_1_1[5]
static const symbol s_20_29[3]
static const symbol s_18_6[4]
static const symbol s_17[]
static const unsigned char g_vowel4[]
static int r_post_process_last_consonants(struct SN_env *z)
static int r_stem_noun_suffixes(struct SN_env *z)
static const symbol s_22_3[5]
static const symbol s_14_1[2]
static const symbol s_13_2[4]
static int r_mark_sUnUz(struct SN_env *z)
static const symbol s_16_0[3]
static const unsigned char g_vowel[]
static const symbol s_21_2[3]
static const symbol s_2_1[2]
static const symbol s_14_3[3]
static const unsigned char g_vowel3[]
static const symbol s_6_0[2]
static const symbol s_12_2[3]
static const symbol s_8[]
static const symbol s_9[]
static const symbol s_20_15[4]
static const symbol s_5[]
static const symbol s_20_16[4]
static const symbol s_20_11[3]
static const symbol s_15[]
static const symbol s_8_3[3]
static const symbol s_11_0[2]
static const symbol s_1_0[4]
static const symbol s_23_3[2]
static const symbol s_0[]
static const symbol s_0_4[3]
Definition: api.h:14
int lb
Definition: api.h:16
symbol * p
Definition: api.h:15
int * I
Definition: api.h:18
int ket
Definition: api.h:16
int c
Definition: api.h:16
int bra
Definition: api.h:16
int l
Definition: api.h:16
Definition: header.h:16
int find_among_b(struct SN_env *z, const struct among *v, int v_size)
Definition: utilities.c:298
int out_grouping_U(struct SN_env *z, const unsigned char *s, int min, int max, int repeat)
Definition: utilities.c:141
int insert_s(struct SN_env *z, int bra, int ket, int s_size, const symbol *s)
Definition: utilities.c:435
int slice_del(struct SN_env *z)
Definition: utilities.c:431
int in_grouping_b_U(struct SN_env *z, const unsigned char *s, int min, int max, int repeat)
Definition: utilities.c:129
int skip_b_utf8(const symbol *p, int c, int limit, int n)
Definition: utilities.c:52
int eq_s_b(struct SN_env *z, int s_size, const symbol *s)
Definition: utilities.c:220
int out_grouping_b_U(struct SN_env *z, const unsigned char *s, int min, int max, int repeat)
Definition: utilities.c:153
int slice_from_s(struct SN_env *z, int s_size, const symbol *s)
Definition: utilities.c:422