Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/MariaDB/mysql-test/suite/storage_engine/   (MariaDB Server Version 8.1-8.4©)  Datei vom 1.9.2026 mit Größe 700 B image not shown  

Quelle  stem_UTF_8_turkish.c   Sprache: C

 

/* Generated by Snowball 2.2.0 - https://snowballstem.org/ */

#include "header.h"

#ifdef __cplusplus
extern "C" {
#endif
extern int turkish_UTF_8_stem(struct SN_env * z);
#ifdef __cplusplus
}
#endif
static int r_stem_suffix_chain_before_ki(struct SN_env * z);
static int r_stem_noun_suffixes(struct SN_env * z);
static int r_stem_nominal_verb_suffixes(struct SN_env * z);
static int r_remove_proper_noun_suffix(struct SN_env * z);
static int r_postlude(struct SN_env * z);
static int r_post_process_last_consonants(struct SN_env * z);
static int r_more_than_one_syllable_word(struct SN_env * z);
static int r_mark_suffix_with_optional_s_consonant(struct SN_env * z);
static int r_mark_suffix_with_optional_n_consonant(struct SN_env * z);
static int r_mark_suffix_with_optional_U_vowel(struct SN_env * z);
static int r_mark_suffix_with_optional_y_consonant(struct SN_env * z);
static int r_mark_ysA(struct SN_env * z);
static int r_mark_ymUs_(struct SN_env * z);
static int r_mark_yken(struct SN_env * z);
static int r_mark_yDU(struct SN_env * z);
static int r_mark_yUz(struct SN_env * z);
static int r_mark_yUm(struct SN_env * z);
static int r_mark_yU(struct SN_env * z);
static int r_mark_ylA(struct SN_env * z);
static int r_mark_yA(struct SN_env * z);
static int r_mark_possessives(struct SN_env * z);
static int r_mark_sUnUz(struct SN_env * z);
static int r_mark_sUn(struct SN_env * z);
static int r_mark_sU(struct SN_env * z);
static int r_mark_nUz(struct SN_env * z);
static int r_mark_nUn(struct SN_env * z);
static int r_mark_nU(struct SN_env * z);
static int r_mark_ndAn(struct SN_env * z);
static int r_mark_ndA(struct SN_env * z);
static int r_mark_ncA(struct SN_env * z);
static int r_mark_nA(struct SN_env * z);
static int r_mark_lArI(struct SN_env * z);
static int r_mark_lAr(struct SN_env * z);
static int r_mark_ki(struct SN_env * z);
static int r_mark_DUr(struct SN_env * z);
static int r_mark_DAn(struct SN_env * z);
static int r_mark_DA(struct SN_env * z);
static int r_mark_cAsInA(struct SN_env * z);
static int r_is_reserved_word(struct SN_env * z);
static int r_check_vowel_harmony(struct SN_env * z);
static int r_append_U_to_stems_ending_with_d_or_g(struct SN_env * z);
#ifdef __cplusplus
extern "C" {
#endif


extern struct SN_env * turkish_UTF_8_create_env(void);
extern void turkish_UTF_8_close_env(struct SN_env * z);


#ifdef __cplusplus
}
#endif
static const symbol s_0_0[1] = { 'm' };
static const symbol s_0_1[1] = { 'n' };
static const symbol s_0_2[3] = { 'm', 'i', 'z' };
static const symbol s_0_3[3] = { 'n', 'i', 'z' };
static const symbol s_0_4[3] = { 'm', 'u', 'z' };
static const symbol s_0_5[3] = { 'n', 'u', 'z' };
static const symbol s_0_6[4] = { 'm', 0xC4, 0xB1, 'z' };
static const symbol s_0_7[4] = { 'n', 0xC4, 0xB1, 'z' };
static const symbol s_0_8[4] = { 'm', 0xC3, 0xBC, 'z' };
static const symbol s_0_9[4] = { 'n', 0xC3, 0xBC, 'z' };

static const struct among a_0[10] =
{
{ 1, s_0_0, -1, -1, 0},
{ 1, s_0_1, -1, -1, 0},
{ 3, s_0_2, -1, -1, 0},
{ 3, s_0_3, -1, -1, 0},
{ 3, s_0_4, -1, -1, 0},
{ 3, s_0_5, -1, -1, 0},
{ 4, s_0_6, -1, -1, 0},
{ 4, s_0_7, -1, -1, 0},
{ 4, s_0_8, -1, -1, 0},
{ 4, s_0_9, -1, -1, 0}
};

static const symbol s_1_0[4] = { 'l', 'e', 'r', 'i' };
static const symbol s_1_1[5] = { 'l', 'a', 'r', 0xC4, 0xB1 };

static const struct among a_1[2] =
{
{ 4, s_1_0, -1, -1, 0},
{ 5, s_1_1, -1, -1, 0}
};

static const symbol s_2_0[2] = { 'n', 'i' };
static const symbol s_2_1[2] = { 'n', 'u' };
static const symbol s_2_2[3] = { 'n', 0xC4, 0xB1 };
static const symbol s_2_3[3] = { 'n', 0xC3, 0xBC };

static const struct among a_2[4] =
{
{ 2, s_2_0, -1, -1, 0},
{ 2, s_2_1, -1, -1, 0},
{ 3, s_2_2, -1, -1, 0},
{ 3, s_2_3, -1, -1, 0}
};

static const symbol s_3_0[2] = { 'i', 'n' };
static const symbol s_3_1[2] = { 'u', 'n' };
static const symbol s_3_2[3] = { 0xC4, 0xB1, 'n' };
static const symbol s_3_3[3] = { 0xC3, 0xBC, 'n' };

static const struct among a_3[4] =
{
{ 2, s_3_0, -1, -1, 0},
{ 2, s_3_1, -1, -1, 0},
{ 3, s_3_2, -1, -1, 0},
{ 3, s_3_3, -1, -1, 0}
};

static const symbol s_4_0[1] = { 'a' };
static const symbol s_4_1[1] = { 'e' };

static const struct among a_4[2] =
{
{ 1, s_4_0, -1, -1, 0},
{ 1, s_4_1, -1, -1, 0}
};

static const symbol s_5_0[2] = { 'n', 'a' };
static const symbol s_5_1[2] = { 'n', 'e' };

static const struct among a_5[2] =
{
{ 2, s_5_0, -1, -1, 0},
{ 2, s_5_1, -1, -1, 0}
};

static const symbol s_6_0[2] = { 'd', 'a' };
static const symbol s_6_1[2] = { 't', 'a' };
static const symbol s_6_2[2] = { 'd', 'e' };
static const symbol s_6_3[2] = { 't', 'e' };

static const struct among a_6[4] =
{
{ 2, s_6_0, -1, -1, 0},
{ 2, s_6_1, -1, -1, 0},
{ 2, s_6_2, -1, -1, 0},
{ 2, s_6_3, -1, -1, 0}
};

static const symbol s_7_0[3] = { 'n', 'd', 'a' };
static const symbol s_7_1[3] = { 'n', 'd', 'e' };

static const struct among a_7[2] =
{
{ 3, s_7_0, -1, -1, 0},
{ 3, s_7_1, -1, -1, 0}
};

static const symbol s_8_0[3] = { 'd', 'a', 'n' };
static const symbol s_8_1[3] = { 't', 'a', 'n' };
static const symbol s_8_2[3] = { 'd', 'e', 'n' };
static const symbol s_8_3[3] = { 't', 'e', 'n' };

static const struct among a_8[4] =
{
{ 3, s_8_0, -1, -1, 0},
{ 3, s_8_1, -1, -1, 0},
{ 3, s_8_2, -1, -1, 0},
{ 3, s_8_3, -1, -1, 0}
};

static const symbol s_9_0[4] = { 'n', 'd', 'a', 'n' };
static const symbol s_9_1[4] = { 'n', 'd', 'e', 'n' };

static const struct among a_9[2] =
{
{ 4, s_9_0, -1, -1, 0},
{ 4, s_9_1, -1, -1, 0}
};

static const symbol s_10_0[2] = { 'l', 'a' };
static const symbol s_10_1[2] = { 'l', 'e' };

static const struct among a_10[2] =
{
{ 2, s_10_0, -1, -1, 0},
{ 2, s_10_1, -1, -1, 0}
};

static const symbol s_11_0[2] = { 'c', 'a' };
static const symbol s_11_1[2] = { 'c', 'e' };

static const struct among a_11[2] =
{
{ 2, s_11_0, -1, -1, 0},
{ 2, s_11_1, -1, -1, 0}
};

