xapian-core  2.1.0
turkish.cc
Go to the documentation of this file.
1 /* Generated from turkish.sbl by Snowball 3.1.1 - https://snowballstem.org/ */
2 
3 #include <config.h>
4 
5 #define SNOWBALL_RUNTIME_THROW_EXCEPTIONS
6 #include "turkish.h"
7 
8 #include <stddef.h>
9 
11 
12 static int r_stem_suffix_chain_before_ki(struct SN_env * z);
13 static int r_mark_suffix_with_optional_n_consonant(struct SN_env * z);
14 static int r_mark_suffix_with_optional_y_consonant(struct SN_env * z);
15 static int r_mark_ysA(struct SN_env * z);
16 static int r_mark_ymUs_(struct SN_env * z);
17 static int r_mark_yDU(struct SN_env * z);
18 static int r_mark_yUz(struct SN_env * z);
19 static int r_mark_yUm(struct SN_env * z);
20 static int r_mark_possessives(struct SN_env * z);
21 static int r_mark_sUnUz(struct SN_env * z);
22 static int r_mark_sUn(struct SN_env * z);
23 static int r_mark_sU(struct SN_env * z);
24 static int r_mark_nUn(struct SN_env * z);
25 static int r_mark_ndA(struct SN_env * z);
26 static int r_mark_lArI(struct SN_env * z);
27 static int r_mark_lAr(struct SN_env * z);
28 static int r_mark_DUr(struct SN_env * z);
29 static int r_mark_DA(struct SN_env * z);
30 static int r_check_vowel_harmony(struct SN_env * z);
31 
32 static const symbol s_0[] = { 0xC4, 0xB1 };
33 static const symbol s_1[] = { 0xC3, 0xB6 };
34 static const symbol s_2[] = { 0xC3, 0xBC };
35 static const symbol s_3[] = { 'k', 'i' };
36 static const symbol s_4[] = { 'k', 'e', 'n' };
37 static const symbol s_5[] = { 'a', 'd' };
38 static const symbol s_6[] = { 's', 'o', 'y' };
39 static const symbol s_7[] = { 0xC4, 0xB1 };
40 static const symbol s_8[] = { 0xC4, 0xB1 };
41 static const symbol s_9[] = { 'i' };
42 static const symbol s_10[] = { 'u' };
43 static const symbol s_11[] = { 0xC3, 0xB6 };
44 static const symbol s_12[] = { 0xC3, 0xBC };
45 static const symbol s_13[] = { 0xC3, 0xBC };
46 static const symbol s_14[] = { 'p' };
47 static const symbol s_15[] = { 0xC3, 0xA7 };
48 static const symbol s_16[] = { 't' };
49 static const symbol s_17[] = { 'k' };
50 
51 static const symbol s_0_0[1] = { 'm' };
52 static const symbol s_0_1[1] = { 'n' };
53 static const symbol s_0_2[3] = { 'm', 'i', 'z' };
54 static const symbol s_0_3[3] = { 'n', 'i', 'z' };
55 static const symbol s_0_4[3] = { 'm', 'u', 'z' };
56 static const symbol s_0_5[3] = { 'n', 'u', 'z' };
57 static const symbol s_0_6[4] = { 'm', 0xC4, 0xB1, 'z' };
58 static const symbol s_0_7[4] = { 'n', 0xC4, 0xB1, 'z' };
59 static const symbol s_0_8[4] = { 'm', 0xC3, 0xBC, 'z' };
60 static const symbol s_0_9[4] = { 'n', 0xC3, 0xBC, 'z' };
61 static const struct among a_0[10] = {
62 { 1, s_0_0, 0, -1, 0},
63 { 1, s_0_1, 0, -1, 0},
64 { 3, s_0_2, 0, -1, 0},
65 { 3, s_0_3, 0, -1, 0},
66 { 3, s_0_4, 0, -1, 0},
67 { 3, s_0_5, 0, -1, 0},
68 { 4, s_0_6, 0, -1, 0},
69 { 4, s_0_7, 0, -1, 0},
70 { 4, s_0_8, 0, -1, 0},
71 { 4, s_0_9, 0, -1, 0}
72 };
73 
74 static const symbol s_1_0[4] = { 'l', 'e', 'r', 'i' };
75 static const symbol s_1_1[5] = { 'l', 'a', 'r', 0xC4, 0xB1 };
76 static const struct among a_1[2] = {
77 { 4, s_1_0, 0, -1, 0},
78 { 5, s_1_1, 0, -1, 0}
79 };
80 
81 static const symbol s_2_0[2] = { 'n', 'i' };
82 static const symbol s_2_1[2] = { 'n', 'u' };
83 static const symbol s_2_2[3] = { 'n', 0xC4, 0xB1 };
84 static const symbol s_2_3[3] = { 'n', 0xC3, 0xBC };
85 static const struct among a_2[4] = {
86 { 2, s_2_0, 0, -1, 0},
87 { 2, s_2_1, 0, -1, 0},
88 { 3, s_2_2, 0, -1, 0},
89 { 3, s_2_3, 0, -1, 0}
90 };
91 
92 static const symbol s_3_0[2] = { 'i', 'n' };
93 static const symbol s_3_1[2] = { 'u', 'n' };
94 static const symbol s_3_2[3] = { 0xC4, 0xB1, 'n' };
95 static const symbol s_3_3[3] = { 0xC3, 0xBC, 'n' };
96 static const struct among a_3[4] = {
97 { 2, s_3_0, 0, -1, 0},
98 { 2, s_3_1, 0, -1, 0},
99 { 3, s_3_2, 0, -1, 0},
100 { 3, s_3_3, 0, -1, 0}
101 };
102 
103 static const symbol s_5_0[2] = { 'n', 'a' };
104 static const symbol s_5_1[2] = { 'n', 'e' };
105 static const struct among a_5[2] = {
106 { 2, s_5_0, 0, -1, 0},
107 { 2, s_5_1, 0, -1, 0}
108 };
109 
110 static const symbol s_6_0[2] = { 'd', 'a' };
111 static const symbol s_6_1[2] = { 't', 'a' };
112 static const symbol s_6_2[2] = { 'd', 'e' };
113 static const symbol s_6_3[2] = { 't', 'e' };
114 static const struct among a_6[4] = {
115 { 2, s_6_0, 0, -1, 0},
116 { 2, s_6_1, 0, -1, 0},
117 { 2, s_6_2, 0, -1, 0},
118 { 2, s_6_3, 0, -1, 0}
119 };
120 
121 static const symbol s_7_0[3] = { 'n', 'd', 'a' };
122 static const symbol s_7_1[3] = { 'n', 'd', 'e' };
123 static const struct among a_7[2] = {
124 { 3, s_7_0, 0, -1, 0},
125 { 3, s_7_1, 0, -1, 0}
126 };
127 
128 static const symbol s_8_0[3] = { 'd', 'a', 'n' };
129 static const symbol s_8_1[3] = { 't', 'a', 'n' };
130 static const symbol s_8_2[3] = { 'd', 'e', 'n' };
131 static const symbol s_8_3[3] = { 't', 'e', 'n' };
132 static const struct among a_8[4] = {
133 { 3, s_8_0, 0, -1, 0},
134 { 3, s_8_1, 0, -1, 0},
135 { 3, s_8_2, 0, -1, 0},
136 { 3, s_8_3, 0, -1, 0}
137 };
138 
139 static const symbol s_9_0[4] = { 'n', 'd', 'a', 'n' };
140 static const symbol s_9_1[4] = { 'n', 'd', 'e', 'n' };
141 static const struct among a_9[2] = {
142 { 4, s_9_0, 0, -1, 0},
143 { 4, s_9_1, 0, -1, 0}
144 };
145 
146 static const symbol s_10_0[2] = { 'l', 'a' };
147 static const symbol s_10_1[2] = { 'l', 'e' };
148 static const struct among a_10[2] = {
149 { 2, s_10_0, 0, -1, 0},
150 { 2, s_10_1, 0, -1, 0}
151 };
152 
153 static const symbol s_11_0[2] = { 'c', 'a' };
154 static const symbol s_11_1[2] = { 'c', 'e' };
155 static const struct among a_11[2] = {
156 { 2, s_11_0, 0, -1, 0},
157 { 2, s_11_1, 0, -1, 0}
158 };
159 
160 static const symbol s_12_0[2] = { 'i', 'm' };
161 static const symbol s_12_1[2] = { 'u', 'm' };
162 static const symbol s_12_2[3] = { 0xC4, 0xB1, 'm' };
163 static const symbol s_12_3[3] = { 0xC3, 0xBC, 'm' };
164 static const struct among a_12[4] = {
165 { 2, s_12_0, 0, -1, 0},
166 { 2, s_12_1, 0, -1, 0},
167 { 3, s_12_2, 0, -1, 0},
168 { 3, s_12_3, 0, -1, 0}
169 };
170 
171 static const symbol s_13_0[3] = { 's', 'i', 'n' };
172 static const symbol s_13_1[3] = { 's', 'u', 'n' };
173 static const symbol s_13_2[4] = { 's', 0xC4, 0xB1, 'n' };
174 static const symbol s_13_3[4] = { 's', 0xC3, 0xBC, 'n' };
175 static const struct among a_13[4] = {
176 { 3, s_13_0, 0, -1, 0},
177 { 3, s_13_1, 0, -1, 0},
178 { 4, s_13_2, 0, -1, 0},
179 { 4, s_13_3, 0, -1, 0}
180 };
181 
182 static const symbol s_14_0[2] = { 'i', 'z' };
183 static const symbol s_14_1[2] = { 'u', 'z' };
184 static const symbol s_14_2[3] = { 0xC4, 0xB1, 'z' };
185 static const symbol s_14_3[3] = { 0xC3, 0xBC, 'z' };
186 static const struct among a_14[4] = {
187 { 2, s_14_0, 0, -1, 0},
188 { 2, s_14_1, 0, -1, 0},
189 { 3, s_14_2, 0, -1, 0},
190 { 3, s_14_3, 0, -1, 0}
191 };
192 
193 static const symbol s_15_0[5] = { 's', 'i', 'n', 'i', 'z' };
194 static const symbol s_15_1[5] = { 's', 'u', 'n', 'u', 'z' };
195 static const symbol s_15_2[7] = { 's', 0xC4, 0xB1, 'n', 0xC4, 0xB1, 'z' };
196 static const symbol s_15_3[7] = { 's', 0xC3, 0xBC, 'n', 0xC3, 0xBC, 'z' };
197 static const struct among a_15[4] = {
198 { 5, s_15_0, 0, -1, 0},
199 { 5, s_15_1, 0, -1, 0},
200 { 7, s_15_2, 0, -1, 0},
201 { 7, s_15_3, 0, -1, 0}
202 };
203 
204 static const symbol s_16_0[3] = { 'l', 'a', 'r' };
205 static const symbol s_16_1[3] = { 'l', 'e', 'r' };
206 static const struct among a_16[2] = {
207 { 3, s_16_0, 0, -1, 0},
208 { 3, s_16_1, 0, -1, 0}
209 };
210 
211 static const symbol s_17_0[3] = { 'n', 'i', 'z' };
212 static const symbol s_17_1[3] = { 'n', 'u', 'z' };
213 static const symbol s_17_2[4] = { 'n', 0xC4, 0xB1, 'z' };
214 static const symbol s_17_3[4] = { 'n', 0xC3, 0xBC, 'z' };
215 static const struct among a_17[4] = {
216 { 3, s_17_0, 0, -1, 0},
217 { 3, s_17_1, 0, -1, 0},
218 { 4, s_17_2, 0, -1, 0},
219 { 4, s_17_3, 0, -1, 0}
220 };
221 
222 static const symbol s_18_0[3] = { 'd', 'i', 'r' };
223 static const symbol s_18_1[3] = { 't', 'i', 'r' };
224 static const symbol s_18_2[3] = { 'd', 'u', 'r' };
225 static const symbol s_18_3[3] = { 't', 'u', 'r' };
226 static const symbol s_18_4[4] = { 'd', 0xC4, 0xB1, 'r' };
227 static const symbol s_18_5[4] = { 't', 0xC4, 0xB1, 'r' };
228 static const symbol s_18_6[4] = { 'd', 0xC3, 0xBC, 'r' };
229 static const symbol s_18_7[4] = { 't', 0xC3, 0xBC, 'r' };
230 static const struct among a_18[8] = {
231 { 3, s_18_0, 0, -1, 0},
232 { 3, s_18_1, 0, -1, 0},
233 { 3, s_18_2, 0, -1, 0},
234 { 3, s_18_3, 0, -1, 0},
235 { 4, s_18_4, 0, -1, 0},
236 { 4, s_18_5, 0, -1, 0},
237 { 4, s_18_6, 0, -1, 0},
238 { 4, s_18_7, 0, -1, 0}
239 };
240 
241 static const symbol s_19_0[7] = { 'c', 'a', 's', 0xC4, 0xB1, 'n', 'a' };
242 static const symbol s_19_1[6] = { 'c', 'e', 's', 'i', 'n', 'e' };
243 static const struct among a_19[2] = {
244 { 7, s_19_0, 0, -1, 0},
245 { 6, s_19_1, 0, -1, 0}
246 };
247 
248 static const symbol s_20_0[2] = { 'd', 'i' };
249 static const symbol s_20_1[2] = { 't', 'i' };
250 static const symbol s_20_2[3] = { 'd', 'i', 'k' };
251 static const symbol s_20_3[3] = { 't', 'i', 'k' };
252 static const symbol s_20_4[3] = { 'd', 'u', 'k' };
253 static const symbol s_20_5[3] = { 't', 'u', 'k' };
254 static const symbol s_20_6[4] = { 'd', 0xC4, 0xB1, 'k' };
255 static const symbol s_20_7[4] = { 't', 0xC4, 0xB1, 'k' };
256 static const symbol s_20_8[4] = { 'd', 0xC3, 0xBC, 'k' };
257 static const symbol s_20_9[4] = { 't', 0xC3, 0xBC, 'k' };
258 static const symbol s_20_10[3] = { 'd', 'i', 'm' };
259 static const symbol s_20_11[3] = { 't', 'i', 'm' };
260 static const symbol s_20_12[3] = { 'd', 'u', 'm' };
261 static const symbol s_20_13[3] = { 't', 'u', 'm' };
262 static const symbol s_20_14[4] = { 'd', 0xC4, 0xB1, 'm' };
263 static const symbol s_20_15[4] = { 't', 0xC4, 0xB1, 'm' };
264 static const symbol s_20_16[4] = { 'd', 0xC3, 0xBC, 'm' };
265 static const symbol s_20_17[4] = { 't', 0xC3, 0xBC, 'm' };
266 static const symbol s_20_18[3] = { 'd', 'i', 'n' };
267 static const symbol s_20_19[3] = { 't', 'i', 'n' };
268 static const symbol s_20_20[3] = { 'd', 'u', 'n' };
269 static const symbol s_20_21[3] = { 't', 'u', 'n' };
270 static const symbol s_20_22[4] = { 'd', 0xC4, 0xB1, 'n' };
271 static const symbol s_20_23[4] = { 't', 0xC4, 0xB1, 'n' };
272 static const symbol s_20_24[4] = { 'd', 0xC3, 0xBC, 'n' };
273 static const symbol s_20_25[4] = { 't', 0xC3, 0xBC, 'n' };
274 static const symbol s_20_26[2] = { 'd', 'u' };
275 static const symbol s_20_27[2] = { 't', 'u' };
276 static const symbol s_20_28[3] = { 'd', 0xC4, 0xB1 };
277 static const symbol s_20_29[3] = { 't', 0xC4, 0xB1 };
278 static const symbol s_20_30[3] = { 'd', 0xC3, 0xBC };
279 static const symbol s_20_31[3] = { 't', 0xC3, 0xBC };
280 static const struct among a_20[32] = {
281 { 2, s_20_0, 0, -1, 0},
282 { 2, s_20_1, 0, -1, 0},
283 { 3, s_20_2, 0, -1, 0},
284 { 3, s_20_3, 0, -1, 0},
285 { 3, s_20_4, 0, -1, 0},
286 { 3, s_20_5, 0, -1, 0},
287 { 4, s_20_6, 0, -1, 0},
288 { 4, s_20_7, 0, -1, 0},
289 { 4, s_20_8, 0, -1, 0},
290 { 4, s_20_9, 0, -1, 0},
291 { 3, s_20_10, 0, -1, 0},
292 { 3, s_20_11, 0, -1, 0},
293 { 3, s_20_12, 0, -1, 0},
294 { 3, s_20_13, 0, -1, 0},
295 { 4, s_20_14, 0, -1, 0},
296 { 4, s_20_15, 0, -1, 0},
297 { 4, s_20_16, 0, -1, 0},
298 { 4, s_20_17, 0, -1, 0},
299 { 3, s_20_18, 0, -1, 0},
300 { 3, s_20_19, 0, -1, 0},
301 { 3, s_20_20, 0, -1, 0},
302 { 3, s_20_21, 0, -1, 0},
303 { 4, s_20_22, 0, -1, 0},
304 { 4, s_20_23, 0, -1, 0},
305 { 4, s_20_24, 0, -1, 0},
306 { 4, s_20_25, 0, -1, 0},
307 { 2, s_20_26, 0, -1, 0},
308 { 2, s_20_27, 0, -1, 0},
309 { 3, s_20_28, 0, -1, 0},
310 { 3, s_20_29, 0, -1, 0},
311 { 3, s_20_30, 0, -1, 0},
312 { 3, s_20_31, 0, -1, 0}
313 };
314 
315 static const symbol s_21_0[2] = { 's', 'a' };
316 static const symbol s_21_1[2] = { 's', 'e' };
317 static const symbol s_21_2[3] = { 's', 'a', 'k' };
318 static const symbol s_21_3[3] = { 's', 'e', 'k' };
319 static const symbol s_21_4[3] = { 's', 'a', 'm' };
320 static const symbol s_21_5[3] = { 's', 'e', 'm' };
321 static const symbol s_21_6[3] = { 's', 'a', 'n' };
322 static const symbol s_21_7[3] = { 's', 'e', 'n' };
323 static const struct among a_21[8] = {
324 { 2, s_21_0, 0, -1, 0},
325 { 2, s_21_1, 0, -1, 0},
326 { 3, s_21_2, 0, -1, 0},
327 { 3, s_21_3, 0, -1, 0},
328 { 3, s_21_4, 0, -1, 0},
329 { 3, s_21_5, 0, -1, 0},
330 { 3, s_21_6, 0, -1, 0},
331 { 3, s_21_7, 0, -1, 0}
332 };
333 
334 static const symbol s_22_0[4] = { 'm', 'i', 0xC5, 0x9F };
335 static const symbol s_22_1[4] = { 'm', 'u', 0xC5, 0x9F };
336 static const symbol s_22_2[5] = { 'm', 0xC4, 0xB1, 0xC5, 0x9F };
337 static const symbol s_22_3[5] = { 'm', 0xC3, 0xBC, 0xC5, 0x9F };
338 static const struct among a_22[4] = {
339 { 4, s_22_0, 0, -1, 0},
340 { 4, s_22_1, 0, -1, 0},
341 { 5, s_22_2, 0, -1, 0},
342 { 5, s_22_3, 0, -1, 0}
343 };
344 
345 static const symbol s_23_0[1] = { 'b' };
346 static const symbol s_23_1[1] = { 'c' };
347 static const symbol s_23_2[1] = { 'd' };
348 static const symbol s_23_3[2] = { 0xC4, 0x9F };
349 static const struct among a_23[4] = {
350 { 1, s_23_0, 0, 1, 0},
351 { 1, s_23_1, 0, 2, 0},
352 { 1, s_23_2, 0, 3, 0},
353 { 2, s_23_3, 0, 4, 0}
354 };
355 
356 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 };
357 
358 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 };
359 
360 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 };
361 
362 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 };
363 
364 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 };
365 
366 static const unsigned char g_vowel4[] = { 17 };
367 
368 static const unsigned char g_vowel5[] = { 65 };
369 
370 static const unsigned char g_vowel6[] = { 65 };
371 
372 static int r_check_vowel_harmony(struct SN_env * z) {
373  {
374  int v_1 = z->l - z->c;
375  if (out_grouping_b_U(z, g_vowel, 97, 305, 1) < 0) return 0;
376  do {
377  int v_2 = z->l - z->c;
378  if (z->c <= z->lb || z->p[z->c - 1] != 'a') goto lab0;
379  z->c--;
380  if (out_grouping_b_U(z, g_vowel1, 97, 305, 1) < 0) goto lab0;
381  break;
382  lab0:
383  z->c = z->l - v_2;
384  if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab1;
385  z->c--;
386  if (out_grouping_b_U(z, g_vowel2, 101, 252, 1) < 0) goto lab1;
387  break;
388  lab1:
389  z->c = z->l - v_2;
390  if (!(eq_s_b(z, 2, s_0))) goto lab2;
391  if (out_grouping_b_U(z, g_vowel3, 97, 305, 1) < 0) goto lab2;
392  break;
393  lab2:
394  z->c = z->l - v_2;
395  if (z->c <= z->lb || z->p[z->c - 1] != 'i') goto lab3;
396  z->c--;
397  if (out_grouping_b_U(z, g_vowel4, 101, 105, 1) < 0) goto lab3;
398  break;
399  lab3:
400  z->c = z->l - v_2;
401  if (z->c <= z->lb || z->p[z->c - 1] != 'o') goto lab4;
402  z->c--;
403  if (out_grouping_b_U(z, g_vowel5, 111, 117, 1) < 0) goto lab4;
404  break;
405  lab4:
406  z->c = z->l - v_2;
407  if (!(eq_s_b(z, 2, s_1))) goto lab5;
408  if (out_grouping_b_U(z, g_vowel6, 246, 252, 1) < 0) goto lab5;
409  break;
410  lab5:
411  z->c = z->l - v_2;
412  if (z->c <= z->lb || z->p[z->c - 1] != 'u') goto lab6;
413  z->c--;
414  if (out_grouping_b_U(z, g_vowel5, 111, 117, 1) < 0) goto lab6;
415  break;
416  lab6:
417  z->c = z->l - v_2;
418  if (!(eq_s_b(z, 2, s_2))) return 0;
419  if (out_grouping_b_U(z, g_vowel6, 246, 252, 1) < 0) return 0;
420  } while (0);
421  z->c = z->l - v_1;
422  }
423  return 1;
424 }
425 
427  do {
428  int v_1 = z->l - z->c;
429  if (z->c <= z->lb || z->p[z->c - 1] != 'n') goto lab0;
430  z->c--;
431  {
432  int v_2 = z->l - z->c;
433  if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) goto lab0;
434  z->c = z->l - v_2;
435  }
436  break;
437  lab0:
438  z->c = z->l - v_1;
439  if (z->c <= z->lb || z->p[z->c - 1] != 'n') goto lab1;
440  z->c--;
441  return 0;
442  lab1:
443  {
444  int v_3 = z->l - z->c;
445  {
446  int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
447  if (ret < 0) return 0;
448  z->c = ret;
449  }
450  if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) return 0;
451  z->c = z->l - v_3;
452  }
453  } while (0);
454  return 1;
455 }
456 
458  do {
459  int v_1 = z->l - z->c;
460  if (z->c <= z->lb || z->p[z->c - 1] != 'y') goto lab0;
461  z->c--;
462  {
463  int v_2 = z->l - z->c;
464  if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) goto lab0;
465  z->c = z->l - v_2;
466  }
467  break;
468  lab0:
469  z->c = z->l - v_1;
470  if (z->c <= z->lb || z->p[z->c - 1] != 'y') goto lab1;
471  z->c--;
472  return 0;
473  lab1:
474  {
475  int v_3 = z->l - z->c;
476  {
477  int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
478  if (ret < 0) return 0;
479  z->c = ret;
480  }
481  if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) return 0;
482  z->c = z->l - v_3;
483  }
484  } while (0);
485  return 1;
486 }
487 
488 static int r_mark_possessives(struct SN_env * z) {
489  if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((67133440 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
490  if (!find_among_b(z, a_0, 10, 0)) return 0;
491  do {
492  int v_1 = z->l - z->c;
493  if (in_grouping_b_U(z, g_U, 105, 305, 0)) goto lab0;
494  {
495  int v_2 = z->l - z->c;
496  if (out_grouping_b_U(z, g_vowel, 97, 305, 0)) goto lab0;
497  z->c = z->l - v_2;
498  }
499  break;
500  lab0:
501  z->c = z->l - v_1;
502  if (in_grouping_b_U(z, g_U, 105, 305, 0)) goto lab1;
503  return 0;
504  lab1:
505  {
506  int v_3 = z->l - z->c;
507  {
508  int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
509  if (ret < 0) return 0;
510  z->c = ret;
511  }
512  if (out_grouping_b_U(z, g_vowel, 97, 305, 0)) return 0;
513  z->c = z->l - v_3;
514  }
515  } while (0);
516  return 1;
517 }
518 
519 static int r_mark_sU(struct SN_env * z) {
520  {
521  int ret = r_check_vowel_harmony(z);
522  if (ret == 0) return ret;
523  }
524  if (in_grouping_b_U(z, g_U, 105, 305, 0)) return 0;
525  do {
526  int v_1 = z->l - z->c;
527  if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab0;
528  z->c--;
529  {
530  int v_2 = z->l - z->c;
531  if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) goto lab0;
532  z->c = z->l - v_2;
533  }
534  break;
535  lab0:
536  z->c = z->l - v_1;
537  if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab1;
538  z->c--;
539  return 0;
540  lab1:
541  {
542  int v_3 = z->l - z->c;
543  {
544  int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
545  if (ret < 0) return 0;
546  z->c = ret;
547  }
548  if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) return 0;
549  z->c = z->l - v_3;
550  }
551  } while (0);
552  return 1;
553 }
554 
555 static int r_mark_lArI(struct SN_env * z) {
556  if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 105 && z->p[z->c - 1] != 177)) return 0;
557  return find_among_b(z, a_1, 2, 0) != 0;
558 }
559 
560 static int r_mark_nUn(struct SN_env * z) {
561  {
562  int ret = r_check_vowel_harmony(z);
563  if (ret == 0) return ret;
564  }
565  if (z->c - 1 <= z->lb || z->p[z->c - 1] != 110) return 0;
566  if (!find_among_b(z, a_3, 4, 0)) return 0;
568 }
569 
570 static int r_mark_DA(struct SN_env * z) {
571  {
572  int ret = r_check_vowel_harmony(z);
573  if (ret == 0) return ret;
574  }
575  if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0;
576  return find_among_b(z, a_6, 4, 0) != 0;
577 }
578 
579 static int r_mark_ndA(struct SN_env * z) {
580  {
581  int ret = r_check_vowel_harmony(z);
582  if (ret == 0) return ret;
583  }
584  if (z->c - 2 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0;
585  return find_among_b(z, a_7, 2, 0) != 0;
586 }
587 
588 static int r_mark_yUm(struct SN_env * z) {
589  {
590  int ret = r_check_vowel_harmony(z);
591  if (ret == 0) return ret;
592  }
593  if (z->c - 1 <= z->lb || z->p[z->c - 1] != 109) return 0;
594  if (!find_among_b(z, a_12, 4, 0)) return 0;
596 }
597 
598 static int r_mark_sUn(struct SN_env * z) {
599  {
600  int ret = r_check_vowel_harmony(z);
601  if (ret == 0) return ret;
602  }
603  if (z->c - 2 <= z->lb || z->p[z->c - 1] != 110) return 0;
604  return find_among_b(z, a_13, 4, 0) != 0;
605 }
606 
607 static int r_mark_yUz(struct SN_env * z) {
608  {
609  int ret = r_check_vowel_harmony(z);
610  if (ret == 0) return ret;
611  }
612  if (z->c - 1 <= z->lb || z->p[z->c - 1] != 122) return 0;
613  if (!find_among_b(z, a_14, 4, 0)) return 0;
615 }
616 
617 static int r_mark_sUnUz(struct SN_env * z) {
618  if (z->c - 4 <= z->lb || z->p[z->c - 1] != 122) return 0;
619  return find_among_b(z, a_15, 4, 0) != 0;
620 }
621 
622 static int r_mark_lAr(struct SN_env * z) {
623  {
624  int ret = r_check_vowel_harmony(z);
625  if (ret == 0) return ret;
626  }
627  if (z->c - 2 <= z->lb || z->p[z->c - 1] != 114) return 0;
628  return find_among_b(z, a_16, 2, 0) != 0;
629 }
630 
631 static int r_mark_DUr(struct SN_env * z) {
632  {
633  int ret = r_check_vowel_harmony(z);
634  if (ret == 0) return ret;
635  }
636  if (z->c - 2 <= z->lb || z->p[z->c - 1] != 114) return 0;
637  return find_among_b(z, a_18, 8, 0) != 0;
638 }
639 
640 static int r_mark_yDU(struct SN_env * z) {
641  {
642  int ret = r_check_vowel_harmony(z);
643  if (ret == 0) return ret;
644  }
645  if (!find_among_b(z, a_20, 32, 0)) return 0;
647 }
648 
649 static int r_mark_ysA(struct SN_env * z) {
650  if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((26658 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
651  if (!find_among_b(z, a_21, 8, 0)) return 0;
653 }
654 
655 static int r_mark_ymUs_(struct SN_env * z) {
656  {
657  int ret = r_check_vowel_harmony(z);
658  if (ret == 0) return ret;
659  }
660  if (z->c - 3 <= z->lb || z->p[z->c - 1] != 159) return 0;
661  if (!find_among_b(z, a_22, 4, 0)) return 0;
663 }
664 
665 static int r_stem_suffix_chain_before_ki(struct SN_env * z) {
666  z->ket = z->c;
667  if (!(eq_s_b(z, 2, s_3))) return 0;
668  do {
669  int v_1 = z->l - z->c;
670  if (!r_mark_DA(z)) goto lab0;
671  z->bra = z->c;
672  slice_del(z);
673  {
674  int v_2 = z->l - z->c;
675  z->ket = z->c;
676  do {
677  int v_3 = z->l - z->c;
678  if (!r_mark_lAr(z)) goto lab2;
679  z->bra = z->c;
680  slice_del(z);
681  {
682  int v_4 = z->l - z->c;
683  if (!r_stem_suffix_chain_before_ki(z)) { z->c = z->l - v_4; goto lab3; }
684  lab3:
685  ;
686  }
687  break;
688  lab2:
689  z->c = z->l - v_3;
690  if (!r_mark_possessives(z)) { z->c = z->l - v_2; goto lab1; }
691  z->bra = z->c;
692  slice_del(z);
693  {
694  int v_5 = z->l - z->c;
695  z->ket = z->c;
696  if (!r_mark_lAr(z)) { z->c = z->l - v_5; goto lab4; }
697  z->bra = z->c;
698  slice_del(z);
699  if (!r_stem_suffix_chain_before_ki(z)) { z->c = z->l - v_5; goto lab4; }
700  lab4:
701  ;
702  }
703  } while (0);
704  lab1:
705  ;
706  }
707  break;
708  lab0:
709  z->c = z->l - v_1;
710  if (!r_mark_nUn(z)) goto lab5;
711  z->bra = z->c;
712  slice_del(z);
713  {
714  int v_6 = z->l - z->c;
715  z->ket = z->c;
716  do {
717  int v_7 = z->l - z->c;
718  if (!r_mark_lArI(z)) goto lab7;
719  z->bra = z->c;
720  slice_del(z);
721  break;
722  lab7:
723  z->c = z->l - v_7;
724  z->ket = z->c;
725  do {
726  int v_8 = z->l - z->c;
727  if (!r_mark_possessives(z)) goto lab9;
728  break;
729  lab9:
730  z->c = z->l - v_8;
731  if (!r_mark_sU(z)) goto lab8;
732  } while (0);
733  z->bra = z->c;
734  slice_del(z);
735  {
736  int v_9 = z->l - z->c;
737  z->ket = z->c;
738  if (!r_mark_lAr(z)) { z->c = z->l - v_9; goto lab10; }
739  z->bra = z->c;
740  slice_del(z);
741  if (!r_stem_suffix_chain_before_ki(z)) { z->c = z->l - v_9; goto lab10; }
742  lab10:
743  ;
744  }
745  break;
746  lab8:
747  z->c = z->l - v_7;
748  if (!r_stem_suffix_chain_before_ki(z)) { z->c = z->l - v_6; goto lab6; }
749  } while (0);
750  lab6:
751  ;
752  }
753  break;
754  lab5:
755  z->c = z->l - v_1;
756  {
757  int ret = r_mark_ndA(z);
758  if (ret == 0) return ret;
759  }
760  do {
761  int v_10 = z->l - z->c;
762  if (!r_mark_lArI(z)) goto lab11;
763  z->bra = z->c;
764  slice_del(z);
765  break;
766  lab11:
767  z->c = z->l - v_10;
768  if (!r_mark_sU(z)) goto lab12;
769  z->bra = z->c;
770  slice_del(z);
771  {
772  int v_11 = z->l - z->c;
773  z->ket = z->c;
774  if (!r_mark_lAr(z)) { z->c = z->l - v_11; goto lab13; }
775  z->bra = z->c;
776  slice_del(z);
777  if (!r_stem_suffix_chain_before_ki(z)) { z->c = z->l - v_11; goto lab13; }
778  lab13:
779  ;
780  }
781  break;
782  lab12:
783  z->c = z->l - v_10;
784  {
785  int ret = r_stem_suffix_chain_before_ki(z);
786  if (ret == 0) return ret;
787  }
788  } while (0);
789  } while (0);
790  return 1;
791 }
792 
794  int among_var;
795  bool b_continue_stemming_noun_suffixes;
796  {
797  int v_1 = z->c;
798  z->bra = z->c;
799  while (1) {
800  int v_2 = z->c;
801  if (z->c == z->l || z->p[z->c] != '\'') goto lab3;
802  z->c++;
803  goto lab2;
804  lab3:
805  z->c = v_2;
806  break;
807  lab2:
808  z->c = v_2;
809  {
810  int ret = skip_utf8(z->p, z->c, z->l, 1);
811  if (ret < 0) goto lab1;
812  z->c = ret;
813  }
814  }
815  z->ket = z->c;
816  slice_del(z);
817  lab1:
818  z->c = v_1;
819  }
820  {
821  int v_3 = z->c;
822  {
823  int ret = skip_utf8(z->p, z->c, z->l, 2);
824  if (ret < 0) goto lab4;
825  z->c = ret;
826  }
827  while (1) {
828  int v_4 = z->c;
829  if (z->c == z->l || z->p[z->c] != '\'') goto lab5;
830  z->c++;
831  z->c = v_4;
832  break;
833  lab5:
834  z->c = v_4;
835  {
836  int ret = skip_utf8(z->p, z->c, z->l, 1);
837  if (ret < 0) goto lab4;
838  z->c = ret;
839  }
840  }
841  z->bra = z->c;
842  z->c = z->l;
843  z->ket = z->c;
844  slice_del(z);
845  lab4:
846  z->c = v_3;
847  }
848  {
849  int v_5 = z->c;
850  for (int i = 2; i > 0; i--) {
851  {
852  int ret = out_grouping_U(z, g_vowel, 97, 305, 1);
853  if (ret < 0) return 0;
854  z->c += ret;
855  }
856  }
857  z->c = v_5;
858  }
859  z->lb = z->c; z->c = z->l;
860  {
861  int v_6 = z->l - z->c;
862  z->ket = z->c;
863  b_continue_stemming_noun_suffixes = true;
864  do {
865  int v_7 = z->l - z->c;
866  do {
867  int v_8 = z->l - z->c;
868  if (!r_mark_ymUs_(z)) goto lab8;
869  break;
870  lab8:
871  z->c = z->l - v_8;
872  if (!r_mark_yDU(z)) goto lab9;
873  break;
874  lab9:
875  z->c = z->l - v_8;
876  if (!r_mark_ysA(z)) goto lab10;
877  break;
878  lab10:
879  z->c = z->l - v_8;
880  if (!(eq_s_b(z, 3, s_4))) goto lab7;
881  if (!r_mark_suffix_with_optional_y_consonant(z)) goto lab7;
882  } while (0);
883  break;
884  lab7:
885  z->c = z->l - v_7;
886  if (z->c - 5 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) goto lab11;
887  if (!find_among_b(z, a_19, 2, 0)) goto lab11;
888  do {
889  int v_9 = z->l - z->c;
890  if (!r_mark_sUnUz(z)) goto lab12;
891  break;
892  lab12:
893  z->c = z->l - v_9;
894  if (!r_mark_lAr(z)) goto lab13;
895  break;
896  lab13:
897  z->c = z->l - v_9;
898  if (!r_mark_yUm(z)) goto lab14;
899  break;
900  lab14:
901  z->c = z->l - v_9;
902  if (!r_mark_sUn(z)) goto lab15;
903  break;
904  lab15:
905  z->c = z->l - v_9;
906  if (!r_mark_yUz(z)) goto lab16;
907  break;
908  lab16:
909  z->c = z->l - v_9;
910  } while (0);
911  if (!r_mark_ymUs_(z)) goto lab11;
912  break;
913  lab11:
914  z->c = z->l - v_7;
915  if (!r_mark_lAr(z)) goto lab17;
916  z->bra = z->c;
917  slice_del(z);
918  {
919  int v_10 = z->l - z->c;
920  z->ket = z->c;
921  do {
922  int v_11 = z->l - z->c;
923  if (!r_mark_DUr(z)) goto lab19;
924  break;
925  lab19:
926  z->c = z->l - v_11;
927  if (!r_mark_yDU(z)) goto lab20;
928  break;
929  lab20:
930  z->c = z->l - v_11;
931  if (!r_mark_ysA(z)) goto lab21;
932  break;
933  lab21:
934  z->c = z->l - v_11;
935  if (!r_mark_ymUs_(z)) { z->c = z->l - v_10; goto lab18; }
936  } while (0);
937  lab18:
938  ;
939  }
940  b_continue_stemming_noun_suffixes = false;
941  break;
942  lab17:
943  z->c = z->l - v_7;
944  if (!r_check_vowel_harmony(z)) goto lab22;
945  if (z->c - 2 <= z->lb || z->p[z->c - 1] != 122) goto lab22;
946  if (!find_among_b(z, a_17, 4, 0)) goto lab22;
947  do {
948  int v_12 = z->l - z->c;
949  if (!r_mark_yDU(z)) goto lab23;
950  break;
951  lab23:
952  z->c = z->l - v_12;
953  if (!r_mark_ysA(z)) goto lab22;
954  } while (0);
955  break;
956  lab22:
957  z->c = z->l - v_7;
958  do {
959  int v_13 = z->l - z->c;
960  if (!r_mark_sUnUz(z)) goto lab25;
961  break;
962  lab25:
963  z->c = z->l - v_13;
964  if (!r_mark_yUz(z)) goto lab26;
965  break;
966  lab26:
967  z->c = z->l - v_13;
968  if (!r_mark_sUn(z)) goto lab27;
969  break;
970  lab27:
971  z->c = z->l - v_13;
972  if (!r_mark_yUm(z)) goto lab24;
973  } while (0);
974  z->bra = z->c;
975  slice_del(z);
976  {
977  int v_14 = z->l - z->c;
978  z->ket = z->c;
979  if (!r_mark_ymUs_(z)) { z->c = z->l - v_14; goto lab28; }
980  lab28:
981  ;
982  }
983  break;
984  lab24:
985  z->c = z->l - v_7;
986  if (!r_mark_DUr(z)) goto lab6;
987  z->bra = z->c;
988  slice_del(z);
989  {
990  int v_15 = z->l - z->c;
991  z->ket = z->c;
992  do {
993  int v_16 = z->l - z->c;
994  if (!r_mark_sUnUz(z)) goto lab30;
995  break;
996  lab30:
997  z->c = z->l - v_16;
998  if (!r_mark_lAr(z)) goto lab31;
999  break;
1000  lab31:
1001  z->c = z->l - v_16;
1002  if (!r_mark_yUm(z)) goto lab32;
1003  break;
1004  lab32:
1005  z->c = z->l - v_16;
1006  if (!r_mark_sUn(z)) goto lab33;
1007  break;
1008  lab33:
1009  z->c = z->l - v_16;
1010  if (!r_mark_yUz(z)) goto lab34;
1011  break;
1012  lab34:
1013  z->c = z->l - v_16;
1014  } while (0);
1015  if (!r_mark_ymUs_(z)) { z->c = z->l - v_15; goto lab29; }
1016  lab29:
1017  ;
1018  }
1019  } while (0);
1020  z->bra = z->c;
1021  slice_del(z);
1022  lab6:
1023  z->c = z->l - v_6;
1024  }
1025  if (!b_continue_stemming_noun_suffixes) return 0;
1026  {
1027  int v_17 = z->l - z->c;
1028  do {
1029  int v_18 = z->l - z->c;
1030  z->ket = z->c;
1031  if (!r_mark_lAr(z)) goto lab36;
1032  z->bra = z->c;
1033  slice_del(z);
1034  {
1035  int v_19 = z->l - z->c;
1036  if (!r_stem_suffix_chain_before_ki(z)) { z->c = z->l - v_19; goto lab37; }
1037  lab37:
1038  ;
1039  }
1040  break;
1041  lab36:
1042  z->c = z->l - v_18;
1043  z->ket = z->c;
1044  if (!r_check_vowel_harmony(z)) goto lab38;
1045  if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) goto lab38;
1046  if (!find_among_b(z, a_11, 2, 0)) goto lab38;
1047  if (!r_mark_suffix_with_optional_n_consonant(z)) goto lab38;
1048  z->bra = z->c;
1049  slice_del(z);
1050  {
1051  int v_20 = z->l - z->c;
1052  do {
1053  int v_21 = z->l - z->c;
1054  z->ket = z->c;
1055  if (!r_mark_lArI(z)) goto lab40;
1056  z->bra = z->c;
1057  slice_del(z);
1058  break;
1059  lab40:
1060  z->c = z->l - v_21;
1061  z->ket = z->c;
1062  do {
1063  int v_22 = z->l - z->c;
1064  if (!r_mark_possessives(z)) goto lab42;
1065  break;
1066  lab42:
1067  z->c = z->l - v_22;
1068  if (!r_mark_sU(z)) goto lab41;
1069  } while (0);
1070  z->bra = z->c;
1071  slice_del(z);
1072  {
1073  int v_23 = z->l - z->c;
1074  z->ket = z->c;
1075  if (!r_mark_lAr(z)) { z->c = z->l - v_23; goto lab43; }
1076  z->bra = z->c;
1077  slice_del(z);
1078  if (!r_stem_suffix_chain_before_ki(z)) { z->c = z->l - v_23; goto lab43; }
1079  lab43:
1080  ;
1081  }
1082  break;
1083  lab41:
1084  z->c = z->l - v_21;
1085  z->ket = z->c;
1086  if (!r_mark_lAr(z)) { z->c = z->l - v_20; goto lab39; }
1087  z->bra = z->c;
1088  slice_del(z);
1089  if (!r_stem_suffix_chain_before_ki(z)) { z->c = z->l - v_20; goto lab39; }
1090  } while (0);
1091  lab39:
1092  ;
1093  }
1094  break;
1095  lab38:
1096  z->c = z->l - v_18;
1097  z->ket = z->c;
1098  do {
1099  int v_24 = z->l - z->c;
1100  if (!r_mark_ndA(z)) goto lab45;
1101  break;
1102  lab45:
1103  z->c = z->l - v_24;
1104  if (!r_check_vowel_harmony(z)) goto lab44;
1105  if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) goto lab44;
1106  if (!find_among_b(z, a_5, 2, 0)) goto lab44;
1107  } while (0);
1108  do {
1109  int v_25 = z->l - z->c;
1110  if (!r_mark_lArI(z)) goto lab46;
1111  z->bra = z->c;
1112  slice_del(z);
1113  break;
1114  lab46:
1115  z->c = z->l - v_25;
1116  if (!r_mark_sU(z)) goto lab47;
1117  z->bra = z->c;
1118  slice_del(z);
1119  {
1120  int v_26 = z->l - z->c;
1121  z->ket = z->c;
1122  if (!r_mark_lAr(z)) { z->c = z->l - v_26; goto lab48; }
1123  z->bra = z->c;
1124  slice_del(z);
1125  if (!r_stem_suffix_chain_before_ki(z)) { z->c = z->l - v_26; goto lab48; }
1126  lab48:
1127  ;
1128  }
1129  break;
1130  lab47:
1131  z->c = z->l - v_25;
1132  if (!r_stem_suffix_chain_before_ki(z)) goto lab44;
1133  } while (0);
1134  break;
1135  lab44:
1136  z->c = z->l - v_18;
1137  z->ket = z->c;
1138  do {
1139  int v_27 = z->l - z->c;
1140  if (!r_check_vowel_harmony(z)) goto lab50;
1141  if (z->c - 3 <= z->lb || z->p[z->c - 1] != 110) goto lab50;
1142  if (!find_among_b(z, a_9, 2, 0)) goto lab50;
1143  break;
1144  lab50:
1145  z->c = z->l - v_27;
1146  if (!r_check_vowel_harmony(z)) goto lab49;
1147  if (!find_among_b(z, a_2, 4, 0)) goto lab49;
1148  } while (0);
1149  do {
1150  int v_28 = z->l - z->c;
1151  if (!r_mark_sU(z)) goto lab51;
1152  z->bra = z->c;
1153  slice_del(z);
1154  {
1155  int v_29 = z->l - z->c;
1156  z->ket = z->c;
1157  if (!r_mark_lAr(z)) { z->c = z->l - v_29; goto lab52; }
1158  z->bra = z->c;
1159  slice_del(z);
1160  if (!r_stem_suffix_chain_before_ki(z)) { z->c = z->l - v_29; goto lab52; }
1161  lab52:
1162  ;
1163  }
1164  break;
1165  lab51:
1166  z->c = z->l - v_28;
1167  if (!r_mark_lArI(z)) goto lab49;
1168  } while (0);
1169  break;
1170  lab49:
1171  z->c = z->l - v_18;
1172  z->ket = z->c;
1173  if (!r_check_vowel_harmony(z)) goto lab53;
1174  if (z->c - 2 <= z->lb || z->p[z->c - 1] != 110) goto lab53;
1175  if (!find_among_b(z, a_8, 4, 0)) goto lab53;
1176  z->bra = z->c;
1177  slice_del(z);
1178  {
1179  int v_30 = z->l - z->c;
1180  z->ket = z->c;
1181  do {
1182  int v_31 = z->l - z->c;
1183  if (!r_mark_possessives(z)) goto lab55;
1184  z->bra = z->c;
1185  slice_del(z);
1186  {
1187  int v_32 = z->l - z->c;
1188  z->ket = z->c;
1189  if (!r_mark_lAr(z)) { z->c = z->l - v_32; goto lab56; }
1190  z->bra = z->c;
1191  slice_del(z);
1192  if (!r_stem_suffix_chain_before_ki(z)) { z->c = z->l - v_32; goto lab56; }
1193  lab56:
1194  ;
1195  }
1196  break;
1197  lab55:
1198  z->c = z->l - v_31;
1199  if (!r_mark_lAr(z)) goto lab57;
1200  z->bra = z->c;
1201  slice_del(z);
1202  {
1203  int v_33 = z->l - z->c;
1204  if (!r_stem_suffix_chain_before_ki(z)) { z->c = z->l - v_33; goto lab58; }
1205  lab58:
1206  ;
1207  }
1208  break;
1209  lab57:
1210  z->c = z->l - v_31;
1211  if (!r_stem_suffix_chain_before_ki(z)) { z->c = z->l - v_30; goto lab54; }
1212  } while (0);
1213  lab54:
1214  ;
1215  }
1216  break;
1217  lab53:
1218  z->c = z->l - v_18;
1219  z->ket = z->c;
1220  do {
1221  int v_34 = z->l - z->c;
1222  if (!r_mark_nUn(z)) goto lab60;
1223  break;
1224  lab60:
1225  z->c = z->l - v_34;
1226  if (!r_check_vowel_harmony(z)) goto lab59;
1227  if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) goto lab59;
1228  if (!find_among_b(z, a_10, 2, 0)) goto lab59;
1229  if (!r_mark_suffix_with_optional_y_consonant(z)) goto lab59;
1230  } while (0);
1231  z->bra = z->c;
1232  slice_del(z);
1233  {
1234  int v_35 = z->l - z->c;
1235  do {
1236  int v_36 = z->l - z->c;
1237  z->ket = z->c;
1238  if (!r_mark_lAr(z)) goto lab62;
1239  z->bra = z->c;
1240  slice_del(z);
1241  if (!r_stem_suffix_chain_before_ki(z)) goto lab62;
1242  break;
1243  lab62:
1244  z->c = z->l - v_36;
1245  z->ket = z->c;
1246  do {
1247  int v_37 = z->l - z->c;
1248  if (!r_mark_possessives(z)) goto lab64;
1249  break;
1250  lab64:
1251  z->c = z->l - v_37;
1252  if (!r_mark_sU(z)) goto lab63;
1253  } while (0);
1254  z->bra = z->c;
1255  slice_del(z);
1256  {
1257  int v_38 = z->l - z->c;
1258  z->ket = z->c;
1259  if (!r_mark_lAr(z)) { z->c = z->l - v_38; goto lab65; }
1260  z->bra = z->c;
1261  slice_del(z);
1262  if (!r_stem_suffix_chain_before_ki(z)) { z->c = z->l - v_38; goto lab65; }
1263  lab65:
1264  ;
1265  }
1266  break;
1267  lab63:
1268  z->c = z->l - v_36;
1269  if (!r_stem_suffix_chain_before_ki(z)) { z->c = z->l - v_35; goto lab61; }
1270  } while (0);
1271  lab61:
1272  ;
1273  }
1274  break;
1275  lab59:
1276  z->c = z->l - v_18;
1277  z->ket = z->c;
1278  if (!r_mark_lArI(z)) goto lab66;
1279  z->bra = z->c;
1280  slice_del(z);
1281  break;
1282  lab66:
1283  z->c = z->l - v_18;
1284  if (!r_stem_suffix_chain_before_ki(z)) goto lab67;
1285  break;
1286  lab67:
1287  z->c = z->l - v_18;
1288  z->ket = z->c;
1289  do {
1290  int v_39 = z->l - z->c;
1291  if (!r_mark_DA(z)) goto lab69;
1292  break;
1293  lab69:
1294  z->c = z->l - v_39;
1295  if (!r_check_vowel_harmony(z)) goto lab70;
1296  if (in_grouping_b_U(z, g_U, 105, 305, 0)) goto lab70;
1297  if (!r_mark_suffix_with_optional_y_consonant(z)) goto lab70;
1298  break;
1299  lab70:
1300  z->c = z->l - v_39;
1301  if (!r_check_vowel_harmony(z)) goto lab68;
1302  if (z->c <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) goto lab68;
1303  z->c--;
1304  if (!r_mark_suffix_with_optional_y_consonant(z)) goto lab68;
1305  } while (0);
1306  z->bra = z->c;
1307  slice_del(z);
1308  {
1309  int v_40 = z->l - z->c;
1310  z->ket = z->c;
1311  do {
1312  int v_41 = z->l - z->c;
1313  if (!r_mark_possessives(z)) goto lab72;
1314  z->bra = z->c;
1315  slice_del(z);
1316  {
1317  int v_42 = z->l - z->c;
1318  z->ket = z->c;
1319  if (!r_mark_lAr(z)) { z->c = z->l - v_42; goto lab73; }
1320  lab73:
1321  ;
1322  }
1323  break;
1324  lab72:
1325  z->c = z->l - v_41;
1326  if (!r_mark_lAr(z)) { z->c = z->l - v_40; goto lab71; }
1327  } while (0);
1328  z->bra = z->c;
1329  slice_del(z);
1330  z->ket = z->c;
1331  if (!r_stem_suffix_chain_before_ki(z)) { z->c = z->l - v_40; goto lab71; }
1332  lab71:
1333  ;
1334  }
1335  break;
1336  lab68:
1337  z->c = z->l - v_18;
1338  z->ket = z->c;
1339  do {
1340  int v_43 = z->l - z->c;
1341  if (!r_mark_possessives(z)) goto lab74;
1342  break;
1343  lab74:
1344  z->c = z->l - v_43;
1345  if (!r_mark_sU(z)) goto lab35;
1346  } while (0);
1347  z->bra = z->c;
1348  slice_del(z);
1349  {
1350  int v_44 = z->l - z->c;
1351  z->ket = z->c;
1352  if (!r_mark_lAr(z)) { z->c = z->l - v_44; goto lab75; }
1353  z->bra = z->c;
1354  slice_del(z);
1355  if (!r_stem_suffix_chain_before_ki(z)) { z->c = z->l - v_44; goto lab75; }
1356  lab75:
1357  ;
1358  }
1359  } while (0);
1360  lab35:
1361  z->c = z->l - v_17;
1362  }
1363  z->c = z->lb;
1364  z->lb = z->c; z->c = z->l;
1365  {
1366  int v_45 = z->l - z->c;
1367  if (!(eq_s_b(z, 2, s_5))) goto lab76;
1368  {
1369  int v_46 = z->l - z->c;
1370  if (!(eq_s_b(z, 3, s_6))) { z->c = z->l - v_46; goto lab77; }
1371  lab77:
1372  ;
1373  }
1374  if (z->c > z->lb) goto lab76;
1375  return 0;
1376  lab76:
1377  z->c = z->l - v_45;
1378  }
1379  {
1380  int v_47 = z->l - z->c;
1381  z->ket = z->c;
1382  z->bra = z->c;
1383  do {
1384  if (z->c <= z->lb || z->p[z->c - 1] != 'd') goto lab79;
1385  z->c--;
1386  break;
1387  lab79:
1388  if (z->c <= z->lb || z->p[z->c - 1] != 'g') goto lab78;
1389  z->c--;
1390  } while (0);
1391  if (out_grouping_b_U(z, g_vowel, 97, 305, 1) < 0) goto lab78;
1392  do {
1393  int v_48 = z->l - z->c;
1394  do {
1395  if (z->c <= z->lb || z->p[z->c - 1] != 'a') goto lab81;
1396  z->c--;
1397  break;
1398  lab81:
1399  if (!(eq_s_b(z, 2, s_7))) goto lab80;
1400  } while (0);
1401  slice_from_s(z, 2, s_8);
1402  break;
1403  lab80:
1404  z->c = z->l - v_48;
1405  do {
1406  if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab83;
1407  z->c--;
1408  break;
1409  lab83:
1410  if (z->c <= z->lb || z->p[z->c - 1] != 'i') goto lab82;
1411  z->c--;
1412  } while (0);
1413  slice_from_s(z, 1, s_9);
1414  break;
1415  lab82:
1416  z->c = z->l - v_48;
1417  do {
1418  if (z->c <= z->lb || z->p[z->c - 1] != 'o') goto lab85;
1419  z->c--;
1420  break;
1421  lab85:
1422  if (z->c <= z->lb || z->p[z->c - 1] != 'u') goto lab84;
1423  z->c--;
1424  } while (0);
1425  slice_from_s(z, 1, s_10);
1426  break;
1427  lab84:
1428  z->c = z->l - v_48;
1429  do {
1430  if (!(eq_s_b(z, 2, s_11))) goto lab86;
1431  break;
1432  lab86:
1433  if (!(eq_s_b(z, 2, s_12))) goto lab78;
1434  } while (0);
1435  slice_from_s(z, 2, s_13);
1436  } while (0);
1437  lab78:
1438  z->c = z->l - v_47;
1439  }
1440  {
1441  int v_49 = z->l - z->c;
1442  z->ket = z->c;
1443  among_var = find_among_b(z, a_23, 4, 0);
1444  if (!among_var) goto lab87;
1445  z->bra = z->c;
1446  switch (among_var) {
1447  case 1:
1448  slice_from_s(z, 1, s_14);
1449  break;
1450  case 2:
1451  slice_from_s(z, 2, s_15);
1452  break;
1453  case 3:
1454  slice_from_s(z, 1, s_16);
1455  break;
1456  case 4:
1457  slice_from_s(z, 1, s_17);
1458  break;
1459  }
1460  lab87:
1461  z->c = z->l - v_49;
1462  }
1463  z->c = z->lb;
1464  return 1;
1465 }
unsigned char symbol
Definition: api.h:4
static int stem(struct SN_env *z)
Definition: turkish.cc:793
int out_grouping_U(struct SN_env *z, const unsigned char *s, int min, int max, int repeat)
SNOWBALL_ERR slice_from_s(struct SN_env *z, int s_size, const symbol *s)
int find_among_b(struct SN_env *z, const struct among *v, int v_size, int(*call_among_func)(struct SN_env *))
int in_grouping_b_U(struct SN_env *z, const unsigned char *s, int min, int max, int repeat)
int skip_b_utf8(const symbol *p, int c, int limit, int n)
int eq_s_b(struct SN_env *z, int s_size, const symbol *s)
SNOWBALL_ERR slice_del(struct SN_env *z)
int out_grouping_b_U(struct SN_env *z, const unsigned char *s, int min, int max, int repeat)
int skip_utf8(const symbol *p, int c, int limit, int n)
Definition: api.h:12
int lb
Definition: api.h:14
symbol * p
Definition: api.h:13
int ket
Definition: api.h:14
int c
Definition: api.h:14
int bra
Definition: api.h:14
int l
Definition: api.h:14
Definition: header.h:295
static const symbol s_22_0[4]
Definition: turkish.cc:334
static const symbol s_20_21[3]
Definition: turkish.cc:269
static int r_mark_ymUs_(struct SN_env *z)
Definition: turkish.cc:655
static const symbol s_2[]
Definition: turkish.cc:34
static const symbol s_13_3[4]
Definition: turkish.cc:174
static int r_mark_suffix_with_optional_n_consonant(struct SN_env *z)
Definition: turkish.cc:426
static const symbol s_0_2[3]
Definition: turkish.cc:53
static const symbol s_20_26[2]
Definition: turkish.cc:274
static const symbol s_11_1[2]
Definition: turkish.cc:154
static const symbol s_4[]
Definition: turkish.cc:36
static const symbol s_20_0[2]
Definition: turkish.cc:248
static const struct among a_8[4]
Definition: turkish.cc:132
static const symbol s_3_2[3]
Definition: turkish.cc:94
static const symbol s_12_0[2]
Definition: turkish.cc:160
static const struct among a_19[2]
Definition: turkish.cc:243
static const struct among a_12[4]
Definition: turkish.cc:164
static const symbol s_20_24[4]
Definition: turkish.cc:272
static const struct among a_17[4]
Definition: turkish.cc:215
static const symbol s_17_3[4]
Definition: turkish.cc:214
static const symbol s_15_2[7]
Definition: turkish.cc:195
static const symbol s_0_5[3]
Definition: turkish.cc:56
static const symbol s_20_13[3]
Definition: turkish.cc:261
static const unsigned char g_vowel5[]
Definition: turkish.cc:368
static int r_mark_nUn(struct SN_env *z)
Definition: turkish.cc:560
static const symbol s_0_3[3]
Definition: turkish.cc:54
static int r_mark_yUm(struct SN_env *z)
Definition: turkish.cc:588
static const symbol s_3_1[2]
Definition: turkish.cc:93
static const symbol s_13_0[3]
Definition: turkish.cc:171
static const symbol s_0_0[1]
Definition: turkish.cc:51
static int r_mark_sUn(struct SN_env *z)
Definition: turkish.cc:598
static const symbol s_5_0[2]
Definition: turkish.cc:103
static const symbol s_21_3[3]
Definition: turkish.cc:318
static const struct among a_7[2]
Definition: turkish.cc:123
static const symbol s_20_10[3]
Definition: turkish.cc:258
static const symbol s_21_1[2]
Definition: turkish.cc:316
static const symbol s_20_14[4]
Definition: turkish.cc:262
static const unsigned char g_vowel2[]
Definition: turkish.cc:362
static const symbol s_2_3[3]
Definition: turkish.cc:84
static const symbol s_19_0[7]
Definition: turkish.cc:241
static const symbol s_2_0[2]
Definition: turkish.cc:81
static const struct among a_6[4]
Definition: turkish.cc:114
static const struct among a_16[2]
Definition: turkish.cc:206
static const symbol s_20_22[4]
Definition: turkish.cc:270
static const symbol s_20_17[4]
Definition: turkish.cc:265
static const symbol s_18_7[4]
Definition: turkish.cc:229
static const struct among a_3[4]
Definition: turkish.cc:96
static const symbol s_6[]
Definition: turkish.cc:38
static const symbol s_21_6[3]
Definition: turkish.cc:321
static int r_mark_DA(struct SN_env *z)
Definition: turkish.cc:570
static const symbol s_3[]
Definition: turkish.cc:35
static const symbol s_3_0[2]
Definition: turkish.cc:92
static const symbol s_15_0[5]
Definition: turkish.cc:193
static const symbol s_19_1[6]
Definition: turkish.cc:242
static const symbol s_12_3[3]
Definition: turkish.cc:163
static const symbol s_20_6[4]
Definition: turkish.cc:254
static const symbol s_18_2[3]
Definition: turkish.cc:224
static const symbol s_20_3[3]
Definition: turkish.cc:251
static const struct among a_22[4]
Definition: turkish.cc:338
static const symbol s_20_31[3]
Definition: turkish.cc:279
static const symbol s_7_1[3]
Definition: turkish.cc:122
static int r_mark_ndA(struct SN_env *z)
Definition: turkish.cc:579
static const symbol s_18_4[4]
Definition: turkish.cc:226
static const symbol s_18_1[3]
Definition: turkish.cc:223
static int r_mark_sU(struct SN_env *z)
Definition: turkish.cc:519
static const struct among a_23[4]
Definition: turkish.cc:349
static const symbol s_20_8[4]
Definition: turkish.cc:256
static const struct among a_5[2]
Definition: turkish.cc:105
static const symbol s_7[]
Definition: turkish.cc:39
static const symbol s_8_0[3]
Definition: turkish.cc:128
static const symbol s_13[]
Definition: turkish.cc:45
static const symbol s_8_2[3]
Definition: turkish.cc:130
static const symbol s_23_1[1]
Definition: turkish.cc:346
static int r_mark_yUz(struct SN_env *z)
Definition: turkish.cc:607
static const symbol s_20_27[2]
Definition: turkish.cc:275
static const symbol s_23_2[1]
Definition: turkish.cc:347
static const symbol s_18_3[3]
Definition: turkish.cc:225
static const symbol s_13_1[3]
Definition: turkish.cc:172
static const symbol s_20_19[3]
Definition: turkish.cc:267
static const symbol s_20_30[3]
Definition: turkish.cc:278
static const symbol s_17_0[3]
Definition: turkish.cc:211
static const struct among a_11[2]
Definition: turkish.cc:155
static const symbol s_14_0[2]
Definition: turkish.cc:182
static const struct among a_10[2]
Definition: turkish.cc:148
static const symbol s_18_0[3]
Definition: turkish.cc:222
static const symbol s_16_1[3]
Definition: turkish.cc:205
static const symbol s_10_1[2]
Definition: turkish.cc:147
static const symbol s_12_1[2]
Definition: turkish.cc:161
static const symbol s_21_5[3]
Definition: turkish.cc:320
static const symbol s_0_6[4]
Definition: turkish.cc:57
static const symbol s_0_9[4]
Definition: turkish.cc:60
static const symbol s_7_0[3]
Definition: turkish.cc:121
static int r_mark_lArI(struct SN_env *z)
Definition: turkish.cc:555
static const symbol s_20_4[3]
Definition: turkish.cc:252
static int r_check_vowel_harmony(struct SN_env *z)
Definition: turkish.cc:372
static const struct among a_1[2]
Definition: turkish.cc:76
static const symbol s_8_1[3]
Definition: turkish.cc:129
static const symbol s_21_0[2]
Definition: turkish.cc:315
static const symbol s_22_1[4]
Definition: turkish.cc:335
static const symbol s_6_2[2]
Definition: turkish.cc:112
static int r_mark_suffix_with_optional_y_consonant(struct SN_env *z)
Definition: turkish.cc:457
static const symbol s_15_3[7]
Definition: turkish.cc:196
static const struct among a_14[4]
Definition: turkish.cc:186
static const symbol s_20_2[3]
Definition: turkish.cc:250
static const symbol s_20_23[4]
Definition: turkish.cc:271
static const symbol s_20_25[4]
Definition: turkish.cc:273
static const symbol s_17_2[4]
Definition: turkish.cc:213
static const symbol s_16[]
Definition: turkish.cc:48
static const symbol s_14[]
Definition: turkish.cc:46
static const unsigned char g_vowel1[]
Definition: turkish.cc:360
static const struct among a_20[32]
Definition: turkish.cc:280
static int r_mark_DUr(struct SN_env *z)
Definition: turkish.cc:631
static const symbol s_15_1[5]
Definition: turkish.cc:194
static const symbol s_9_0[4]
Definition: turkish.cc:139
static const struct among a_18[8]
Definition: turkish.cc:230
static const struct among a_15[4]
Definition: turkish.cc:197
static const symbol s_0_7[4]
Definition: turkish.cc:58
static const symbol s_10[]
Definition: turkish.cc:42
static int r_mark_yDU(struct SN_env *z)
Definition: turkish.cc:640
static const struct among a_2[4]
Definition: turkish.cc:85
static const symbol s_1[]
Definition: turkish.cc:33
static const symbol s_20_9[4]
Definition: turkish.cc:257
static const symbol s_21_7[3]
Definition: turkish.cc:322
static const symbol s_9_1[4]
Definition: turkish.cc:140
static const symbol s_20_28[3]
Definition: turkish.cc:276
static const struct among a_13[4]
Definition: turkish.cc:175
static const symbol s_14_2[3]
Definition: turkish.cc:184
static const symbol s_20_20[3]
Definition: turkish.cc:268
static const symbol s_3_3[3]
Definition: turkish.cc:95
Xapian::Internal::Snowball::Turkish::SN_local SN_local
Definition: turkish.cc:10
static const struct among a_9[2]
Definition: turkish.cc:141
static const symbol s_17_1[3]
Definition: turkish.cc:212
static const symbol s_2_2[3]
Definition: turkish.cc:83
static const symbol s_20_1[2]
Definition: turkish.cc:249
static int r_mark_lAr(struct SN_env *z)
Definition: turkish.cc:622
static int r_mark_ysA(struct SN_env *z)
Definition: turkish.cc:649
static const symbol s_20_5[3]
Definition: turkish.cc:253
static const symbol s_11[]
Definition: turkish.cc:43
static const symbol s_12[]
Definition: turkish.cc:44
static int r_stem_suffix_chain_before_ki(struct SN_env *z)
Definition: turkish.cc:665
static const symbol s_6_1[2]
Definition: turkish.cc:111
static const unsigned char g_U[]
Definition: turkish.cc:358
static const symbol s_20_18[3]
Definition: turkish.cc:266
static const symbol s_6_3[2]
Definition: turkish.cc:113
static const unsigned char g_vowel6[]
Definition: turkish.cc:370
static const struct among a_21[8]
Definition: turkish.cc:323
static const symbol s_21_4[3]
Definition: turkish.cc:319
static const symbol s_20_7[4]
Definition: turkish.cc:255
static const symbol s_23_0[1]
Definition: turkish.cc:345
static const symbol s_0_1[1]
Definition: turkish.cc:52
static const symbol s_0_8[4]
Definition: turkish.cc:59
static int r_mark_possessives(struct SN_env *z)
Definition: turkish.cc:488
static const symbol s_10_0[2]
Definition: turkish.cc:146
static const struct among a_0[10]
Definition: turkish.cc:61
static const symbol s_22_2[5]
Definition: turkish.cc:336
static const symbol s_20_12[3]
Definition: turkish.cc:260
static const symbol s_5_1[2]
Definition: turkish.cc:104
static const symbol s_18_5[4]
Definition: turkish.cc:227
static const symbol s_1_1[5]
Definition: turkish.cc:75
static const symbol s_20_29[3]
Definition: turkish.cc:277
static const symbol s_18_6[4]
Definition: turkish.cc:228
static const symbol s_17[]
Definition: turkish.cc:49
static const unsigned char g_vowel4[]
Definition: turkish.cc:366
static const symbol s_22_3[5]
Definition: turkish.cc:337
static const symbol s_14_1[2]
Definition: turkish.cc:183
static const symbol s_13_2[4]
Definition: turkish.cc:173
static int r_mark_sUnUz(struct SN_env *z)
Definition: turkish.cc:617
static const symbol s_16_0[3]
Definition: turkish.cc:204
static const unsigned char g_vowel[]
Definition: turkish.cc:356
static const symbol s_21_2[3]
Definition: turkish.cc:317
static const symbol s_2_1[2]
Definition: turkish.cc:82
static const symbol s_14_3[3]
Definition: turkish.cc:185
static const unsigned char g_vowel3[]
Definition: turkish.cc:364
static const symbol s_6_0[2]
Definition: turkish.cc:110
static const symbol s_12_2[3]
Definition: turkish.cc:162
static const symbol s_8[]
Definition: turkish.cc:40
static const symbol s_9[]
Definition: turkish.cc:41
static const symbol s_20_15[4]
Definition: turkish.cc:263
static const symbol s_5[]
Definition: turkish.cc:37
static const symbol s_20_16[4]
Definition: turkish.cc:264
static const symbol s_20_11[3]
Definition: turkish.cc:259
static const symbol s_15[]
Definition: turkish.cc:47
static const symbol s_8_3[3]
Definition: turkish.cc:131
static const symbol s_11_0[2]
Definition: turkish.cc:153
static const symbol s_1_0[4]
Definition: turkish.cc:74
static const symbol s_23_3[2]
Definition: turkish.cc:348
static const symbol s_0[]
Definition: turkish.cc:32
static const symbol s_0_4[3]
Definition: turkish.cc:55