1# Generated by Snowball 2.2.0 - https://snowballstem.org/
2
3from .basestemmer import BaseStemmer
4from .among import Among
5
6
7class TurkishStemmer(BaseStemmer):
8    '''
9    This class implements the stemming algorithm defined by a snowball script.
10    Generated by Snowball 2.2.0 - https://snowballstem.org/
11    '''
12
13    a_0 = [
14        Among(u"m", -1, -1),
15        Among(u"n", -1, -1),
16        Among(u"miz", -1, -1),
17        Among(u"niz", -1, -1),
18        Among(u"muz", -1, -1),
19        Among(u"nuz", -1, -1),
20        Among(u"m\u00FCz", -1, -1),
21        Among(u"n\u00FCz", -1, -1),
22        Among(u"m\u0131z", -1, -1),
23        Among(u"n\u0131z", -1, -1)
24    ]
25
26    a_1 = [
27        Among(u"leri", -1, -1),
28        Among(u"lar\u0131", -1, -1)
29    ]
30
31    a_2 = [
32        Among(u"ni", -1, -1),
33        Among(u"nu", -1, -1),
34        Among(u"n\u00FC", -1, -1),
35        Among(u"n\u0131", -1, -1)
36    ]
37
38    a_3 = [
39        Among(u"in", -1, -1),
40        Among(u"un", -1, -1),
41        Among(u"\u00FCn", -1, -1),
42        Among(u"\u0131n", -1, -1)
43    ]
44
45    a_4 = [
46        Among(u"a", -1, -1),
47        Among(u"e", -1, -1)
48    ]
49
50    a_5 = [
51        Among(u"na", -1, -1),
52        Among(u"ne", -1, -1)
53    ]
54
55    a_6 = [
56        Among(u"da", -1, -1),
57        Among(u"ta", -1, -1),
58        Among(u"de", -1, -1),
59        Among(u"te", -1, -1)
60    ]
61
62    a_7 = [
63        Among(u"nda", -1, -1),
64        Among(u"nde", -1, -1)
65    ]
66
67    a_8 = [
68        Among(u"dan", -1, -1),
69        Among(u"tan", -1, -1),
70        Among(u"den", -1, -1),
71        Among(u"ten", -1, -1)
72    ]
73
74    a_9 = [
75        Among(u"ndan", -1, -1),
76        Among(u"nden", -1, -1)
77    ]
78
79    a_10 = [
80        Among(u"la", -1, -1),
81        Among(u"le", -1, -1)
82    ]
83
84    a_11 = [
85        Among(u"ca", -1, -1),
86        Among(u"ce", -1, -1)
87    ]
88
89    a_12 = [
90        Among(u"im", -1, -1),
91        Among(u"um", -1, -1),
92        Among(u"\u00FCm", -1, -1),
93        Among(u"\u0131m", -1, -1)
94    ]
95
96    a_13 = [
97        Among(u"sin", -1, -1),
98        Among(u"sun", -1, -1),
99        Among(u"s\u00FCn", -1, -1),
100        Among(u"s\u0131n", -1, -1)
101    ]
102
103    a_14 = [
104        Among(u"iz", -1, -1),
105        Among(u"uz", -1, -1),
106        Among(u"\u00FCz", -1, -1),
107        Among(u"\u0131z", -1, -1)
108    ]
109
110    a_15 = [
111        Among(u"siniz", -1, -1),
112        Among(u"sunuz", -1, -1),
113        Among(u"s\u00FCn\u00FCz", -1, -1),
114        Among(u"s\u0131n\u0131z", -1, -1)
115    ]
116
117    a_16 = [
118        Among(u"lar", -1, -1),
119        Among(u"ler", -1, -1)
120    ]
121
122    a_17 = [
123        Among(u"niz", -1, -1),
124        Among(u"nuz", -1, -1),
125        Among(u"n\u00FCz", -1, -1),
126        Among(u"n\u0131z", -1, -1)
127    ]
128
129    a_18 = [
130        Among(u"dir", -1, -1),
131        Among(u"tir", -1, -1),
132        Among(u"dur", -1, -1),
133        Among(u"tur", -1, -1),
134        Among(u"d\u00FCr", -1, -1),
135        Among(u"t\u00FCr", -1, -1),
136        Among(u"d\u0131r", -1, -1),
137        Among(u"t\u0131r", -1, -1)
138    ]
139
140    a_19 = [
141        Among(u"cas\u0131na", -1, -1),
142        Among(u"cesine", -1, -1)
143    ]
144
145    a_20 = [
146        Among(u"di", -1, -1),
147        Among(u"ti", -1, -1),
148        Among(u"dik", -1, -1),
149        Among(u"tik", -1, -1),
150        Among(u"duk", -1, -1),
151        Among(u"tuk", -1, -1),
152        Among(u"d\u00FCk", -1, -1),
153        Among(u"t\u00FCk", -1, -1),
154        Among(u"d\u0131k", -1, -1),
155        Among(u"t\u0131k", -1, -1),
156        Among(u"dim", -1, -1),
157        Among(u"tim", -1, -1),
158        Among(u"dum", -1, -1),
159        Among(u"tum", -1, -1),
160        Among(u"d\u00FCm", -1, -1),
161        Among(u"t\u00FCm", -1, -1),
162        Among(u"d\u0131m", -1, -1),
163        Among(u"t\u0131m", -1, -1),
164        Among(u"din", -1, -1),
165        Among(u"tin", -1, -1),
166        Among(u"dun", -1, -1),
167        Among(u"tun", -1, -1),
168        Among(u"d\u00FCn", -1, -1),
169        Among(u"t\u00FCn", -1, -1),
170        Among(u"d\u0131n", -1, -1),
171        Among(u"t\u0131n", -1, -1),
172        Among(u"du", -1, -1),
173        Among(u"tu", -1, -1),
174        Among(u"d\u00FC", -1, -1),
175        Among(u"t\u00FC", -1, -1),
176        Among(u"d\u0131", -1, -1),
177        Among(u"t\u0131", -1, -1)
178    ]
179
180    a_21 = [
181        Among(u"sa", -1, -1),
182        Among(u"se", -1, -1),
183        Among(u"sak", -1, -1),
184        Among(u"sek", -1, -1),
185        Among(u"sam", -1, -1),
186        Among(u"sem", -1, -1),
187        Among(u"san", -1, -1),
188        Among(u"sen", -1, -1)
189    ]
190
191    a_22 = [
192        Among(u"mi\u015F", -1, -1),
193        Among(u"mu\u015F", -1, -1),
194        Among(u"m\u00FC\u015F", -1, -1),
195        Among(u"m\u0131\u015F", -1, -1)
196    ]
197
198    a_23 = [
199        Among(u"b", -1, 1),
200        Among(u"c", -1, 2),
201        Among(u"d", -1, 3),
202        Among(u"\u011F", -1, 4)
203    ]
204
205    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]
206
207    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]
208
209    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]
210
211    g_vowel2 = [17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130]
212
213    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]
214
215    g_vowel4 = [17]
216
217    g_vowel5 = [65]
218
219    g_vowel6 = [65]
220
221    B_continue_stemming_noun_suffixes = False
222
223    def __r_check_vowel_harmony(self):
224        v_1 = self.limit - self.cursor
225        if not self.go_out_grouping_b(TurkishStemmer.g_vowel, 97, 305):
226            return False
227        try:
228            v_2 = self.limit - self.cursor
229            try:
230                if not self.eq_s_b(u"a"):
231                    raise lab1()
232                if not self.go_out_grouping_b(TurkishStemmer.g_vowel1, 97, 305):
233                    raise lab1()
234                raise lab0()
235            except lab1: pass
236            self.cursor = self.limit - v_2
237            try:
238                if not self.eq_s_b(u"e"):
239                    raise lab2()
240                if not self.go_out_grouping_b(TurkishStemmer.g_vowel2, 101, 252):
241                    raise lab2()
242                raise lab0()
243            except lab2: pass
244            self.cursor = self.limit - v_2
245            try:
246                if not self.eq_s_b(u"\u0131"):
247                    raise lab3()
248                if not self.go_out_grouping_b(TurkishStemmer.g_vowel3, 97, 305):
249                    raise lab3()
250                raise lab0()
251            except lab3: pass
252            self.cursor = self.limit - v_2
253            try:
254                if not self.eq_s_b(u"i"):
255                    raise lab4()
256                if not self.go_out_grouping_b(TurkishStemmer.g_vowel4, 101, 105):
257                    raise lab4()
258                raise lab0()
259            except lab4: pass
260            self.cursor = self.limit - v_2
261            try:
262                if not self.eq_s_b(u"o"):
263                    raise lab5()
264                if not self.go_out_grouping_b(TurkishStemmer.g_vowel5, 111, 117):
265                    raise lab5()
266                raise lab0()
267            except lab5: pass
268            self.cursor = self.limit - v_2
269            try:
270                if not self.eq_s_b(u"\u00F6"):
271                    raise lab6()
272                if not self.go_out_grouping_b(TurkishStemmer.g_vowel6, 246, 252):
273                    raise lab6()
274                raise lab0()
275            except lab6: pass
276            self.cursor = self.limit - v_2
277            try:
278                if not self.eq_s_b(u"u"):
279                    raise lab7()
280                if not self.go_out_grouping_b(TurkishStemmer.g_vowel5, 111, 117):
281                    raise lab7()
282                raise lab0()
283            except lab7: pass
284            self.cursor = self.limit - v_2
285            if not self.eq_s_b(u"\u00FC"):
286                return False
287            if not self.go_out_grouping_b(TurkishStemmer.g_vowel6, 246, 252):
288                return False
289        except lab0: pass
290        self.cursor = self.limit - v_1
291        return True
292
293    def __r_mark_suffix_with_optional_n_consonant(self):
294        try:
295            v_1 = self.limit - self.cursor
296            try:
297                if not self.eq_s_b(u"n"):
298                    raise lab1()
299                v_2 = self.limit - self.cursor
300                if not self.in_grouping_b(TurkishStemmer.g_vowel, 97, 305):
301                    raise lab1()
302                self.cursor = self.limit - v_2
303                raise lab0()
304            except lab1: pass
305            self.cursor = self.limit - v_1
306            v_3 = self.limit - self.cursor
307            try:
308                v_4 = self.limit - self.cursor
309                if not self.eq_s_b(u"n"):
310                    raise lab2()
311                self.cursor = self.limit - v_4
312                return False
313            except lab2: pass
314            self.cursor = self.limit - v_3
315            v_5 = self.limit - self.cursor
316            if self.cursor <= self.limit_backward:
317                return False
318            self.cursor -= 1
319            if not self.in_grouping_b(TurkishStemmer.g_vowel, 97, 305):
320                return False
321            self.cursor = self.limit - v_5
322        except lab0: pass
323        return True
324
325    def __r_mark_suffix_with_optional_s_consonant(self):
326        try:
327            v_1 = self.limit - self.cursor
328            try:
329                if not self.eq_s_b(u"s"):
330                    raise lab1()
331                v_2 = self.limit - self.cursor
332                if not self.in_grouping_b(TurkishStemmer.g_vowel, 97, 305):
333                    raise lab1()
334                self.cursor = self.limit - v_2
335                raise lab0()
336            except lab1: pass
337            self.cursor = self.limit - v_1
338            v_3 = self.limit - self.cursor
339            try:
340                v_4 = self.limit - self.cursor
341                if not self.eq_s_b(u"s"):
342                    raise lab2()
343                self.cursor = self.limit - v_4
344                return False
345            except lab2: pass
346            self.cursor = self.limit - v_3
347            v_5 = self.limit - self.cursor
348            if self.cursor <= self.limit_backward:
349                return False
350            self.cursor -= 1
351            if not self.in_grouping_b(TurkishStemmer.g_vowel, 97, 305):
352                return False
353            self.cursor = self.limit - v_5
354        except lab0: pass
355        return True
356
357    def __r_mark_suffix_with_optional_y_consonant(self):
358        try:
359            v_1 = self.limit - self.cursor
360            try:
361                if not self.eq_s_b(u"y"):
362                    raise lab1()
363                v_2 = self.limit - self.cursor
364                if not self.in_grouping_b(TurkishStemmer.g_vowel, 97, 305):
365                    raise lab1()
366                self.cursor = self.limit - v_2
367                raise lab0()
368            except lab1: pass
369            self.cursor = self.limit - v_1
370            v_3 = self.limit - self.cursor
371            try:
372                v_4 = self.limit - self.cursor
373                if not self.eq_s_b(u"y"):
374                    raise lab2()
375                self.cursor = self.limit - v_4
376                return False
377            except lab2: pass
378            self.cursor = self.limit - v_3
379            v_5 = self.limit - self.cursor
380            if self.cursor <= self.limit_backward:
381                return False
382            self.cursor -= 1
383            if not self.in_grouping_b(TurkishStemmer.g_vowel, 97, 305):
384                return False
385            self.cursor = self.limit - v_5
386        except lab0: pass
387        return True
388
389    def __r_mark_suffix_with_optional_U_vowel(self):
390        try:
391            v_1 = self.limit - self.cursor
392            try:
393                if not self.in_grouping_b(TurkishStemmer.g_U, 105, 305):
394                    raise lab1()
395                v_2 = self.limit - self.cursor
396                if not self.out_grouping_b(TurkishStemmer.g_vowel, 97, 305):
397                    raise lab1()
398                self.cursor = self.limit - v_2
399                raise lab0()
400            except lab1: pass
401            self.cursor = self.limit - v_1
402            v_3 = self.limit - self.cursor
403            try:
404                v_4 = self.limit - self.cursor
405                if not self.in_grouping_b(TurkishStemmer.g_U, 105, 305):
406                    raise lab2()
407                self.cursor = self.limit - v_4
408                return False
409            except lab2: pass
410            self.cursor = self.limit - v_3
411            v_5 = self.limit - self.cursor
412            if self.cursor <= self.limit_backward:
413                return False
414            self.cursor -= 1
415            if not self.out_grouping_b(TurkishStemmer.g_vowel, 97, 305):
416                return False
417            self.cursor = self.limit - v_5
418        except lab0: pass
419        return True
420
421    def __r_mark_possessives(self):
422        if self.find_among_b(TurkishStemmer.a_0) == 0:
423            return False
424        if not self.__r_mark_suffix_with_optional_U_vowel():
425            return False
426        return True
427
428    def __r_mark_sU(self):
429        if not self.__r_check_vowel_harmony():
430            return False
431        if not self.in_grouping_b(TurkishStemmer.g_U, 105, 305):
432            return False
433        if not self.__r_mark_suffix_with_optional_s_consonant():
434            return False
435        return True
436
437    def __r_mark_lArI(self):
438        if self.find_among_b(TurkishStemmer.a_1) == 0:
439            return False
440        return True
441
442    def __r_mark_yU(self):
443        if not self.__r_check_vowel_harmony():
444            return False
445        if not self.in_grouping_b(TurkishStemmer.g_U, 105, 305):
446            return False
447        if not self.__r_mark_suffix_with_optional_y_consonant():
448            return False
449        return True
450
451    def __r_mark_nU(self):
452        if not self.__r_check_vowel_harmony():
453            return False
454        if self.find_among_b(TurkishStemmer.a_2) == 0:
455            return False
456        return True
457
458    def __r_mark_nUn(self):
459        if not self.__r_check_vowel_harmony():
460            return False
461        if self.find_among_b(TurkishStemmer.a_3) == 0:
462            return False
463        if not self.__r_mark_suffix_with_optional_n_consonant():
464            return False
465        return True
466
467    def __r_mark_yA(self):
468        if not self.__r_check_vowel_harmony():
469            return False
470        if self.find_among_b(TurkishStemmer.a_4) == 0:
471            return False
472        if not self.__r_mark_suffix_with_optional_y_consonant():
473            return False
474        return True
475
476    def __r_mark_nA(self):
477        if not self.__r_check_vowel_harmony():
478            return False
479        if self.find_among_b(TurkishStemmer.a_5) == 0:
480            return False
481        return True
482
483    def __r_mark_DA(self):
484        if not self.__r_check_vowel_harmony():
485            return False
486        if self.find_among_b(TurkishStemmer.a_6) == 0:
487            return False
488        return True
489
490    def __r_mark_ndA(self):
491        if not self.__r_check_vowel_harmony():
492            return False
493        if self.find_among_b(TurkishStemmer.a_7) == 0:
494            return False
495        return True
496
497    def __r_mark_DAn(self):
498        if not self.__r_check_vowel_harmony():
499            return False
500        if self.find_among_b(TurkishStemmer.a_8) == 0:
501            return False
502        return True
503
504    def __r_mark_ndAn(self):
505        if not self.__r_check_vowel_harmony():
506            return False
507        if self.find_among_b(TurkishStemmer.a_9) == 0:
508            return False
509        return True
510
511    def __r_mark_ylA(self):
512        if not self.__r_check_vowel_harmony():
513            return False
514        if self.find_among_b(TurkishStemmer.a_10) == 0:
515            return False
516        if not self.__r_mark_suffix_with_optional_y_consonant():
517            return False
518        return True
519
520    def __r_mark_ki(self):
521        if not self.eq_s_b(u"ki"):
522            return False
523        return True
524
525    def __r_mark_ncA(self):
526        if not self.__r_check_vowel_harmony():
527            return False
528        if self.find_among_b(TurkishStemmer.a_11) == 0:
529            return False
530        if not self.__r_mark_suffix_with_optional_n_consonant():
531            return False
532        return True
533
534    def __r_mark_yUm(self):
535        if not self.__r_check_vowel_harmony():
536            return False
537        if self.find_among_b(TurkishStemmer.a_12) == 0:
538            return False
539        if not self.__r_mark_suffix_with_optional_y_consonant():
540            return False
541        return True
542
543    def __r_mark_sUn(self):
544        if not self.__r_check_vowel_harmony():
545            return False
546        if self.find_among_b(TurkishStemmer.a_13) == 0:
547            return False
548        return True
549
550    def __r_mark_yUz(self):
551        if not self.__r_check_vowel_harmony():
552            return False
553        if self.find_among_b(TurkishStemmer.a_14) == 0:
554            return False
555        if not self.__r_mark_suffix_with_optional_y_consonant():
556            return False
557        return True
558
559    def __r_mark_sUnUz(self):
560        if self.find_among_b(TurkishStemmer.a_15) == 0:
561            return False
562        return True
563
564    def __r_mark_lAr(self):
565        if not self.__r_check_vowel_harmony():
566            return False
567        if self.find_among_b(TurkishStemmer.a_16) == 0:
568            return False
569        return True
570
571    def __r_mark_nUz(self):
572        if not self.__r_check_vowel_harmony():
573            return False
574        if self.find_among_b(TurkishStemmer.a_17) == 0:
575            return False
576        return True
577
578    def __r_mark_DUr(self):
579        if not self.__r_check_vowel_harmony():
580            return False
581        if self.find_among_b(TurkishStemmer.a_18) == 0:
582            return False
583        return True
584
585    def __r_mark_cAsInA(self):
586        if self.find_among_b(TurkishStemmer.a_19) == 0:
587            return False
588        return True
589
590    def __r_mark_yDU(self):
591        if not self.__r_check_vowel_harmony():
592            return False
593        if self.find_among_b(TurkishStemmer.a_20) == 0:
594            return False
595        if not self.__r_mark_suffix_with_optional_y_consonant():
596            return False
597        return True
598
599    def __r_mark_ysA(self):
600        if self.find_among_b(TurkishStemmer.a_21) == 0:
601            return False
602        if not self.__r_mark_suffix_with_optional_y_consonant():
603            return False
604        return True
605
606    def __r_mark_ymUs_(self):
607        if not self.__r_check_vowel_harmony():
608            return False
609        if self.find_among_b(TurkishStemmer.a_22) == 0:
610            return False
611        if not self.__r_mark_suffix_with_optional_y_consonant():
612            return False
613        return True
614
615    def __r_mark_yken(self):
616        if not self.eq_s_b(u"ken"):
617            return False
618        if not self.__r_mark_suffix_with_optional_y_consonant():
619            return False
620        return True
621
622    def __r_stem_nominal_verb_suffixes(self):
623        self.ket = self.cursor
624        self.B_continue_stemming_noun_suffixes = True
625        try:
626            v_1 = self.limit - self.cursor
627            try:
628                try:
629                    v_2 = self.limit - self.cursor
630                    try:
631                        if not self.__r_mark_ymUs_():
632                            raise lab3()
633                        raise lab2()
634                    except lab3: pass
635                    self.cursor = self.limit - v_2
636                    try:
637                        if not self.__r_mark_yDU():
638                            raise lab4()
639                        raise lab2()
640                    except lab4: pass
641                    self.cursor = self.limit - v_2
642                    try:
643                        if not self.__r_mark_ysA():
644                            raise lab5()
645                        raise lab2()
646                    except lab5: pass
647                    self.cursor = self.limit - v_2
648                    if not self.__r_mark_yken():
649                        raise lab1()
650                except lab2: pass
651                raise lab0()
652            except lab1: pass
653            self.cursor = self.limit - v_1
654            try:
655                if not self.__r_mark_cAsInA():
656                    raise lab6()
657                try:
658                    v_3 = self.limit - self.cursor
659                    try:
660                        if not self.__r_mark_sUnUz():
661                            raise lab8()
662                        raise lab7()
663                    except lab8: pass
664                    self.cursor = self.limit - v_3
665                    try:
666                        if not self.__r_mark_lAr():
667                            raise lab9()
668                        raise lab7()
669                    except lab9: pass
670                    self.cursor = self.limit - v_3
671                    try:
672                        if not self.__r_mark_yUm():
673                            raise lab10()
674                        raise lab7()
675                    except lab10: pass
676                    self.cursor = self.limit - v_3
677                    try:
678                        if not self.__r_mark_sUn():
679                            raise lab11()
680                        raise lab7()
681                    except lab11: pass
682                    self.cursor = self.limit - v_3
683                    try:
684                        if not self.__r_mark_yUz():
685                            raise lab12()
686                        raise lab7()
687                    except lab12: pass
688                    self.cursor = self.limit - v_3
689                except lab7: pass
690                if not self.__r_mark_ymUs_():
691                    raise lab6()
692                raise lab0()
693            except lab6: pass
694            self.cursor = self.limit - v_1
695            try:
696                if not self.__r_mark_lAr():
697                    raise lab13()
698                self.bra = self.cursor
699                if not self.slice_del():
700                    return False
701
702                v_4 = self.limit - self.cursor
703                try:
704                    self.ket = self.cursor
705                    try:
706                        v_5 = self.limit - self.cursor
707                        try:
708                            if not self.__r_mark_DUr():
709                                raise lab16()
710                            raise lab15()
711                        except lab16: pass
712                        self.cursor = self.limit - v_5
713                        try:
714                            if not self.__r_mark_yDU():
715                                raise lab17()
716                            raise lab15()
717                        except lab17: pass
718                        self.cursor = self.limit - v_5
719                        try:
720                            if not self.__r_mark_ysA():
721                                raise lab18()
722                            raise lab15()
723                        except lab18: pass
724                        self.cursor = self.limit - v_5
725                        if not self.__r_mark_ymUs_():
726                            self.cursor = self.limit - v_4
727                            raise lab14()
728                    except lab15: pass
729                except lab14: pass
730                self.B_continue_stemming_noun_suffixes = False
731                raise lab0()
732            except lab13: pass
733            self.cursor = self.limit - v_1
734            try:
735                if not self.__r_mark_nUz():
736                    raise lab19()
737                try:
738                    v_6 = self.limit - self.cursor
739                    try:
740                        if not self.__r_mark_yDU():
741                            raise lab21()
742                        raise lab20()
743                    except lab21: pass
744                    self.cursor = self.limit - v_6
745                    if not self.__r_mark_ysA():
746                        raise lab19()
747                except lab20: pass
748                raise lab0()
749            except lab19: pass
750            self.cursor = self.limit - v_1
751            try:
752                try:
753                    v_7 = self.limit - self.cursor
754                    try:
755                        if not self.__r_mark_sUnUz():
756                            raise lab24()
757                        raise lab23()
758                    except lab24: pass
759                    self.cursor = self.limit - v_7
760                    try:
761                        if not self.__r_mark_yUz():
762                            raise lab25()
763                        raise lab23()
764                    except lab25: pass
765                    self.cursor = self.limit - v_7
766                    try:
767                        if not self.__r_mark_sUn():
768                            raise lab26()
769                        raise lab23()
770                    except lab26: pass
771                    self.cursor = self.limit - v_7
772                    if not self.__r_mark_yUm():
773                        raise lab22()
774                except lab23: pass
775                self.bra = self.cursor
776                if not self.slice_del():
777                    return False
778
779                v_8 = self.limit - self.cursor
780                try:
781                    self.ket = self.cursor
782                    if not self.__r_mark_ymUs_():
783                        self.cursor = self.limit - v_8
784                        raise lab27()
785                except lab27: pass
786                raise lab0()
787            except lab22: pass
788            self.cursor = self.limit - v_1
789            if not self.__r_mark_DUr():
790                return False
791            self.bra = self.cursor
792            if not self.slice_del():
793                return False
794
795            v_9 = self.limit - self.cursor
796            try:
797                self.ket = self.cursor
798                try:
799                    v_10 = self.limit - self.cursor
800                    try:
801                        if not self.__r_mark_sUnUz():
802                            raise lab30()
803                        raise lab29()
804                    except lab30: pass
805                    self.cursor = self.limit - v_10
806                    try:
807                        if not self.__r_mark_lAr():
808                            raise lab31()
809                        raise lab29()
810                    except lab31: pass
811                    self.cursor = self.limit - v_10
812                    try:
813                        if not self.__r_mark_yUm():
814                            raise lab32()
815                        raise lab29()
816                    except lab32: pass
817                    self.cursor = self.limit - v_10
818                    try:
819                        if not self.__r_mark_sUn():
820                            raise lab33()
821                        raise lab29()
822                    except lab33: pass
823                    self.cursor = self.limit - v_10
824                    try:
825                        if not self.__r_mark_yUz():
826                            raise lab34()
827                        raise lab29()
828                    except lab34: pass
829                    self.cursor = self.limit - v_10
830                except lab29: pass
831                if not self.__r_mark_ymUs_():
832                    self.cursor = self.limit - v_9
833                    raise lab28()
834            except lab28: pass
835        except lab0: pass
836        self.bra = self.cursor
837        if not self.slice_del():
838            return False
839
840        return True
841
842    def __r_stem_suffix_chain_before_ki(self):
843        self.ket = self.cursor
844        if not self.__r_mark_ki():
845            return False
846        try:
847            v_1 = self.limit - self.cursor
848            try:
849                if not self.__r_mark_DA():
850                    raise lab1()
851                self.bra = self.cursor
852                if not self.slice_del():
853                    return False
854
855                v_2 = self.limit - self.cursor
856                try:
857                    self.ket = self.cursor
858                    try:
859                        v_3 = self.limit - self.cursor
860                        try:
861                            if not self.__r_mark_lAr():
862                                raise lab4()
863                            self.bra = self.cursor
864                            if not self.slice_del():
865                                return False
866
867                            v_4 = self.limit - self.cursor
868                            try:
869                                if not self.__r_stem_suffix_chain_before_ki():
870                                    self.cursor = self.limit - v_4
871                                    raise lab5()
872                            except lab5: pass
873                            raise lab3()
874                        except lab4: pass
875                        self.cursor = self.limit - v_3
876                        if not self.__r_mark_possessives():
877                            self.cursor = self.limit - v_2
878                            raise lab2()
879                        self.bra = self.cursor
880                        if not self.slice_del():
881                            return False
882
883                        v_5 = self.limit - self.cursor
884                        try:
885                            self.ket = self.cursor
886                            if not self.__r_mark_lAr():
887                                self.cursor = self.limit - v_5
888                                raise lab6()
889                            self.bra = self.cursor
890                            if not self.slice_del():
891                                return False
892
893                            if not self.__r_stem_suffix_chain_before_ki():
894                                self.cursor = self.limit - v_5
895                                raise lab6()
896                        except lab6: pass
897                    except lab3: pass
898                except lab2: pass
899                raise lab0()
900            except lab1: pass
901            self.cursor = self.limit - v_1
902            try:
903                if not self.__r_mark_nUn():
904                    raise lab7()
905                self.bra = self.cursor
906                if not self.slice_del():
907                    return False
908
909                v_6 = self.limit - self.cursor
910                try:
911                    self.ket = self.cursor
912                    try:
913                        v_7 = self.limit - self.cursor
914                        try:
915                            if not self.__r_mark_lArI():
916                                raise lab10()
917                            self.bra = self.cursor
918                            if not self.slice_del():
919                                return False
920
921                            raise lab9()
922                        except lab10: pass
923                        self.cursor = self.limit - v_7
924                        try:
925                            self.ket = self.cursor
926                            try:
927                                v_8 = self.limit - self.cursor
928                                try:
929                                    if not self.__r_mark_possessives():
930                                        raise lab13()
931                                    raise lab12()
932                                except lab13: pass
933                                self.cursor = self.limit - v_8
934                                if not self.__r_mark_sU():
935                                    raise lab11()
936                            except lab12: pass
937                            self.bra = self.cursor
938                            if not self.slice_del():
939                                return False
940
941                            v_9 = self.limit - self.cursor
942                            try:
943                                self.ket = self.cursor
944                                if not self.__r_mark_lAr():
945                                    self.cursor = self.limit - v_9
946                                    raise lab14()
947                                self.bra = self.cursor
948                                if not self.slice_del():
949                                    return False
950
951                                if not self.__r_stem_suffix_chain_before_ki():
952                                    self.cursor = self.limit - v_9
953                                    raise lab14()
954                            except lab14: pass
955                            raise lab9()
956                        except lab11: pass
957                        self.cursor = self.limit - v_7
958                        if not self.__r_stem_suffix_chain_before_ki():
959                            self.cursor = self.limit - v_6
960                            raise lab8()
961                    except lab9: pass
962                except lab8: pass
963                raise lab0()
964            except lab7: pass
965            self.cursor = self.limit - v_1
966            if not self.__r_mark_ndA():
967                return False
968            try:
969                v_10 = self.limit - self.cursor
970                try:
971                    if not self.__r_mark_lArI():
972                        raise lab16()
973                    self.bra = self.cursor
974                    if not self.slice_del():
975                        return False
976
977                    raise lab15()
978                except lab16: pass
979                self.cursor = self.limit - v_10
980                try:
981                    if not self.__r_mark_sU():
982                        raise lab17()
983                    self.bra = self.cursor
984                    if not self.slice_del():
985                        return False
986
987                    v_11 = self.limit - self.cursor
988                    try:
989                        self.ket = self.cursor
990                        if not self.__r_mark_lAr():
991                            self.cursor = self.limit - v_11
992                            raise lab18()
993                        self.bra = self.cursor
994                        if not self.slice_del():
995                            return False
996
997                        if not self.__r_stem_suffix_chain_before_ki():
998                            self.cursor = self.limit - v_11
999                            raise lab18()
1000                    except lab18: pass
1001                    raise lab15()
1002                except lab17: pass
1003                self.cursor = self.limit - v_10
1004                if not self.__r_stem_suffix_chain_before_ki():
1005                    return False
1006            except lab15: pass
1007        except lab0: pass
1008        return True
1009
1010    def __r_stem_noun_suffixes(self):
1011        try:
1012            v_1 = self.limit - self.cursor
1013            try:
1014                self.ket = self.cursor
1015                if not self.__r_mark_lAr():
1016                    raise lab1()
1017                self.bra = self.cursor
1018                if not self.slice_del():
1019                    return False
1020
1021                v_2 = self.limit - self.cursor
1022                try:
1023                    if not self.__r_stem_suffix_chain_before_ki():
1024                        self.cursor = self.limit - v_2
1025                        raise lab2()
1026                except lab2: pass
1027                raise lab0()
1028            except lab1: pass
1029            self.cursor = self.limit - v_1
1030            try:
1031                self.ket = self.cursor
1032                if not self.__r_mark_ncA():
1033                    raise lab3()
1034                self.bra = self.cursor
1035                if not self.slice_del():
1036                    return False
1037
1038                v_3 = self.limit - self.cursor
1039                try:
1040                    try:
1041                        v_4 = self.limit - self.cursor
1042                        try:
1043                            self.ket = self.cursor
1044                            if not self.__r_mark_lArI():
1045                                raise lab6()
1046                            self.bra = self.cursor
1047                            if not self.slice_del():
1048                                return False
1049
1050                            raise lab5()
1051                        except lab6: pass
1052                        self.cursor = self.limit - v_4
1053                        try:
1054                            self.ket = self.cursor
1055                            try:
1056                                v_5 = self.limit - self.cursor
1057                                try:
1058                                    if not self.__r_mark_possessives():
1059                                        raise lab9()
1060                                    raise lab8()
1061                                except lab9: pass
1062                                self.cursor = self.limit - v_5
1063                                if not self.__r_mark_sU():
1064                                    raise lab7()
1065                            except lab8: pass
1066                            self.bra = self.cursor
1067                            if not self.slice_del():
1068                                return False
1069
1070                            v_6 = self.limit - self.cursor
1071                            try:
1072                                self.ket = self.cursor
1073                                if not self.__r_mark_lAr():
1074                                    self.cursor = self.limit - v_6
1075                                    raise lab10()
1076                                self.bra = self.cursor
1077                                if not self.slice_del():
1078                                    return False
1079
1080                                if not self.__r_stem_suffix_chain_before_ki():
1081                                    self.cursor = self.limit - v_6
1082                                    raise lab10()
1083                            except lab10: pass
1084                            raise lab5()
1085                        except lab7: pass
1086                        self.cursor = self.limit - v_4
1087                        self.ket = self.cursor
1088                        if not self.__r_mark_lAr():
1089                            self.cursor = self.limit - v_3
1090                            raise lab4()
1091                        self.bra = self.cursor
1092                        if not self.slice_del():
1093                            return False
1094
1095                        if not self.__r_stem_suffix_chain_before_ki():
1096                            self.cursor = self.limit - v_3
1097                            raise lab4()
1098                    except lab5: pass
1099                except lab4: pass
1100                raise lab0()
1101            except lab3: pass
1102            self.cursor = self.limit - v_1
1103            try:
1104                self.ket = self.cursor
1105                try:
1106                    v_7 = self.limit - self.cursor
1107                    try:
1108                        if not self.__r_mark_ndA():
1109                            raise lab13()
1110                        raise lab12()
1111                    except lab13: pass
1112                    self.cursor = self.limit - v_7
1113                    if not self.__r_mark_nA():
1114                        raise lab11()
1115                except lab12: pass
1116                try:
1117                    v_8 = self.limit - self.cursor
1118                    try:
1119                        if not self.__r_mark_lArI():
1120                            raise lab15()
1121                        self.bra = self.cursor
1122                        if not self.slice_del():
1123                            return False
1124
1125                        raise lab14()
1126                    except lab15: pass
1127                    self.cursor = self.limit - v_8
1128                    try:
1129                        if not self.__r_mark_sU():
1130                            raise lab16()
1131                        self.bra = self.cursor
1132                        if not self.slice_del():
1133                            return False
1134
1135                        v_9 = self.limit - self.cursor
1136                        try:
1137                            self.ket = self.cursor
1138                            if not self.__r_mark_lAr():
1139                                self.cursor = self.limit - v_9
1140                                raise lab17()
1141                            self.bra = self.cursor
1142                            if not self.slice_del():
1143                                return False
1144
1145                            if not self.__r_stem_suffix_chain_before_ki():
1146                                self.cursor = self.limit - v_9
1147                                raise lab17()
1148                        except lab17: pass
1149                        raise lab14()
1150                    except lab16: pass
1151                    self.cursor = self.limit - v_8
1152                    if not self.__r_stem_suffix_chain_before_ki():
1153                        raise lab11()
1154                except lab14: pass
1155                raise lab0()
1156            except lab11: pass
1157            self.cursor = self.limit - v_1
1158            try:
1159                self.ket = self.cursor
1160                try:
1161                    v_10 = self.limit - self.cursor
1162                    try:
1163                        if not self.__r_mark_ndAn():
1164                            raise lab20()
1165                        raise lab19()
1166                    except lab20: pass
1167                    self.cursor = self.limit - v_10
1168                    if not self.__r_mark_nU():
1169                        raise lab18()
1170                except lab19: pass
1171                try:
1172                    v_11 = self.limit - self.cursor
1173                    try:
1174                        if not self.__r_mark_sU():
1175                            raise lab22()
1176                        self.bra = self.cursor
1177                        if not self.slice_del():
1178                            return False
1179
1180                        v_12 = self.limit - self.cursor
1181                        try:
1182                            self.ket = self.cursor
1183                            if not self.__r_mark_lAr():
1184                                self.cursor = self.limit - v_12
1185                                raise lab23()
1186                            self.bra = self.cursor
1187                            if not self.slice_del():
1188                                return False
1189
1190                            if not self.__r_stem_suffix_chain_before_ki():
1191                                self.cursor = self.limit - v_12
1192                                raise lab23()
1193                        except lab23: pass
1194                        raise lab21()
1195                    except lab22: pass
1196                    self.cursor = self.limit - v_11
1197                    if not self.__r_mark_lArI():
1198                        raise lab18()
1199                except lab21: pass
1200                raise lab0()
1201            except lab18: pass
1202            self.cursor = self.limit - v_1
1203            try:
1204                self.ket = self.cursor
1205                if not self.__r_mark_DAn():
1206                    raise lab24()
1207                self.bra = self.cursor
1208                if not self.slice_del():
1209                    return False
1210
1211                v_13 = self.limit - self.cursor
1212                try:
1213                    self.ket = self.cursor
1214                    try:
1215                        v_14 = self.limit - self.cursor
1216                        try:
1217                            if not self.__r_mark_possessives():
1218                                raise lab27()
1219                            self.bra = self.cursor
1220                            if not self.slice_del():
1221                                return False
1222
1223                            v_15 = self.limit - self.cursor
1224                            try:
1225                                self.ket = self.cursor
1226                                if not self.__r_mark_lAr():
1227                                    self.cursor = self.limit - v_15
1228                                    raise lab28()
1229                                self.bra = self.cursor
1230                                if not self.slice_del():
1231                                    return False
1232
1233                                if not self.__r_stem_suffix_chain_before_ki():
1234                                    self.cursor = self.limit - v_15
1235                                    raise lab28()
1236                            except lab28: pass
1237                            raise lab26()
1238                        except lab27: pass
1239                        self.cursor = self.limit - v_14
1240                        try:
1241                            if not self.__r_mark_lAr():
1242                                raise lab29()
1243                            self.bra = self.cursor
1244                            if not self.slice_del():
1245                                return False
1246
1247                            v_16 = self.limit - self.cursor
1248                            try:
1249                                if not self.__r_stem_suffix_chain_before_ki():
1250                                    self.cursor = self.limit - v_16
1251                                    raise lab30()
1252                            except lab30: pass
1253                            raise lab26()
1254                        except lab29: pass
1255                        self.cursor = self.limit - v_14
1256                        if not self.__r_stem_suffix_chain_before_ki():
1257                            self.cursor = self.limit - v_13
1258                            raise lab25()
1259                    except lab26: pass
1260                except lab25: pass
1261                raise lab0()
1262            except lab24: pass
1263            self.cursor = self.limit - v_1
1264            try:
1265                self.ket = self.cursor
1266                try:
1267                    v_17 = self.limit - self.cursor
1268                    try:
1269                        if not self.__r_mark_nUn():
1270                            raise lab33()
1271                        raise lab32()
1272                    except lab33: pass
1273                    self.cursor = self.limit - v_17
1274                    if not self.__r_mark_ylA():
1275                        raise lab31()
1276                except lab32: pass
1277                self.bra = self.cursor
1278                if not self.slice_del():
1279                    return False
1280
1281                v_18 = self.limit - self.cursor
1282                try:
1283                    try:
1284                        v_19 = self.limit - self.cursor
1285                        try:
1286                            self.ket = self.cursor
1287                            if not self.__r_mark_lAr():
1288                                raise lab36()
1289                            self.bra = self.cursor
1290                            if not self.slice_del():
1291                                return False
1292
1293                            if not self.__r_stem_suffix_chain_before_ki():
1294                                raise lab36()
1295                            raise lab35()
1296                        except lab36: pass
1297                        self.cursor = self.limit - v_19
1298                        try:
1299                            self.ket = self.cursor
1300                            try:
1301                                v_20 = self.limit - self.cursor
1302                                try:
1303                                    if not self.__r_mark_possessives():
1304                                        raise lab39()
1305                                    raise lab38()
1306                                except lab39: pass
1307                                self.cursor = self.limit - v_20
1308                                if not self.__r_mark_sU():
1309                                    raise lab37()
1310                            except lab38: pass
1311                            self.bra = self.cursor
1312                            if not self.slice_del():
1313                                return False
1314
1315                            v_21 = self.limit - self.cursor
1316                            try:
1317                                self.ket = self.cursor
1318                                if not self.__r_mark_lAr():
1319                                    self.cursor = self.limit - v_21
1320                                    raise lab40()
1321                                self.bra = self.cursor
1322                                if not self.slice_del():
1323                                    return False
1324
1325                                if not self.__r_stem_suffix_chain_before_ki():
1326                                    self.cursor = self.limit - v_21
1327                                    raise lab40()
1328                            except lab40: pass
1329                            raise lab35()
1330                        except lab37: pass
1331                        self.cursor = self.limit - v_19
1332                        if not self.__r_stem_suffix_chain_before_ki():
1333                            self.cursor = self.limit - v_18
1334                            raise lab34()
1335                    except lab35: pass
1336                except lab34: pass
1337                raise lab0()
1338            except lab31: pass
1339            self.cursor = self.limit - v_1
1340            try:
1341                self.ket = self.cursor
1342                if not self.__r_mark_lArI():
1343                    raise lab41()
1344                self.bra = self.cursor
1345                if not self.slice_del():
1346                    return False
1347
1348                raise lab0()
1349            except lab41: pass
1350            self.cursor = self.limit - v_1
1351            try:
1352                if not self.__r_stem_suffix_chain_before_ki():
1353                    raise lab42()
1354                raise lab0()
1355            except lab42: pass
1356            self.cursor = self.limit - v_1
1357            try:
1358                self.ket = self.cursor
1359                try:
1360                    v_22 = self.limit - self.cursor
1361                    try:
1362                        if not self.__r_mark_DA():
1363                            raise lab45()
1364                        raise lab44()
1365                    except lab45: pass
1366                    self.cursor = self.limit - v_22
1367                    try:
1368                        if not self.__r_mark_yU():
1369                            raise lab46()
1370                        raise lab44()
1371                    except lab46: pass
1372                    self.cursor = self.limit - v_22
1373                    if not self.__r_mark_yA():
1374                        raise lab43()
1375                except lab44: pass
1376                self.bra = self.cursor
1377                if not self.slice_del():
1378                    return False
1379
1380                v_23 = self.limit - self.cursor
1381                try:
1382                    self.ket = self.cursor
1383                    try:
1384                        v_24 = self.limit - self.cursor
1385                        try:
1386                            if not self.__r_mark_possessives():
1387                                raise lab49()
1388                            self.bra = self.cursor
1389                            if not self.slice_del():
1390                                return False
1391
1392                            v_25 = self.limit - self.cursor
1393                            try:
1394                                self.ket = self.cursor
1395                                if not self.__r_mark_lAr():
1396                                    self.cursor = self.limit - v_25
1397                                    raise lab50()
1398                            except lab50: pass
1399                            raise lab48()
1400                        except lab49: pass
1401                        self.cursor = self.limit - v_24
1402                        if not self.__r_mark_lAr():
1403                            self.cursor = self.limit - v_23
1404                            raise lab47()
1405                    except lab48: pass
1406                    self.bra = self.cursor
1407                    if not self.slice_del():
1408                        return False
1409
1410                    self.ket = self.cursor
1411                    if not self.__r_stem_suffix_chain_before_ki():
1412                        self.cursor = self.limit - v_23
1413                        raise lab47()
1414                except lab47: pass
1415                raise lab0()
1416            except lab43: pass
1417            self.cursor = self.limit - v_1
1418            self.ket = self.cursor
1419            try:
1420                v_26 = self.limit - self.cursor
1421                try:
1422                    if not self.__r_mark_possessives():
1423                        raise lab52()
1424                    raise lab51()
1425                except lab52: pass
1426                self.cursor = self.limit - v_26
1427                if not self.__r_mark_sU():
1428                    return False
1429            except lab51: pass
1430            self.bra = self.cursor
1431            if not self.slice_del():
1432                return False
1433
1434            v_27 = self.limit - self.cursor
1435            try:
1436                self.ket = self.cursor
1437                if not self.__r_mark_lAr():
1438                    self.cursor = self.limit - v_27
1439                    raise lab53()
1440                self.bra = self.cursor
1441                if not self.slice_del():
1442                    return False
1443
1444                if not self.__r_stem_suffix_chain_before_ki():
1445                    self.cursor = self.limit - v_27
1446                    raise lab53()
1447            except lab53: pass
1448        except lab0: pass
1449        return True
1450
1451    def __r_post_process_last_consonants(self):
1452        self.ket = self.cursor
1453        among_var = self.find_among_b(TurkishStemmer.a_23)
1454        if among_var == 0:
1455            return False
1456        self.bra = self.cursor
1457        if among_var == 1:
1458            if not self.slice_from(u"p"):
1459                return False
1460        elif among_var == 2:
1461            if not self.slice_from(u"\u00E7"):
1462                return False
1463        elif among_var == 3:
1464            if not self.slice_from(u"t"):
1465                return False
1466        else:
1467            if not self.slice_from(u"k"):
1468                return False
1469        return True
1470
1471    def __r_append_U_to_stems_ending_with_d_or_g(self):
1472        v_1 = self.limit - self.cursor
1473        try:
1474            v_2 = self.limit - self.cursor
1475            try:
1476                if not self.eq_s_b(u"d"):
1477                    raise lab1()
1478                raise lab0()
1479            except lab1: pass
1480            self.cursor = self.limit - v_2
1481            if not self.eq_s_b(u"g"):
1482                return False
1483        except lab0: pass
1484        self.cursor = self.limit - v_1
1485        try:
1486            v_3 = self.limit - self.cursor
1487            try:
1488                v_4 = self.limit - self.cursor
1489                if not self.go_out_grouping_b(TurkishStemmer.g_vowel, 97, 305):
1490                    raise lab3()
1491                try:
1492                    v_5 = self.limit - self.cursor
1493                    try:
1494                        if not self.eq_s_b(u"a"):
1495                            raise lab5()
1496                        raise lab4()
1497                    except lab5: pass
1498                    self.cursor = self.limit - v_5
1499                    if not self.eq_s_b(u"\u0131"):
1500                        raise lab3()
1501                except lab4: pass
1502                self.cursor = self.limit - v_4
1503                c = self.cursor
1504                self.insert(self.cursor, self.cursor, u"\u0131")
1505                self.cursor = c
1506                raise lab2()
1507            except lab3: pass
1508            self.cursor = self.limit - v_3
1509            try:
1510                v_6 = self.limit - self.cursor
1511                if not self.go_out_grouping_b(TurkishStemmer.g_vowel, 97, 305):
1512                    raise lab6()
1513                try:
1514                    v_7 = self.limit - self.cursor
1515                    try:
1516                        if not self.eq_s_b(u"e"):
1517                            raise lab8()
1518                        raise lab7()
1519                    except lab8: pass
1520                    self.cursor = self.limit - v_7
1521                    if not self.eq_s_b(u"i"):
1522                        raise lab6()
1523                except lab7: pass
1524                self.cursor = self.limit - v_6
1525                c = self.cursor
1526                self.insert(self.cursor, self.cursor, u"i")
1527                self.cursor = c
1528                raise lab2()
1529            except lab6: pass
1530            self.cursor = self.limit - v_3
1531            try:
1532                v_8 = self.limit - self.cursor
1533                if not self.go_out_grouping_b(TurkishStemmer.g_vowel, 97, 305):
1534                    raise lab9()
1535                try:
1536                    v_9 = self.limit - self.cursor
1537                    try:
1538                        if not self.eq_s_b(u"o"):
1539                            raise lab11()
1540                        raise lab10()
1541                    except lab11: pass
1542                    self.cursor = self.limit - v_9
1543                    if not self.eq_s_b(u"u"):
1544                        raise lab9()
1545                except lab10: pass
1546                self.cursor = self.limit - v_8
1547                c = self.cursor
1548                self.insert(self.cursor, self.cursor, u"u")
1549                self.cursor = c
1550                raise lab2()
1551            except lab9: pass
1552            self.cursor = self.limit - v_3
1553            v_10 = self.limit - self.cursor
1554            if not self.go_out_grouping_b(TurkishStemmer.g_vowel, 97, 305):
1555                return False
1556            try:
1557                v_11 = self.limit - self.cursor
1558                try:
1559                    if not self.eq_s_b(u"\u00F6"):
1560                        raise lab13()
1561                    raise lab12()
1562                except lab13: pass
1563                self.cursor = self.limit - v_11
1564                if not self.eq_s_b(u"\u00FC"):
1565                    return False
1566            except lab12: pass
1567            self.cursor = self.limit - v_10
1568            c = self.cursor
1569            self.insert(self.cursor, self.cursor, u"\u00FC")
1570            self.cursor = c
1571        except lab2: pass
1572        return True
1573
1574    def __r_is_reserved_word(self):
1575        if not self.eq_s_b(u"ad"):
1576            return False
1577        v_1 = self.limit - self.cursor
1578        try:
1579            if not self.eq_s_b(u"soy"):
1580                self.cursor = self.limit - v_1
1581                raise lab0()
1582        except lab0: pass
1583        if self.cursor > self.limit_backward:
1584            return False
1585        return True
1586
1587    def __r_more_than_one_syllable_word(self):
1588        v_1 = self.cursor
1589        v_2 = 2
1590        while True:
1591            v_3 = self.cursor
1592            try:
1593                if not self.go_out_grouping(TurkishStemmer.g_vowel, 97, 305):
1594                    raise lab0()
1595                self.cursor += 1
1596                v_2 -= 1
1597                continue
1598            except lab0: pass
1599            self.cursor = v_3
1600            break
1601        if v_2 > 0:
1602            return False
1603        self.cursor = v_1
1604        return True
1605
1606    def __r_postlude(self):
1607        self.limit_backward = self.cursor
1608        self.cursor = self.limit
1609        v_1 = self.limit - self.cursor
1610        try:
1611            if not self.__r_is_reserved_word():
1612                raise lab0()
1613            return False
1614        except lab0: pass
1615        self.cursor = self.limit - v_1
1616        v_2 = self.limit - self.cursor
1617        self.__r_append_U_to_stems_ending_with_d_or_g()
1618        self.cursor = self.limit - v_2
1619        v_3 = self.limit - self.cursor
1620        self.__r_post_process_last_consonants()
1621        self.cursor = self.limit - v_3
1622        self.cursor = self.limit_backward
1623        return True
1624
1625    def _stem(self):
1626        if not self.__r_more_than_one_syllable_word():
1627            return False
1628        self.limit_backward = self.cursor
1629        self.cursor = self.limit
1630        v_1 = self.limit - self.cursor
1631        self.__r_stem_nominal_verb_suffixes()
1632        self.cursor = self.limit - v_1
1633        if not self.B_continue_stemming_noun_suffixes:
1634            return False
1635        v_2 = self.limit - self.cursor
1636        self.__r_stem_noun_suffixes()
1637        self.cursor = self.limit - v_2
1638        self.cursor = self.limit_backward
1639        if not self.__r_postlude():
1640            return False
1641        return True
1642
1643
1644class lab0(BaseException): pass
1645
1646
1647class lab1(BaseException): pass
1648
1649
1650class lab2(BaseException): pass
1651
1652
1653class lab3(BaseException): pass
1654
1655
1656class lab4(BaseException): pass
1657
1658
1659class lab5(BaseException): pass
1660
1661
1662class lab6(BaseException): pass
1663
1664
1665class lab7(BaseException): pass
1666
1667
1668class lab8(BaseException): pass
1669
1670
1671class lab9(BaseException): pass
1672
1673
1674class lab10(BaseException): pass
1675
1676
1677class lab11(BaseException): pass
1678
1679
1680class lab12(BaseException): pass
1681
1682
1683class lab13(BaseException): pass
1684
1685
1686class lab14(BaseException): pass
1687
1688
1689class lab15(BaseException): pass
1690
1691
1692class lab16(BaseException): pass
1693
1694
1695class lab17(BaseException): pass
1696
1697
1698class lab18(BaseException): pass
1699
1700
1701class lab19(BaseException): pass
1702
1703
1704class lab20(BaseException): pass
1705
1706
1707class lab21(BaseException): pass
1708
1709
1710class lab22(BaseException): pass
1711
1712
1713class lab23(BaseException): pass
1714
1715
1716class lab24(BaseException): pass
1717
1718
1719class lab25(BaseException): pass
1720
1721
1722class lab26(BaseException): pass
1723
1724
1725class lab27(BaseException): pass
1726
1727
1728class lab28(BaseException): pass
1729
1730
1731class lab29(BaseException): pass
1732
1733
1734class lab30(BaseException): pass
1735
1736
1737class lab31(BaseException): pass
1738
1739
1740class lab32(BaseException): pass
1741
1742
1743class lab33(BaseException): pass
1744
1745
1746class lab34(BaseException): pass
1747
1748
1749class lab35(BaseException): pass
1750
1751
1752class lab36(BaseException): pass
1753
1754
1755class lab37(BaseException): pass
1756
1757
1758class lab38(BaseException): pass
1759
1760
1761class lab39(BaseException): pass
1762
1763
1764class lab40(BaseException): pass
1765
1766
1767class lab41(BaseException): pass
1768
1769
1770class lab42(BaseException): pass
1771
1772
1773class lab43(BaseException): pass
1774
1775
1776class lab44(BaseException): pass
1777
1778
1779class lab45(BaseException): pass
1780
1781
1782class lab46(BaseException): pass
1783
1784
1785class lab47(BaseException): pass
1786
1787
1788class lab48(BaseException): pass
1789
1790
1791class lab49(BaseException): pass
1792
1793
1794class lab50(BaseException): pass
1795
1796
1797class lab51(BaseException): pass
1798
1799
1800class lab52(BaseException): pass
1801
1802
1803class lab53(BaseException): pass
1804