static const symbol s_12_0[2] = { 'i', 'm' };
static const symbol s_12_1[2] = { 'u', 'm' };
static const symbol s_12_2[3] = { 0xC4, 0xB1, 'm' };
static const symbol s_12_3[3] = { 0xC3, 0xBC, 'm' };

static const struct among a_12[4] =
{
{ 2, s_12_0, -1, -1, 0},
{ 2, s_12_1, -1, -1, 0},
{ 3, s_12_2, -1, -1, 0},
{ 3, s_12_3, -1, -1, 0}
};

static const symbol s_13_0[3] = { 's', 'i', 'n' };
static const symbol s_13_1[3] = { 's', 'u', 'n' };
static const symbol s_13_2[4] = { 's', 0xC4, 0xB1, 'n' };
static const symbol s_13_3[4] = { 's', 0xC3, 0xBC, 'n' };

static const struct among a_13[4] =
{
{ 3, s_13_0, -1, -1, 0},
{ 3, s_13_1, -1, -1, 0},
{ 4, s_13_2, -1, -1, 0},
{ 4, s_13_3, -1, -1, 0}
};

static const symbol s_14_0[2] = { 'i', 'z' };
static const symbol s_14_1[2] = { 'u', 'z' };
static const symbol s_14_2[3] = { 0xC4, 0xB1, 'z' };
static const symbol s_14_3[3] = { 0xC3, 0xBC, 'z' };

static const struct among a_14[4] =
{
{ 2, s_14_0, -1, -1, 0},
{ 2, s_14_1, -1, -1, 0},
{ 3, s_14_2, -1, -1, 0},
{ 3, s_14_3, -1, -1, 0}
};

static const symbol s_15_0[5] = { 's', 'i', 'n', 'i', 'z' };
static const symbol s_15_1[5] = { 's', 'u', 'n', 'u', 'z' };
static const symbol s_15_2[7] = { 's', 0xC4, 0xB1, 'n', 0xC4, 0xB1, 'z' };
static const symbol s_15_3[7] = { 's', 0xC3, 0xBC, 'n', 0xC3, 0xBC, 'z' };

static const struct among a_15[4] =
{
{ 5, s_15_0, -1, -1, 0},
{ 5, s_15_1, -1, -1, 0},
{ 7, s_15_2, -1, -1, 0},
{ 7, s_15_3, -1, -1, 0}
};

static const symbol s_16_0[3] = { 'l', 'a', 'r' };
static const symbol s_16_1[3] = { 'l', 'e', 'r' };

static const struct among a_16[2] =
{
{ 3, s_16_0, -1, -1, 0},
{ 3, s_16_1, -1, -1, 0}
};

static const symbol s_17_0[3] = { 'n', 'i', 'z' };
static const symbol s_17_1[3] = { 'n', 'u', 'z' };
static const symbol s_17_2[4] = { 'n', 0xC4, 0xB1, 'z' };
static const symbol s_17_3[4] = { 'n', 0xC3, 0xBC, 'z' };

static const struct among a_17[4] =
{
{ 3, s_17_0, -1, -1, 0},
{ 3, s_17_1, -1, -1, 0},
{ 4, s_17_2, -1, -1, 0},
{ 4, s_17_3, -1, -1, 0}
};

static const symbol s_18_0[3] = { 'd', 'i', 'r' };
static const symbol s_18_1[3] = { 't', 'i', 'r' };
static const symbol s_18_2[3] = { 'd', 'u', 'r' };
static const symbol s_18_3[3] = { 't', 'u', 'r' };
static const symbol s_18_4[4] = { 'd', 0xC4, 0xB1, 'r' };
static const symbol s_18_5[4] = { 't', 0xC4, 0xB1, 'r' };
static const symbol s_18_6[4] = { 'd', 0xC3, 0xBC, 'r' };
static const symbol s_18_7[4] = { 't', 0xC3, 0xBC, 'r' };

static const struct among a_18[8] =
{
{ 3, s_18_0, -1, -1, 0},
{ 3, s_18_1, -1, -1, 0},
{ 3, s_18_2, -1, -1, 0},
{ 3, s_18_3, -1, -1, 0},
{ 4, s_18_4, -1, -1, 0},
{ 4, s_18_5, -1, -1, 0},
{ 4, s_18_6, -1, -1, 0},
{ 4, s_18_7, -1, -1, 0}
};

static const symbol s_19_0[7] = { 'c', 'a', 's', 0xC4, 0xB1, 'n', 'a' };
static const symbol s_19_1[6] = { 'c', 'e', 's', 'i', 'n', 'e' };

static const struct among a_19[2] =
{
{ 7, s_19_0, -1, -1, 0},
{ 6, s_19_1, -1, -1, 0}
};

static const symbol s_20_0[2] = { 'd', 'i' };
static const symbol s_20_1[2] = { 't', 'i' };
static const symbol s_20_2[3] = { 'd', 'i', 'k' };
static const symbol s_20_3[3] = { 't', 'i', 'k' };
static const symbol s_20_4[3] = { 'd', 'u', 'k' };
static const symbol s_20_5[3] = { 't', 'u', 'k' };
static const symbol s_20_6[4] = { 'd', 0xC4, 0xB1, 'k' };
static const symbol s_20_7[4] = { 't', 0xC4, 0xB1, 'k' };
static const symbol s_20_8[4] = { 'd', 0xC3, 0xBC, 'k' };
static const symbol s_20_9[4] = { 't', 0xC3, 0xBC, 'k' };
static const symbol s_20_10[3] = { 'd', 'i', 'm' };
static const symbol s_20_11[3] = { 't', 'i', 'm' };
static const symbol s_20_12[3] = { 'd', 'u', 'm' };
static const symbol s_20_13[3] = { 't', 'u', 'm' };
static const symbol s_20_14[4] = { 'd', 0xC4, 0xB1, 'm' };
static const symbol s_20_15[4] = { 't', 0xC4, 0xB1, 'm' };
static const symbol s_20_16[4] = { 'd', 0xC3, 0xBC, 'm' };
static const symbol s_20_17[4] = { 't', 0xC3, 0xBC, 'm' };
static const symbol s_20_18[3] = { 'd', 'i', 'n' };
static const symbol s_20_19[3] = { 't', 'i', 'n' };
static const symbol s_20_20[3] = { 'd', 'u', 'n' };
static const symbol s_20_21[3] = { 't', 'u', 'n' };
static const symbol s_20_22[4] = { 'd', 0xC4, 0xB1, 'n' };
static const symbol s_20_23[4] = { 't', 0xC4, 0xB1, 'n' };
static const symbol s_20_24[4] = { 'd', 0xC3, 0xBC, 'n' };
static const symbol s_20_25[4] = { 't', 0xC3, 0xBC, 'n' };
static const symbol s_20_26[2] = { 'd', 'u' };
static const symbol s_20_27[2] = { 't', 'u' };
static const symbol s_20_28[3] = { 'd', 0xC4, 0xB1 };
static const symbol s_20_29[3] = { 't', 0xC4, 0xB1 };
static const symbol s_20_30[3] = { 'd', 0xC3, 0xBC };
static const symbol s_20_31[3] = { 't', 0xC3, 0xBC };

static const struct among a_20[32] =
{
{ 2, s_20_0, -1, -1, 0},
{ 2, s_20_1, -1, -1, 0},
{ 3, s_20_2, -1, -1, 0},
{ 3, s_20_3, -1, -1, 0},
{ 3, s_20_4, -1, -1, 0},
{ 3, s_20_5, -1, -1, 0},
{ 4, s_20_6, -1, -1, 0},
{ 4, s_20_7, -1, -1, 0},
{ 4, s_20_8, -1, -1, 0},
{ 4, s_20_9, -1, -1, 0},
{ 3, s_20_10, -1, -1, 0},
{ 3, s_20_11, -1, -1, 0},
{ 3, s_20_12, -1, -1, 0},
{ 3, s_20_13, -1, -1, 0},
{ 4, s_20_14, -1, -1, 0},
{ 4, s_20_15, -1, -1, 0},
{ 4, s_20_16, -1, -1, 0},
{ 4, s_20_17, -1, -1, 0},
{ 3, s_20_18, -1, -1, 0},
{ 3, s_20_19, -1, -1, 0},
{ 3, s_20_20, -1, -1, 0},
{ 3, s_20_21, -1, -1, 0},
{ 4, s_20_22, -1, -1, 0},
{ 4, s_20_23, -1, -1, 0},
{ 4, s_20_24, -1, -1, 0},
{ 4, s_20_25, -1, -1, 0},
{ 2, s_20_26, -1, -1, 0},
{ 2, s_20_27, -1, -1, 0},
{ 3, s_20_28, -1, -1, 0},
{ 3, s_20_29, -1, -1, 0},
{ 3, s_20_30, -1, -1, 0},
{ 3, s_20_31, -1, -1, 0}
};

