LCOV - code coverage report
Current view: top level - src/backend/snowball/libstemmer - stem_UTF_8_turkish.c (source / functions) Hit Total Coverage
Test: PostgreSQL 19devel Lines: 0 1171 0.0 %
Date: 2026-02-02 14:17:46 Functions: 0 44 0.0 %
Legend: Lines: hit not hit

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

Generated by: LCOV version 1.16