static const symbol s_21_0[2] = { 's', 'a' };
static const symbol s_21_1[2] = { 's', 'e' };
static const symbol s_21_2[3] = { 's', 'a', 'k' };
static const symbol s_21_3[3] = { 's', 'e', 'k' };
static const symbol s_21_4[3] = { 's', 'a', 'm' };
static const symbol s_21_5[3] = { 's', 'e', 'm' };
static const symbol s_21_6[3] = { 's', 'a', 'n' };
static const symbol s_21_7[3] = { 's', 'e', 'n' };

static const struct among a_21[8] =
{
{ 2, s_21_0, -1, -1, 0},
{ 2, s_21_1, -1, -1, 0},
{ 3, s_21_2, -1, -1, 0},
{ 3, s_21_3, -1, -1, 0},
{ 3, s_21_4, -1, -1, 0},
{ 3, s_21_5, -1, -1, 0},
{ 3, s_21_6, -1, -1, 0},
{ 3, s_21_7, -1, -1, 0}
};

static const symbol s_22_0[4] = { 'm', 'i', 0xC5, 0x9F };
static const symbol s_22_1[4] = { 'm', 'u', 0xC5, 0x9F };
static const symbol s_22_2[5] = { 'm', 0xC4, 0xB1, 0xC5, 0x9F };
static const symbol s_22_3[5] = { 'm', 0xC3, 0xBC, 0xC5, 0x9F };

static const struct among a_22[4] =
{
{ 4, s_22_0, -1, -1, 0},
{ 4, s_22_1, -1, -1, 0},
{ 5, s_22_2, -1, -1, 0},
{ 5, s_22_3, -1, -1, 0}
};

static const symbol s_23_0[1] = { 'b' };
static const symbol s_23_1[1] = { 'c' };
static const symbol s_23_2[1] = { 'd' };
static const symbol s_23_3[2] = { 0xC4, 0x9F };

static const struct among a_23[4] =
{
{ 1, s_23_0, -1, 1, 0},
{ 1, s_23_1, -1, 2, 0},
{ 1, s_23_2, -1, 3, 0},
{ 2, s_23_3, -1, 4, 0}
};

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 };

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 };

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 };

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 };

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 };

static const unsigned char g_vowel4[] = { 17 };

static const unsigned char g_vowel5[] = { 65 };

static const unsigned char g_vowel6[] = { 65 };

static const symbol s_0[] = { 0xC4, 0xB1 };
static const symbol s_1[] = { 0xC3, 0xB6 };
static const symbol s_2[] = { 0xC3, 0xBC };
static const symbol s_3[] = { 'k', 'i' };
static const symbol s_4[] = { 'k', 'e', 'n' };
static const symbol s_5[] = { 'p' };
static const symbol s_6[] = { 0xC3, 0xA7 };
static const symbol s_7[] = { 't' };
static const symbol s_8[] = { 'k' };
static const symbol s_9[] = { 0xC4, 0xB1 };
static const symbol s_10[] = { 0xC4, 0xB1 };
static const symbol s_11[] = { 'i' };
static const symbol s_12[] = { 'u' };
static const symbol s_13[] = { 0xC3, 0xB6 };
static const symbol s_14[] = { 0xC3, 0xBC };
static const symbol s_15[] = { 0xC3, 0xBC };
static const symbol s_16[] = { 'a', 'd' };
static const symbol s_17[] = { 's', 'o', 'y' };

static int r_check_vowel_harmony(struct SN_env * z) {
    {   int m_test1 = z->l - z->c;

        if (out_grouping_b_U(z, g_vowel, 97, 305, 1) < 0) return 0;
        {   int m2 = z->l - z->c; (void)m2;
            if (z->c <= z->lb || z->p[z->c - 1] != 'a') goto lab1;
            z->c--;

            if (out_grouping_b_U(z, g_vowel1, 97, 305, 1) < 0) goto lab1;
            goto lab0;
        lab1:
            z->c = z->l - m2;
            if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab2;
            z->c--;

            if (out_grouping_b_U(z, g_vowel2, 101, 252, 1) < 0) goto lab2;
            goto lab0;
        lab2:
            z->c = z->l - m2;
            if (!(eq_s_b(z, 2, s_0))) goto lab3;

            if (out_grouping_b_U(z, g_vowel3, 97, 305, 1) < 0) goto lab3;
            goto lab0;
        lab3:
            z->c = z->l - m2;
            if (z->c <= z->lb || z->p[z->c - 1] != 'i') goto lab4;
            z->c--;

            if (out_grouping_b_U(z, g_vowel4, 101, 105, 1) < 0) goto lab4;
            goto lab0;
        lab4:
            z->c = z->l - m2;
            if (z->c <= z->lb || z->p[z->c - 1] != 'o') goto lab5;
            z->c--;

            if (out_grouping_b_U(z, g_vowel5, 111, 117, 1) < 0) goto lab5;
            goto lab0;
        lab5:
            z->c = z->l - m2;
            if (!(eq_s_b(z, 2, s_1))) goto lab6;

            if (out_grouping_b_U(z, g_vowel6, 246, 252, 1) < 0) goto lab6;
            goto lab0;
        lab6:
            z->c = z->l - m2;
            if (z->c <= z->lb || z->p[z->c - 1] != 'u') goto lab7;
            z->c--;

            if (out_grouping_b_U(z, g_vowel5, 111, 117, 1) < 0) goto lab7;
            goto lab0;
        lab7:
            z->c = z->l - m2;
            if (!(eq_s_b(z, 2, s_2))) return 0;

            if (out_grouping_b_U(z, g_vowel6, 246, 252, 1) < 0) return 0;
        }
    lab0:
        z->c = z->l - m_test1;
    }
    return 1;
}

static int r_mark_suffix_with_optional_n_consonant(struct SN_env * z) {
    {   int m1 = z->l - z->c; (void)m1;
        if (z->c <= z->lb || z->p[z->c - 1] != 'n') goto lab1;
        z->c--;
        {   int m_test2 = z->l - z->c;
            if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) goto lab1;
            z->c = z->l - m_test2;
        }
        goto lab0;
    lab1:
        z->c = z->l - m1;
        {   int m3 = z->l - z->c; (void)m3;
            {   int m_test4 = z->l - z->c;
                if (z->c <= z->lb || z->p[z->c - 1] != 'n') goto lab2;
                z->c--;
                z->c = z->l - m_test4;
            }
            return 0;
        lab2:
            z->c = z->l - m3;
        }
        {   int m_test5 = z->l - z->c;
            {   int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
                if (ret < 0) return 0;
                z->c = ret;
            }
            if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) return 0;
            z->c = z->l - m_test5;
        }
    }
lab0:
    return 1;
}

static int r_mark_suffix_with_optional_s_consonant(struct SN_env * z) {
    {   int m1 = z->l - z->c; (void)m1;
        if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab1;
        z->c--;
        {   int m_test2 = z->l - z->c;
            if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) goto lab1;
            z->c = z->l - m_test2;
        }
        goto lab0;
    lab1:
        z->c = z->l - m1;
        {   int m3 = z->l - z->c; (void)m3;
            {   int m_test4 = z->l - z->c;
                if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab2;
                z->c--;
                z->c = z->l - m_test4;
            }
            return 0;
        lab2:
            z->c = z->l - m3;
        }
        {   int m_test5 = z->l - z->c;
            {   int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
                if (ret < 0) return 0;
                z->c = ret;
            }
            if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) return 0;
            z->c = z->l - m_test5;
        }
    }
lab0:
    return 1;
}

static int r_mark_suffix_with_optional_y_consonant(struct SN_env * z) {
    {   int m1 = z->l - z->c; (void)m1;
        if (z->c <= z->lb || z->p[z->c - 1] != 'y') goto lab1;
        z->c--;
        {   int m_test2 = z->l - z->c;
            if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) goto lab1;
            z->c = z->l - m_test2;
        }
        goto lab0;
    lab1:
        z->c = z->l - m1;
        {   int m3 = z->l - z->c; (void)m3;
            {   int m_test4 = z->l - z->c;
                if (z->c <= z->lb || z->p[z->c - 1] != 'y') goto lab2;
                z->c--;
                z->c = z->l - m_test4;
            }
            return 0;
        lab2:
            z->c = z->l - m3;
        }
        {   int m_test5 = z->l - z->c;
            {   int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
                if (ret < 0) return 0;
                z->c = ret;
            }
            if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) return 0;
            z->c = z->l - m_test5;
        }
    }
lab0:
    return 1;
}

static int r_mark_suffix_with_optional_U_vowel(struct SN_env * z) {
    {   int m1 = z->l - z->c; (void)m1;
        if (in_grouping_b_U(z, g_U, 105, 305, 0)) goto lab1;
        {   int m_test2 = z->l - z->c;
            if (out_grouping_b_U(z, g_vowel, 97, 305, 0)) goto lab1;
            z->c = z->l - m_test2;
        }
        goto lab0;
    lab1:
        z->c = z->l - m1;
        {   int m3 = z->l - z->c; (void)m3;
            {   int m_test4 = z->l - z->c;
                if (in_grouping_b_U(z, g_U, 105, 305, 0)) goto lab2;
                z->c = z->l - m_test4;
            }
            return 0;
        lab2:
            z->c = z->l - m3;
        }
        {   int m_test5 = z->l - z->c;
            {   int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
                if (ret < 0) return 0;
                z->c = ret;
            }
            if (out_grouping_b_U(z, g_vowel, 97, 305, 0)) return 0;
            z->c = z->l - m_test5;
        }
    }
lab0:
    return 1;
}

static int r_mark_possessives(struct SN_env * z) {
    if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((67133440 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
    if (!find_among_b(z, a_0, 10)) return 0;
    {   int ret = r_mark_suffix_with_optional_U_vowel(z);
        if (ret <= 0) return ret;
    }
    return 1;
}

static int r_mark_sU(struct SN_env * z) {
    {   int ret = r_check_vowel_harmony(z);
        if (ret <= 0) return ret;
    }
    if (in_grouping_b_U(z, g_U, 105, 305, 0)) return 0;
    {   int ret = r_mark_suffix_with_optional_s_consonant(z);
        if (ret <= 0) return ret;
    }
    return 1;
}

static int r_mark_lArI(struct SN_env * z) {
    if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 105 && z->p[z->c - 1] != 177)) return 0;
    if (!find_among_b(z, a_1, 2)) return 0;
    return 1;
}

static int r_mark_yU(struct SN_env * z) {
    {   int ret = r_check_vowel_harmony(z);
        if (ret <= 0) return ret;
    }
    if (in_grouping_b_U(z, g_U, 105, 305, 0)) return 0;
    {   int ret = r_mark_suffix_with_optional_y_consonant(z);
        if (ret <= 0) return ret;
    }
    return 1;
}

static int r_mark_nU(struct SN_env * z) {
    {   int ret = r_check_vowel_harmony(z);
        if (ret <= 0) return ret;
    }
    if (!find_among_b(z, a_2, 4)) return 0;
    return 1;
}

static int r_mark_nUn(struct SN_env * z) {
    {   int ret = r_check_vowel_harmony(z);
        if (ret <= 0) return ret;
    }
    if (z->c - 1 <= z->lb || z->p[z->c - 1] != 110) return 0;
    if (!find_among_b(z, a_3, 4)) return 0;
    {   int ret = r_mark_suffix_with_optional_n_consonant(z);
        if (ret <= 0) return ret;
    }
    return 1;
}

static int r_mark_yA(struct SN_env * z) {
    {   int ret = r_check_vowel_harmony(z);
        if (ret <= 0) return ret;
    }
    if (z->c <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0;
    if (!find_among_b(z, a_4, 2)) return 0;
    {   int ret = r_mark_suffix_with_optional_y_consonant(z);
        if (ret <= 0) return ret;
    }
    return 1;
}

static int r_mark_nA(struct SN_env * z) {
    {   int ret = r_check_vowel_harmony(z);
        if (ret <= 0) return ret;
    }
    if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0;
    if (!find_among_b(z, a_5, 2)) return 0;
    return 1;
}

static int r_mark_DA(struct SN_env * z) {
    {   int ret = r_check_vowel_harmony(z);
        if (ret <= 0) return ret;
    }
    if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0;
    if (!find_among_b(z, a_6, 4)) return 0;
    return 1;
}

static int r_mark_ndA(struct SN_env * z) {
    {   int ret = r_check_vowel_harmony(z);
        if (ret <= 0) return ret;
    }
    if (z->c - 2 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0;
    if (!find_among_b(z, a_7, 2)) return 0;
    return 1;
}

static int r_mark_DAn(struct SN_env * z) {
    {   int ret = r_check_vowel_harmony(z);
        if (ret <= 0) return ret;
    }
    if (z->c - 2 <= z->lb || z->p[z->c - 1] != 110) return 0;
    if (!find_among_b(z, a_8, 4)) return 0;
    return 1;
}

static int r_mark_ndAn(struct SN_env * z) {
    {   int ret = r_check_vowel_harmony(z);
        if (ret <= 0) return ret;
    }
    if (z->c - 3 <= z->lb || z->p[z->c - 1] != 110) return 0;
    if (!find_among_b(z, a_9, 2)) return 0;
    return 1;
}

static int r_mark_ylA(struct SN_env * z) {
    {   int ret = r_check_vowel_harmony(z);
        if (ret <= 0) return ret;
    }
    if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0;
    if (!find_among_b(z, a_10, 2)) return 0;
    {   int ret = r_mark_suffix_with_optional_y_consonant(z);
        if (ret <= 0) return ret;
    }
    return 1;
}

static int r_mark_ki(struct SN_env * z) {
    if (!(eq_s_b(z, 2, s_3))) return 0;
    return 1;
}

static int r_mark_ncA(struct SN_env * z) {
    {   int ret = r_check_vowel_harmony(z);
        if (ret <= 0) return ret;
    }
    if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0;
    if (!find_among_b(z, a_11, 2)) return 0;
    {   int ret = r_mark_suffix_with_optional_n_consonant(z);
        if (ret <= 0) return ret;
    }
    return 1;
}

static int r_mark_yUm(struct SN_env * z) {
    {   int ret = r_check_vowel_harmony(z);
        if (ret <= 0) return ret;
    }
    if (z->c - 1 <= z->lb || z->p[z->c - 1] != 109) return 0;
    if (!find_among_b(z, a_12, 4)) return 0;
    {   int ret = r_mark_suffix_with_optional_y_consonant(z);
        if (ret <= 0) return ret;
    }
    return 1;
}

static int r_mark_sUn(struct SN_env * z) {
    {   int ret = r_check_vowel_harmony(z);
        if (ret <= 0) return ret;
    }
    if (z->c - 2 <= z->lb || z->p[z->c - 1] != 110) return 0;
    if (!find_among_b(z, a_13, 4)) return 0;
    return 1;
}

static int r_mark_yUz(struct SN_env * z) {
    {   int ret = r_check_vowel_harmony(z);
        if (ret <= 0) return ret;
    }
    if (z->c - 1 <= z->lb || z->p[z->c - 1] != 122) return 0;
    if (!find_among_b(z, a_14, 4)) return 0;
    {   int ret = r_mark_suffix_with_optional_y_consonant(z);
        if (ret <= 0) return ret;
    }
    return 1;
}

static int r_mark_sUnUz(struct SN_env * z) {
    if (z->c - 4 <= z->lb || z->p[z->c - 1] != 122) return 0;
    if (!find_among_b(z, a_15, 4)) return 0;
    return 1;
}

static int r_mark_lAr(struct SN_env * z) {
    {   int ret = r_check_vowel_harmony(z);
        if (ret <= 0) return ret;
    }
    if (z->c - 2 <= z->lb || z->p[z->c - 1] != 114) return 0;
    if (!find_among_b(z, a_16, 2)) return 0;
    return 1;
}

static int r_mark_nUz(struct SN_env * z) {
    {   int ret = r_check_vowel_harmony(z);
        if (ret <= 0) return ret;
    }
    if (z->c - 2 <= z->lb || z->p[z->c - 1] != 122) return 0;
    if (!find_among_b(z, a_17, 4)) return 0;
    return 1;
}

static int r_mark_DUr(struct SN_env * z) {
    {   int ret = r_check_vowel_harmony(z);
        if (ret <= 0) return ret;
    }
    if (z->c - 2 <= z->lb || z->p[z->c - 1] != 114) return 0;
    if (!find_among_b(z, a_18, 8)) return 0;
    return 1;
}

static int r_mark_cAsInA(struct SN_env * z) {
    if (z->c - 5 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0;
    if (!find_among_b(z, a_19, 2)) return 0;
    return 1;
}

static int r_mark_yDU(struct SN_env * z) {
    {   int ret = r_check_vowel_harmony(z);
        if (ret <= 0) return ret;
    }
    if (!find_among_b(z, a_20, 32)) return 0;
    {   int ret = r_mark_suffix_with_optional_y_consonant(z);
        if (ret <= 0) return ret;
    }
    return 1;
}

static int r_mark_ysA(struct SN_env * z) {
    if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((26658 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
    if (!find_among_b(z, a_21, 8)) return 0;
    {   int ret = r_mark_suffix_with_optional_y_consonant(z);
        if (ret <= 0) return ret;
    }
    return 1;
}

static int r_mark_ymUs_(struct SN_env * z) {
    {   int ret = r_check_vowel_harmony(z);
        if (ret <= 0) return ret;
    }
    if (z->c - 3 <= z->lb || z->p[z->c - 1] != 159) return 0;
    if (!find_among_b(z, a_22, 4)) return 0;
    {   int ret = r_mark_suffix_with_optional_y_consonant(z);
        if (ret <= 0) return ret;
    }
    return 1;
}

static int r_mark_yken(struct SN_env * z) {
    if (!(eq_s_b(z, 3, s_4))) return 0;
    {   int ret = r_mark_suffix_with_optional_y_consonant(z);
        if (ret <= 0) return ret;
    }
    return 1;
}

static int r_stem_nominal_verb_suffixes(struct SN_env * z) {
    z->ket = z->c;
    z->I[0] = 1;
    {   int m1 = z->l - z->c; (void)m1;
        {   int m2 = z->l - z->c; (void)m2;
            {   int ret = r_mark_ymUs_(z);
                if (ret == 0) goto lab3;
                if (ret < 0) return ret;
            }
            goto lab2;
        lab3:
            z->c = z->l - m2;
            {   int ret = r_mark_yDU(z);
                if (ret == 0) goto lab4;
                if (ret < 0) return ret;
            }
            goto lab2;
        lab4:
            z->c = z->l - m2;
            {   int ret = r_mark_ysA(z);
                if (ret == 0) goto lab5;
                if (ret < 0) return ret;
            }
            goto lab2;
        lab5:
            z->c = z->l - m2;
            {   int ret = r_mark_yken(z);
                if (ret == 0) goto lab1;
                if (ret < 0) return ret;
            }
        }
    lab2:
        goto lab0;
    lab1:
        z->c = z->l - m1;
        {   int ret = r_mark_cAsInA(z);
            if (ret == 0) goto lab6;
            if (ret < 0) return ret;
        }
        {   int m3 = z->l - z->c; (void)m3;
            {   int ret = r_mark_sUnUz(z);
                if (ret == 0) goto lab8;
                if (ret < 0) return ret;
            }
            goto lab7;
        lab8:
            z->c = z->l - m3;
            {   int ret = r_mark_lAr(z);
                if (ret == 0) goto lab9;
                if (ret < 0) return ret;
            }
            goto lab7;
        lab9:
            z->c = z->l - m3;
            {   int ret = r_mark_yUm(z);
                if (ret == 0) goto lab10;
                if (ret < 0) return ret;
            }
            goto lab7;
        lab10:
            z->c = z->l - m3;
            {   int ret = r_mark_sUn(z);
                if (ret == 0) goto lab11;
                if (ret < 0) return ret;
            }
            goto lab7;
        lab11:
            z->c = z->l - m3;
            {   int ret = r_mark_yUz(z);
                if (ret == 0) goto lab12;
                if (ret < 0) return ret;
            }
            goto lab7;
        lab12:
            z->c = z->l - m3;
        }
    lab7:
        {   int ret = r_mark_ymUs_(z);
            if (ret == 0) goto lab6;
            if (ret < 0) return ret;
        }
        goto lab0;
    lab6:
        z->c = z->l - m1;
        {   int ret = r_mark_lAr(z);
            if (ret == 0) goto lab13;
            if (ret < 0) return ret;
        }
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0) return ret;
        }
        {   int m4 = z->l - z->c; (void)m4;
            z->ket = z->c;
            {   int m5 = z->l - z->c; (void)m5;
                {   int ret = r_mark_DUr(z);
                    if (ret == 0) goto lab16;
                    if (ret < 0) return ret;
                }
                goto lab15;
            lab16:
                z->c = z->l - m5;
                {   int ret = r_mark_yDU(z);
                    if (ret == 0) goto lab17;
                    if (ret < 0) return ret;
                }
                goto lab15;
            lab17:
                z->c = z->l - m5;
                {   int ret = r_mark_ysA(z);
                    if (ret == 0) goto lab18;
                    if (ret < 0) return ret;
                }
                goto lab15;
            lab18:
                z->c = z->l - m5;
                {   int ret = r_mark_ymUs_(z);
                    if (ret == 0) { z->c = z->l - m4; goto lab14; }
                    if (ret < 0) return ret;
                }
            }
        lab15:
        lab14:
            ;
        }
        z->I[0] = 0;
        goto lab0;
    lab13:
        z->c = z->l - m1;
        {   int ret = r_mark_nUz(z);
            if (ret == 0) goto lab19;
            if (ret < 0) return ret;
        }
        {   int m6 = z->l - z->c; (void)m6;
            {   int ret = r_mark_yDU(z);
                if (ret == 0) goto lab21;
                if (ret < 0) return ret;
            }
            goto lab20;
        lab21:
            z->c = z->l - m6;
            {   int ret = r_mark_ysA(z);
                if (ret == 0) goto lab19;
                if (ret < 0) return ret;
            }
        }
    lab20:
        goto lab0;
    lab19:
        z->c = z->l - m1;
        {   int m7 = z->l - z->c; (void)m7;
            {   int ret = r_mark_sUnUz(z);
                if (ret == 0) goto lab24;
                if (ret < 0) return ret;
            }
            goto lab23;
        lab24:
            z->c = z->l - m7;
            {   int ret = r_mark_yUz(z);
                if (ret == 0) goto lab25;
                if (ret < 0) return ret;
            }
            goto lab23;
        lab25:
            z->c = z->l - m7;
            {   int ret = r_mark_sUn(z);
                if (ret == 0) goto lab26;
                if (ret < 0) return ret;
            }
            goto lab23;
        lab26:
            z->c = z->l - m7;
            {   int ret = r_mark_yUm(z);
                if (ret == 0) goto lab22;
                if (ret < 0) return ret;
            }
        }
    lab23:
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0) return ret;
        }
        {   int m8 = z->l - z->c; (void)m8;
            z->ket = z->c;
            {   int ret = r_mark_ymUs_(z);
                if (ret == 0) { z->c = z->l - m8; goto lab27; }
                if (ret < 0) return ret;
            }
        lab27:
            ;
        }
        goto lab0;
    lab22:
        z->c = z->l - m1;
        {   int ret = r_mark_DUr(z);
            if (ret <= 0) return ret;
        }
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0) return ret;
        }
        {   int m9 = z->l - z->c; (void)m9;
            z->ket = z->c;
            {   int m10 = z->l - z->c; (void)m10;
                {   int ret = r_mark_sUnUz(z);
                    if (ret == 0) goto lab30;
                    if (ret < 0) return ret;
                }
                goto lab29;
            lab30:
                z->c = z->l - m10;
                {   int ret = r_mark_lAr(z);
                    if (ret == 0) goto lab31;
                    if (ret < 0) return ret;
                }
                goto lab29;
            lab31:
                z->c = z->l - m10;
                {   int ret = r_mark_yUm(z);
                    if (ret == 0) goto lab32;
                    if (ret < 0) return ret;
                }
                goto lab29;
            lab32:
                z->c = z->l - m10;
                {   int ret = r_mark_sUn(z);
                    if (ret == 0) goto lab33;
                    if (ret < 0) return ret;
                }
                goto lab29;
            lab33:
                z->c = z->l - m10;
                {   int ret = r_mark_yUz(z);
                    if (ret == 0) goto lab34;
                    if (ret < 0) return ret;
                }
                goto lab29;
            lab34:
                z->c = z->l - m10;
            }
        lab29:
            {   int ret = r_mark_ymUs_(z);
                if (ret == 0) { z->c = z->l - m9; goto lab28; }
                if (ret < 0) return ret;
            }
        lab28:
            ;
        }
    }
lab0:
    z->bra = z->c;
    {   int ret = slice_del(z);
        if (ret < 0) return ret;
    }
    return 1;
}

static int r_stem_suffix_chain_before_ki(struct SN_env * z) {
    z->ket = z->c;
    {   int ret = r_mark_ki(z);
        if (ret <= 0) return ret;
    }
    {   int m1 = z->l - z->c; (void)m1;
        {   int ret = r_mark_DA(z);
            if (ret == 0) goto lab1;
            if (ret < 0) return ret;
        }
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0) return ret;
        }
        {   int m2 = z->l - z->c; (void)m2;
            z->ket = z->c;
            {   int m3 = z->l - z->c; (void)m3;
                {   int ret = r_mark_lAr(z);
                    if (ret == 0) goto lab4;
                    if (ret < 0) return ret;
                }
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0) return ret;
                }
                {   int m4 = z->l - z->c; (void)m4;
                    {   int ret = r_stem_suffix_chain_before_ki(z);
                        if (ret == 0) { z->c = z->l - m4; goto lab5; }
                        if (ret < 0) return ret;
                    }
                lab5:
                    ;
                }
                goto lab3;
            lab4:
                z->c = z->l - m3;
                {   int ret = r_mark_possessives(z);
                    if (ret == 0) { z->c = z->l - m2; goto lab2; }
                    if (ret < 0) return ret;
                }
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0) return ret;
                }
                {   int m5 = z->l - z->c; (void)m5;
                    z->ket = z->c;
                    {   int ret = r_mark_lAr(z);
                        if (ret == 0) { z->c = z->l - m5; goto lab6; }
                        if (ret < 0) return ret;
                    }
                    z->bra = z->c;
                    {   int ret = slice_del(z);
                        if (ret < 0) return ret;
                    }
                    {   int ret = r_stem_suffix_chain_before_ki(z);
                        if (ret == 0) { z->c = z->l - m5; goto lab6; }
                        if (ret < 0) return ret;
                    }
                lab6:
                    ;
                }
            }
        lab3:
        lab2:
            ;
        }
        goto lab0;
    lab1:
        z->c = z->l - m1;
        {   int ret = r_mark_nUn(z);
            if (ret == 0) goto lab7;
            if (ret < 0) return ret;
        }
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0) return ret;
        }
        {   int m6 = z->l - z->c; (void)m6;
            z->ket = z->c;
            {   int m7 = z->l - z->c; (void)m7;
                {   int ret = r_mark_lArI(z);
                    if (ret == 0) goto lab10;
                    if (ret < 0) return ret;
                }
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0) return ret;
                }
                goto lab9;
            lab10:
                z->c = z->l - m7;
                z->ket = z->c;
                {   int m8 = z->l - z->c; (void)m8;
                    {   int ret = r_mark_possessives(z);
                        if (ret == 0) goto lab13;
                        if (ret < 0) return ret;
                    }
                    goto lab12;
                lab13:
                    z->c = z->l - m8;
                    {   int ret = r_mark_sU(z);
                        if (ret == 0) goto lab11;
                        if (ret < 0) return ret;
                    }
                }
            lab12:
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0) return ret;
                }
                {   int m9 = z->l - z->c; (void)m9;
                    z->ket = z->c;
                    {   int ret = r_mark_lAr(z);
                        if (ret == 0) { z->c = z->l - m9; goto lab14; }
                        if (ret < 0) return ret;
                    }
                    z->bra = z->c;
                    {   int ret = slice_del(z);
                        if (ret < 0) return ret;
                    }
                    {   int ret = r_stem_suffix_chain_before_ki(z);
                        if (ret == 0) { z->c = z->l - m9; goto lab14; }
                        if (ret < 0) return ret;
                    }
                lab14:
                    ;
                }
                goto lab9;
            lab11:
                z->c = z->l - m7;
                {   int ret = r_stem_suffix_chain_before_ki(z);
                    if (ret == 0) { z->c = z->l - m6; goto lab8; }
                    if (ret < 0) return ret;
                }
            }
        lab9:
        lab8:
            ;
        }
        goto lab0;
    lab7:
        z->c = z->l - m1;
        {   int ret = r_mark_ndA(z);
            if (ret <= 0) return ret;
        }
        {   int m10 = z->l - z->c; (void)m10;
            {   int ret = r_mark_lArI(z);
                if (ret == 0) goto lab16;
                if (ret < 0) return ret;
            }
            z->bra = z->c;
            {   int ret = slice_del(z);
                if (ret < 0) return ret;
            }
            goto lab15;
        lab16:
            z->c = z->l - m10;
            {   int ret = r_mark_sU(z);
                if (ret == 0) goto lab17;
                if (ret < 0) return ret;
            }
            z->bra = z->c;
            {   int ret = slice_del(z);
                if (ret < 0) return ret;
            }
            {   int m11 = z->l - z->c; (void)m11;
                z->ket = z->c;
                {   int ret = r_mark_lAr(z);
                    if (ret == 0) { z->c = z->l - m11; goto lab18; }
                    if (ret < 0) return ret;
                }
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0) return ret;
                }
                {   int ret = r_stem_suffix_chain_before_ki(z);
                    if (ret == 0) { z->c = z->l - m11; goto lab18; }
                    if (ret < 0) return ret;
                }
            lab18:
                ;
            }
            goto lab15;
        lab17:
            z->c = z->l - m10;
            {   int ret = r_stem_suffix_chain_before_ki(z);
                if (ret <= 0) return ret;
            }
        }
    lab15:
        ;
    }
lab0:
    return 1;
}

static int r_stem_noun_suffixes(struct SN_env * z) {
    {   int m1 = z->l - z->c; (void)m1;
        z->ket = z->c;
        {   int ret = r_mark_lAr(z);
            if (ret == 0) goto lab1;
            if (ret < 0) return ret;
        }
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0) return ret;
        }
        {   int m2 = z->l - z->c; (void)m2;
            {   int ret = r_stem_suffix_chain_before_ki(z);
                if (ret == 0) { z->c = z->l - m2; goto lab2; }
                if (ret < 0) return ret;
            }
        lab2:
            ;
        }
        goto lab0;
    lab1:
        z->c = z->l - m1;
        z->ket = z->c;
        {   int ret = r_mark_ncA(z);
            if (ret == 0) goto lab3;
            if (ret < 0) return ret;
        }
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0) return ret;
        }
        {   int m3 = z->l - z->c; (void)m3;
            {   int m4 = z->l - z->c; (void)m4;
                z->ket = z->c;
                {   int ret = r_mark_lArI(z);
                    if (ret == 0) goto lab6;
                    if (ret < 0) return ret;
                }
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0) return ret;
                }
                goto lab5;
            lab6:
                z->c = z->l - m4;
                z->ket = z->c;
                {   int m5 = z->l - z->c; (void)m5;
                    {   int ret = r_mark_possessives(z);
                        if (ret == 0) goto lab9;
                        if (ret < 0) return ret;
                    }
                    goto lab8;
                lab9:
                    z->c = z->l - m5;
                    {   int ret = r_mark_sU(z);
                        if (ret == 0) goto lab7;
                        if (ret < 0) return ret;
                    }
                }
            lab8:
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0) return ret;
                }
                {   int m6 = z->l - z->c; (void)m6;
                    z->ket = z->c;
                    {   int ret = r_mark_lAr(z);
                        if (ret == 0) { z->c = z->l - m6; goto lab10; }
                        if (ret < 0) return ret;
                    }
                    z->bra = z->c;
                    {   int ret = slice_del(z);
                        if (ret < 0) return ret;
                    }
                    {   int ret = r_stem_suffix_chain_before_ki(z);
                        if (ret == 0) { z->c = z->l - m6; goto lab10; }
                        if (ret < 0) return ret;
                    }
                lab10:
                    ;
                }
                goto lab5;
            lab7:
                z->c = z->l - m4;
                z->ket = z->c;
                {   int ret = r_mark_lAr(z);
                    if (ret == 0) { z->c = z->l - m3; goto lab4; }
                    if (ret < 0) return ret;
                }
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0) return ret;
                }
                {   int ret = r_stem_suffix_chain_before_ki(z);
                    if (ret == 0) { z->c = z->l - m3; goto lab4; }
                    if (ret < 0) return ret;
                }
            }
        lab5:
        lab4:
            ;
        }
        goto lab0;
    lab3:
        z->c = z->l - m1;
        z->ket = z->c;
        {   int m7 = z->l - z->c; (void)m7;
            {   int ret = r_mark_ndA(z);
                if (ret == 0) goto lab13;
                if (ret < 0) return ret;
            }
            goto lab12;
        lab13:
            z->c = z->l - m7;
            {   int ret = r_mark_nA(z);
                if (ret == 0) goto lab11;
                if (ret < 0) return ret;
            }
        }
    lab12:
        {   int m8 = z->l - z->c; (void)m8;
            {   int ret = r_mark_lArI(z);
                if (ret == 0) goto lab15;
                if (ret < 0) return ret;
            }
            z->bra = z->c;
            {   int ret = slice_del(z);
                if (ret < 0) return ret;
            }
            goto lab14;
        lab15:
            z->c = z->l - m8;
            {   int ret = r_mark_sU(z);
                if (ret == 0) goto lab16;
                if (ret < 0) return ret;
            }
            z->bra = z->c;
            {   int ret = slice_del(z);
                if (ret < 0) return ret;
            }
            {   int m9 = z->l - z->c; (void)m9;
                z->ket = z->c;
                {   int ret = r_mark_lAr(z);
                    if (ret == 0) { z->c = z->l - m9; goto lab17; }
                    if (ret < 0) return ret;
                }
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0) return ret;
                }
                {   int ret = r_stem_suffix_chain_before_ki(z);
                    if (ret == 0) { z->c = z->l - m9; goto lab17; }
                    if (ret < 0) return ret;
                }
            lab17:
                ;
            }
            goto lab14;
        lab16:
            z->c = z->l - m8;
            {   int ret = r_stem_suffix_chain_before_ki(z);
                if (ret == 0) goto lab11;
                if (ret < 0) return ret;
            }
        }
    lab14:
        goto lab0;
    lab11:
        z->c = z->l - m1;
        z->ket = z->c;
        {   int m10 = z->l - z->c; (void)m10;
            {   int ret = r_mark_ndAn(z);
                if (ret == 0) goto lab20;
                if (ret < 0) return ret;
            }
            goto lab19;
        lab20:
            z->c = z->l - m10;
            {   int ret = r_mark_nU(z);
                if (ret == 0) goto lab18;
                if (ret < 0) return ret;
            }
        }
    lab19:
        {   int m11 = z->l - z->c; (void)m11;
            {   int ret = r_mark_sU(z);
                if (ret == 0) goto lab22;
                if (ret < 0) return ret;
            }
            z->bra = z->c;
            {   int ret = slice_del(z);
                if (ret < 0) return ret;
            }
            {   int m12 = z->l - z->c; (void)m12;
                z->ket = z->c;
                {   int ret = r_mark_lAr(z);
                    if (ret == 0) { z->c = z->l - m12; goto lab23; }
                    if (ret < 0) return ret;
                }
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0) return ret;
                }
                {   int ret = r_stem_suffix_chain_before_ki(z);
                    if (ret == 0) { z->c = z->l - m12; goto lab23; }
                    if (ret < 0) return ret;
                }
            lab23:
                ;
            }
            goto lab21;
        lab22:
            z->c = z->l - m11;
            {   int ret = r_mark_lArI(z);
                if (ret == 0) goto lab18;
                if (ret < 0) return ret;
            }
        }
    lab21:
        goto lab0;
    lab18:
        z->c = z->l - m1;
        z->ket = z->c;
        {   int ret = r_mark_DAn(z);
            if (ret == 0) goto lab24;
            if (ret < 0) return ret;
        }
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0) return ret;
        }
        {   int m13 = z->l - z->c; (void)m13;
            z->ket = z->c;
            {   int m14 = z->l - z->c; (void)m14;
                {   int ret = r_mark_possessives(z);
                    if (ret == 0) goto lab27;
                    if (ret < 0) return ret;
                }
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0) return ret;
                }
                {   int m15 = z->l - z->c; (void)m15;
                    z->ket = z->c;
                    {   int ret = r_mark_lAr(z);
                        if (ret == 0) { z->c = z->l - m15; goto lab28; }
                        if (ret < 0) return ret;
                    }
                    z->bra = z->c;
                    {   int ret = slice_del(z);
                        if (ret < 0) return ret;
                    }
                    {   int ret = r_stem_suffix_chain_before_ki(z);
                        if (ret == 0) { z->c = z->l - m15; goto lab28; }
                        if (ret < 0) return ret;
                    }
                lab28:
                    ;
                }
                goto lab26;
            lab27:
                z->c = z->l - m14;
                {   int ret = r_mark_lAr(z);
                    if (ret == 0) goto lab29;
                    if (ret < 0) return ret;
                }
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0) return ret;
                }
                {   int m16 = z->l - z->c; (void)m16;
                    {   int ret = r_stem_suffix_chain_before_ki(z);
                        if (ret == 0) { z->c = z->l - m16; goto lab30; }
                        if (ret < 0) return ret;
                    }
                lab30:
                    ;
                }
                goto lab26;
            lab29:
                z->c = z->l - m14;
                {   int ret = r_stem_suffix_chain_before_ki(z);
                    if (ret == 0) { z->c = z->l - m13; goto lab25; }
                    if (ret < 0) return ret;
                }
            }
        lab26:
        lab25:
            ;
        }
        goto lab0;
    lab24:
        z->c = z->l - m1;
        z->ket = z->c;
        {   int m17 = z->l - z->c; (void)m17;
            {   int ret = r_mark_nUn(z);
                if (ret == 0) goto lab33;
                if (ret < 0) return ret;
            }
            goto lab32;
        lab33:
            z->c = z->l - m17;
            {   int ret = r_mark_ylA(z);
                if (ret == 0) goto lab31;
                if (ret < 0) return ret;
            }
        }
    lab32:
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0) return ret;
        }
        {   int m18 = z->l - z->c; (void)m18;
            {   int m19 = z->l - z->c; (void)m19;
                z->ket = z->c;
                {   int ret = r_mark_lAr(z);
                    if (ret == 0) goto lab36;
                    if (ret < 0) return ret;
                }
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0) return ret;
                }
                {   int ret = r_stem_suffix_chain_before_ki(z);
                    if (ret == 0) goto lab36;
                    if (ret < 0) return ret;
                }
                goto lab35;
            lab36:
                z->c = z->l - m19;
                z->ket = z->c;
                {   int m20 = z->l - z->c; (void)m20;
                    {   int ret = r_mark_possessives(z);
                        if (ret == 0) goto lab39;
                        if (ret < 0) return ret;
                    }
                    goto lab38;
                lab39:
                    z->c = z->l - m20;
                    {   int ret = r_mark_sU(z);
                        if (ret == 0) goto lab37;
                        if (ret < 0) return ret;
                    }
                }
            lab38:
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0) return ret;
                }
                {   int m21 = z->l - z->c; (void)m21;
                    z->ket = z->c;
                    {   int ret = r_mark_lAr(z);
                        if (ret == 0) { z->c = z->l - m21; goto lab40; }
                        if (ret < 0) return ret;
                    }
                    z->bra = z->c;
                    {   int ret = slice_del(z);
                        if (ret < 0) return ret;
                    }
                    {   int ret = r_stem_suffix_chain_before_ki(z);
                        if (ret == 0) { z->c = z->l - m21; goto lab40; }
                        if (ret < 0) return ret;
                    }
                lab40:
                    ;
                }
                goto lab35;
            lab37:
                z->c = z->l - m19;
                {   int ret = r_stem_suffix_chain_before_ki(z);
                    if (ret == 0) { z->c = z->l - m18; goto lab34; }
                    if (ret < 0) return ret;
                }
            }
        lab35:
        lab34:
            ;
        }
        goto lab0;
    lab31:
        z->c = z->l - m1;
        z->ket = z->c;
        {   int ret = r_mark_lArI(z);
            if (ret == 0) goto lab41;
            if (ret < 0) return ret;
        }
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0) return ret;
        }
        goto lab0;
    lab41:
        z->c = z->l - m1;
        {   int ret = r_stem_suffix_chain_before_ki(z);
            if (ret == 0) goto lab42;
            if (ret < 0) return ret;
        }
        goto lab0;
    lab42:
        z->c = z->l - m1;
        z->ket = z->c;
        {   int m22 = z->l - z->c; (void)m22;
            {   int ret = r_mark_DA(z);
                if (ret == 0) goto lab45;
                if (ret < 0) return ret;
            }
            goto lab44;
        lab45:
            z->c = z->l - m22;
            {   int ret = r_mark_yU(z);
                if (ret == 0) goto lab46;
                if (ret < 0) return ret;
            }
            goto lab44;
        lab46:
            z->c = z->l - m22;
            {   int ret = r_mark_yA(z);
                if (ret == 0) goto lab43;
                if (ret < 0) return ret;
            }
        }
    lab44:
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0) return ret;
        }
        {   int m23 = z->l - z->c; (void)m23;
            z->ket = z->c;
            {   int m24 = z->l - z->c; (void)m24;
                {   int ret = r_mark_possessives(z);
                    if (ret == 0) goto lab49;
                    if (ret < 0) return ret;
                }
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0) return ret;
                }
                {   int m25 = z->l - z->c; (void)m25;
                    z->ket = z->c;
                    {   int ret = r_mark_lAr(z);
                        if (ret == 0) { z->c = z->l - m25; goto lab50; }
                        if (ret < 0) return ret;
                    }
                lab50:
                    ;
                }
                goto lab48;
            lab49:
                z->c = z->l - m24;
                {   int ret = r_mark_lAr(z);
                    if (ret == 0) { z->c = z->l - m23; goto lab47; }
                    if (ret < 0) return ret;
                }
            }
        lab48:
            z->bra = z->c;
            {   int ret = slice_del(z);
                if (ret < 0) return ret;
            }
            z->ket = z->c;
            {   int ret = r_stem_suffix_chain_before_ki(z);
                if (ret == 0) { z->c = z->l - m23; goto lab47; }
                if (ret < 0) return ret;
            }
        lab47:
            ;
        }
        goto lab0;
    lab43:
        z->c = z->l - m1;
        z->ket = z->c;
        {   int m26 = z->l - z->c; (void)m26;
            {   int ret = r_mark_possessives(z);
                if (ret == 0) goto lab52;
                if (ret < 0) return ret;
            }
            goto lab51;
        lab52:
            z->c = z->l - m26;
            {   int ret = r_mark_sU(z);
                if (ret <= 0) return ret;
            }
        }
    lab51:
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0) return ret;
        }
        {   int m27 = z->l - z->c; (void)m27;
            z->ket = z->c;
            {   int ret = r_mark_lAr(z);
                if (ret == 0) { z->c = z->l - m27; goto lab53; }
                if (ret < 0) return ret;
            }
            z->bra = z->c;
            {   int ret = slice_del(z);
                if (ret < 0) return ret;
            }
            {   int ret = r_stem_suffix_chain_before_ki(z);
                if (ret == 0) { z->c = z->l - m27; goto lab53; }
                if (ret < 0) return ret;
            }
        lab53:
            ;
        }
    }
lab0:
    return 1;
}

static int r_post_process_last_consonants(struct SN_env * z) {
    int among_var;
    z->ket = z->c;
    among_var = find_among_b(z, a_23, 4);
    if (!among_var) return 0;
    z->bra = z->c;
    switch (among_var) {
        case 1:
            {   int ret = slice_from_s(z, 1, s_5);
                if (ret < 0) return ret;
            }
            break;
        case 2:
            {   int ret = slice_from_s(z, 2, s_6);
                if (ret < 0) return ret;
            }
            break;
        case 3:
            {   int ret = slice_from_s(z, 1, s_7);
                if (ret < 0) return ret;
            }
            break;
        case 4:
            {   int ret = slice_from_s(z, 1, s_8);
                if (ret < 0) return ret;
            }
            break;
    }
    return 1;
}

static int r_append_U_to_stems_ending_with_d_or_g(struct SN_env * z) {
    z->ket = z->c;
    z->bra = z->c;
    {   int m1 = z->l - z->c; (void)m1;
        if (z->c <= z->lb || z->p[z->c - 1] != 'd') goto lab1;
        z->c--;
        goto lab0;
    lab1:
        z->c = z->l - m1;
        if (z->c <= z->lb || z->p[z->c - 1] != 'g') return 0;
        z->c--;
    }
lab0:

    if (out_grouping_b_U(z, g_vowel, 97, 305, 1) < 0) return 0;
    {   int m2 = z->l - z->c; (void)m2;
        {   int m3 = z->l - z->c; (void)m3;
            if (z->c <= z->lb || z->p[z->c - 1] != 'a') goto lab5;
            z->c--;
            goto lab4;
        lab5:
            z->c = z->l - m3;
            if (!(eq_s_b(z, 2, s_9))) goto lab3;
        }
    lab4:
        {   int ret = slice_from_s(z, 2, s_10);
            if (ret < 0) return ret;
        }
        goto lab2;
    lab3:
        z->c = z->l - m2;
        {   int m4 = z->l - z->c; (void)m4;
            if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab8;
            z->c--;
            goto lab7;
        lab8:
            z->c = z->l - m4;
            if (z->c <= z->lb || z->p[z->c - 1] != 'i') goto lab6;
            z->c--;
        }
    lab7:
        {   int ret = slice_from_s(z, 1, s_11);
            if (ret < 0) return ret;
        }
        goto lab2;
    lab6:
        z->c = z->l - m2;
        {   int m5 = z->l - z->c; (void)m5;
            if (z->c <= z->lb || z->p[z->c - 1] != 'o') goto lab11;
            z->c--;
            goto lab10;
        lab11:
            z->c = z->l - m5;
            if (z->c <= z->lb || z->p[z->c - 1] != 'u') goto lab9;
            z->c--;
        }
    lab10:
        {   int ret = slice_from_s(z, 1, s_12);
            if (ret < 0) return ret;
        }
        goto lab2;
    lab9:
        z->c = z->l - m2;
        {   int m6 = z->l - z->c; (void)m6;
            if (!(eq_s_b(z, 2, s_13))) goto lab13;
            goto lab12;
        lab13:
            z->c = z->l - m6;
            if (!(eq_s_b(z, 2, s_14))) return 0;
        }
    lab12:
        {   int ret = slice_from_s(z, 2, s_15);
            if (ret < 0) return ret;
        }
    }
lab2:
    return 1;
}

static int r_is_reserved_word(struct SN_env * z) {
    if (!(eq_s_b(z, 2, s_16))) return 0;
    {   int m1 = z->l - z->c; (void)m1;
        if (!(eq_s_b(z, 3, s_17))) { z->c = z->l - m1; goto lab0; }
    lab0:
        ;
    }
    if (z->c > z->lb) return 0;
    return 1;
}

static int r_remove_proper_noun_suffix(struct SN_env * z) {
    {   int c1 = z->c;
        while(1) {
            int c2 = z->c;
            if (z->c == z->l || z->p[z->c] != '\'') goto lab1;
            z->c++;
            z->c = c2;
            break;
        lab1:
            z->c = c2;
            {   int ret = skip_utf8(z->p, z->c, z->l, 1);
                if (ret < 0) goto lab0;
                z->c = ret;
            }
        }
        z->bra = z->c;
        z->c = z->l;
        z->ket = z->c;
        {   int ret = slice_del(z);
            if (ret < 0) return ret;
        }
    lab0:
        z->c = c1;
    }
    return 1;
}

static int r_more_than_one_syllable_word(struct SN_env * z) {
    {   int c_test1 = z->c;
        {   int i; for (i = 2; i > 0; i--)
            {
                {
                    int ret = out_grouping_U(z, g_vowel, 97, 305, 1);
                    if (ret < 0) return 0;
                    z->c += ret;
                }
            }
        }
        z->c = c_test1;
    }
    return 1;
}

static int r_postlude(struct SN_env * z) {
    z->lb = z->c; z->c = z->l;

    {   int m1 = z->l - z->c; (void)m1;
        {   int ret = r_is_reserved_word(z);
            if (ret == 0) goto lab0;
            if (ret < 0) return ret;
        }
        return 0;
    lab0:
        z->c = z->l - m1;
    }
    {   int m2 = z->l - z->c; (void)m2;
        {   int ret = r_append_U_to_stems_ending_with_d_or_g(z);
            if (ret < 0) return ret;
        }
        z->c = z->l - m2;
    }
    {   int m3 = z->l - z->c; (void)m3;
        {   int ret = r_post_process_last_consonants(z);
            if (ret < 0) return ret;
        }
        z->c = z->l - m3;
    }
    z->c = z->lb;
    return 1;
}

extern int turkish_UTF_8_stem(struct SN_env * z) {

    {   int ret = r_remove_proper_noun_suffix(z);
        if (ret < 0) return ret;
    }
    {   int ret = r_more_than_one_syllable_word(z);
        if (ret <= 0) return ret;
    }
    z->lb = z->c; z->c = z->l;

    {   int m1 = z->l - z->c; (void)m1;
        {   int ret = r_stem_nominal_verb_suffixes(z);
            if (ret < 0) return ret;
        }
        z->c = z->l - m1;
    }
    if (!(z->I[0])) return 0;
    {   int m2 = z->l - z->c; (void)m2;
        {   int ret = r_stem_noun_suffixes(z);
            if (ret < 0) return ret;
        }
        z->c = z->l - m2;
    }
    z->c = z->lb;
    {   int ret = r_postlude(z);
        if (ret <= 0) return ret;
    }
    return 1;
}

extern struct SN_env * turkish_UTF_8_create_env(void) { return SN_create_env(0, 1); }

extern void turkish_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }


Messung V0.5 in Prozent
C=95 H=92 G=93

¤ Dauer der Verarbeitung: 0.130 Sekunden  (vorverarbeitet am  2026-09-28) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.