Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

SSL 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, -10},
1, s_0_1, -1, -10},
3, s_0_2, -1, -10},
3, s_0_3, -1, -10},
3, s_0_4, -1, -10},
3, s_0_5, -1, -10},
4, s_0_6, -1, -10},
4, s_0_7, -1, -10},
4, s_0_8, -1, -10},
4, s_0_9, -1, -10}
};

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, -10},
5, s_1_1, -1, -10}
};

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, -10},
2, s_2_1, -1, -10},
3, s_2_2, -1, -10},
3, s_2_3, -1, -10}
};

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, -10},
2, s_3_1, -1, -10},
3, s_3_2, -1, -10},
3, s_3_3, -1, -10}
};

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, -10},
1, s_4_1, -1, -10}
};

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, -10},
2, s_5_1, -1, -10}
};

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, -10},
2, s_6_1, -1, -10},
2, s_6_2, -1, -10},
2, s_6_3, -1, -10}
};

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, -10},
3, s_7_1, -1, -10}
};

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, -10},
3, s_8_1, -1, -10},
3, s_8_2, -1, -10},
3, s_8_3, -1, -10}
};

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, -10},
4, s_9_1, -1, -10}
};

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, -10},
2, s_10_1, -1, -10}
};

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, -10},
2, s_11_1, -1, -10}
};

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, -10},
2, s_12_1, -1, -10},
3, s_12_2, -1, -10},
3, s_12_3, -1, -10}
};

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, -10},
3, s_13_1, -1, -10},
4, s_13_2, -1, -10},
4, s_13_3, -1, -10}
};

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, -10},
2, s_14_1, -1, -10},
3, s_14_2, -1, -10},
3, s_14_3, -1, -10}
};

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, -10},
5, s_15_1, -1, -10},
7, s_15_2, -1, -10},
7, s_15_3, -1, -10}
};

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, -10},
3, s_16_1, -1, -10}
};

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, -10},
3, s_17_1, -1, -10},
4, s_17_2, -1, -10},
4, s_17_3, -1, -10}
};

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, -10},
3, s_18_1, -1, -10},
3, s_18_2, -1, -10},
3, s_18_3, -1, -10},
4, s_18_4, -1, -10},
4, s_18_5, -1, -10},
4, s_18_6, -1, -10},
4, s_18_7, -1, -10}
};

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, -10},
6, s_19_1, -1, -10}
};

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, -10},
2, s_20_1, -1, -10},
3, s_20_2, -1, -10},
3, s_20_3, -1, -10},
3, s_20_4, -1, -10},
3, s_20_5, -1, -10},
4, s_20_6, -1, -10},
4, s_20_7, -1, -10},
4, s_20_8, -1, -10},
4, s_20_9, -1, -10},
3, s_20_10, -1, -10},
3, s_20_11, -1, -10},
3, s_20_12, -1, -10},
3, s_20_13, -1, -10},
4, s_20_14, -1, -10},
4, s_20_15, -1, -10},
4, s_20_16, -1, -10},
4, s_20_17, -1, -10},
3, s_20_18, -1, -10},
3, s_20_19, -1, -10},
3, s_20_20, -1, -10},
3, s_20_21, -1, -10},
4, s_20_22, -1, -10},
4, s_20_23, -1, -10},
4, s_20_24, -1, -10},
4, s_20_25, -1, -10},
2, s_20_26, -1, -10},
2, s_20_27, -1, -10},
3, s_20_28, -1, -10},
3, s_20_29, -1, -10},
3, s_20_30, -1, -10},
3, s_20_31, -1, -10}
};

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, -10},
2, s_21_1, -1, -10},
3, s_21_2, -1, -10},
3, s_21_3, -1, -10},
3, s_21_4, -1, -10},
3, s_21_5, -1, -10},
3, s_21_6, -1, -10},
3, s_21_7, -1, -10}
};

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, -10},
4, s_22_1, -1, -10},
5, s_22_2, -1, -10},
5, s_22_3, -1, -10}
};

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, -110},
1, s_23_1, -120},
1, s_23_2, -130},
2, s_23_3, -140}
};

static const unsigned char g_vowel[] = { 1765160000000000000003280000001 };

static const unsigned char g_U[] = { 116000000000000000080000001 };

static const unsigned char g_vowel1[] = { 16416000000000000000000000001 };

static const unsigned char g_vowel2[] = { 1700000000000000000130 };

static const unsigned char g_vowel3[] = { 100000000000000000000000001 };

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, 973051) < 0return 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, 973051) < 0goto 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, 1012521) < 0goto 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, 973051) < 0goto 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, 1011051) < 0goto 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, 1111171) < 0goto 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, 2462521) < 0goto 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, 1111171) < 0goto 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, 2462521) < 0return 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, 973050)) 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 < 0return 0;
                z->c = ret;
            }
            if (in_grouping_b_U(z, g_vowel, 973050)) 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, 973050)) 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 < 0return 0;
                z->c = ret;
            }
            if (in_grouping_b_U(z, g_vowel, 973050)) 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, 973050)) 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 < 0return 0;
                z->c = ret;
            }
            if (in_grouping_b_U(z, g_vowel, 973050)) 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, 1053050)) goto lab1;
        {   int m_test2 = z->l - z->c;
            if (out_grouping_b_U(z, g_vowel, 973050)) 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, 1053050)) 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 < 0return 0;
                z->c = ret;
            }
            if (out_grouping_b_U(z, g_vowel, 973050)) 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 <= 0return ret;
    }
    return 1;
}

static int r_mark_sU(struct SN_env * z) {
    {   int ret = r_check_vowel_harmony(z);
        if (ret <= 0return ret;
    }
    if (in_grouping_b_U(z, g_U, 1053050)) return 0;
    {   int ret = r_mark_suffix_with_optional_s_consonant(z);
        if (ret <= 0return 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 <= 0return ret;
    }
    if (in_grouping_b_U(z, g_U, 1053050)) return 0;
    {   int ret = r_mark_suffix_with_optional_y_consonant(z);
        if (ret <= 0return ret;
    }
    return 1;
}

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

static int r_mark_yA(struct SN_env * z) {
    {   int ret = r_check_vowel_harmony(z);
        if (ret <= 0return 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 <= 0return ret;
    }
    return 1;
}

static int r_mark_nA(struct SN_env * z) {
    {   int ret = r_check_vowel_harmony(z);
        if (ret <= 0return 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 <= 0return 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 <= 0return 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 <= 0return ret;
    }
    if (z->c - 2 <= z->lb || z->p[z->c - 1] != 110return 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 <= 0return ret;
    }
    if (z->c - 3 <= z->lb || z->p[z->c - 1] != 110return 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 <= 0return 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 <= 0return 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 <= 0return 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 <= 0return ret;
    }
    return 1;
}

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

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

static int r_mark_sUnUz(struct SN_env * z) {
    if (z->c - 4 <= z->lb || z->p[z->c - 1] != 122return 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 <= 0return ret;
    }
    if (z->c - 2 <= z->lb || z->p[z->c - 1] != 114return 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 <= 0return ret;
    }
    if (z->c - 2 <= z->lb || z->p[z->c - 1] != 122return 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 <= 0return ret;
    }
    if (z->c - 2 <= z->lb || z->p[z->c - 1] != 114return 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 <= 0return ret;
    }
    if (!find_among_b(z, a_20, 32)) return 0;
    {   int ret = r_mark_suffix_with_optional_y_consonant(z);
        if (ret <= 0return 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 <= 0return ret;
    }
    return 1;
}

static int r_mark_ymUs_(struct SN_env * z) {
    {   int ret = r_check_vowel_harmony(z);
        if (ret <= 0return ret;
    }
    if (z->c - 3 <= z->lb || z->p[z->c - 1] != 159return 0;
    if (!find_among_b(z, a_22, 4)) return 0;
    {   int ret = r_mark_suffix_with_optional_y_consonant(z);
        if (ret <= 0return 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 <= 0return 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 == 0goto lab3;
                if (ret < 0return ret;
            }
            goto lab2;
        lab3:
            z->c = z->l - m2;
            {   int ret = r_mark_yDU(z);
                if (ret == 0goto lab4;
                if (ret < 0return ret;
            }
            goto lab2;
        lab4:
            z->c = z->l - m2;
            {   int ret = r_mark_ysA(z);
                if (ret == 0goto lab5;
                if (ret < 0return ret;
            }
            goto lab2;
        lab5:
            z->c = z->l - m2;
            {   int ret = r_mark_yken(z);
                if (ret == 0goto lab1;
                if (ret < 0return ret;
            }
        }
    lab2:
        goto lab0;
    lab1:
        z->c = z->l - m1;
        {   int ret = r_mark_cAsInA(z);
            if (ret == 0goto lab6;
            if (ret < 0return ret;
        }
        {   int m3 = z->l - z->c; (void)m3;
            {   int ret = r_mark_sUnUz(z);
                if (ret == 0goto lab8;
                if (ret < 0return ret;
            }
            goto lab7;
        lab8:
            z->c = z->l - m3;
            {   int ret = r_mark_lAr(z);
                if (ret == 0goto lab9;
                if (ret < 0return ret;
            }
            goto lab7;
        lab9:
            z->c = z->l - m3;
            {   int ret = r_mark_yUm(z);
                if (ret == 0goto lab10;
                if (ret < 0return ret;
            }
            goto lab7;
        lab10:
            z->c = z->l - m3;
            {   int ret = r_mark_sUn(z);
                if (ret == 0goto lab11;
                if (ret < 0return ret;
            }
            goto lab7;
        lab11:
            z->c = z->l - m3;
            {   int ret = r_mark_yUz(z);
                if (ret == 0goto lab12;
                if (ret < 0return ret;
            }
            goto lab7;
        lab12:
            z->c = z->l - m3;
        }
    lab7:
        {   int ret = r_mark_ymUs_(z);
            if (ret == 0goto lab6;
            if (ret < 0return ret;
        }
        goto lab0;
    lab6:
        z->c = z->l - m1;
        {   int ret = r_mark_lAr(z);
            if (ret == 0goto lab13;
            if (ret < 0return ret;
        }
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0return 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 == 0goto lab16;
                    if (ret < 0return ret;
                }
                goto lab15;
            lab16:
                z->c = z->l - m5;
                {   int ret = r_mark_yDU(z);
                    if (ret == 0goto lab17;
                    if (ret < 0return ret;
                }
                goto lab15;
            lab17:
                z->c = z->l - m5;
                {   int ret = r_mark_ysA(z);
                    if (ret == 0goto lab18;
                    if (ret < 0return 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 < 0return ret;
                }
            }
        lab15:
        lab14:
            ;
        }
        z->I[0] = 0;
        goto lab0;
    lab13:
        z->c = z->l - m1;
        {   int ret = r_mark_nUz(z);
            if (ret == 0goto lab19;
            if (ret < 0return ret;
        }
        {   int m6 = z->l - z->c; (void)m6;
            {   int ret = r_mark_yDU(z);
                if (ret == 0goto lab21;
                if (ret < 0return ret;
            }
            goto lab20;
        lab21:
            z->c = z->l - m6;
            {   int ret = r_mark_ysA(z);
                if (ret == 0goto lab19;
                if (ret < 0return 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 == 0goto lab24;
                if (ret < 0return ret;
            }
            goto lab23;
        lab24:
            z->c = z->l - m7;
            {   int ret = r_mark_yUz(z);
                if (ret == 0goto lab25;
                if (ret < 0return ret;
            }
            goto lab23;
        lab25:
            z->c = z->l - m7;
            {   int ret = r_mark_sUn(z);
                if (ret == 0goto lab26;
                if (ret < 0return ret;
            }
            goto lab23;
        lab26:
            z->c = z->l - m7;
            {   int ret = r_mark_yUm(z);
                if (ret == 0goto lab22;
                if (ret < 0return ret;
            }
        }
    lab23:
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0return 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 < 0return ret;
            }
        lab27:
            ;
        }
        goto lab0;
    lab22:
        z->c = z->l - m1;
        {   int ret = r_mark_DUr(z);
            if (ret <= 0return ret;
        }
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0return 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 == 0goto lab30;
                    if (ret < 0return ret;
                }
                goto lab29;
            lab30:
                z->c = z->l - m10;
                {   int ret = r_mark_lAr(z);
                    if (ret == 0goto lab31;
                    if (ret < 0return ret;
                }
                goto lab29;
            lab31:
                z->c = z->l - m10;
                {   int ret = r_mark_yUm(z);
                    if (ret == 0goto lab32;
                    if (ret < 0return ret;
                }
                goto lab29;
            lab32:
                z->c = z->l - m10;
                {   int ret = r_mark_sUn(z);
                    if (ret == 0goto lab33;
                    if (ret < 0return ret;
                }
                goto lab29;
            lab33:
                z->c = z->l - m10;
                {   int ret = r_mark_yUz(z);
                    if (ret == 0goto lab34;
                    if (ret < 0return 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 < 0return ret;
            }
        lab28:
            ;
        }
    }
lab0:
    z->bra = z->c;
    {   int ret = slice_del(z);
        if (ret < 0return 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 <= 0return ret;
    }
    {   int m1 = z->l - z->c; (void)m1;
        {   int ret = r_mark_DA(z);
            if (ret == 0goto lab1;
            if (ret < 0return ret;
        }
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0return 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 == 0goto lab4;
                    if (ret < 0return ret;
                }
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0return 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 < 0return 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 < 0return ret;
                }
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0return 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 < 0return ret;
                    }
                    z->bra = z->c;
                    {   int ret = slice_del(z);
                        if (ret < 0return ret;
                    }
                    {   int ret = r_stem_suffix_chain_before_ki(z);
                        if (ret == 0) { z->c = z->l - m5; goto lab6; }
                        if (ret < 0return ret;
                    }
                lab6:
                    ;
                }
            }
        lab3:
        lab2:
            ;
        }
        goto lab0;
    lab1:
        z->c = z->l - m1;
        {   int ret = r_mark_nUn(z);
            if (ret == 0goto lab7;
            if (ret < 0return ret;
        }
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0return 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 == 0goto lab10;
                    if (ret < 0return ret;
                }
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0return 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 == 0goto lab13;
                        if (ret < 0return ret;
                    }
                    goto lab12;
                lab13:
                    z->c = z->l - m8;
                    {   int ret = r_mark_sU(z);
                        if (ret == 0goto lab11;
                        if (ret < 0return ret;
                    }
                }
            lab12:
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0return 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 < 0return ret;
                    }
                    z->bra = z->c;
                    {   int ret = slice_del(z);
                        if (ret < 0return ret;
                    }
                    {   int ret = r_stem_suffix_chain_before_ki(z);
                        if (ret == 0) { z->c = z->l - m9; goto lab14; }
                        if (ret < 0return 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 < 0return ret;
                }
            }
        lab9:
        lab8:
            ;
        }
        goto lab0;
    lab7:
        z->c = z->l - m1;
        {   int ret = r_mark_ndA(z);
            if (ret <= 0return ret;
        }
        {   int m10 = z->l - z->c; (void)m10;
            {   int ret = r_mark_lArI(z);
                if (ret == 0goto lab16;
                if (ret < 0return ret;
            }
            z->bra = z->c;
            {   int ret = slice_del(z);
                if (ret < 0return ret;
            }
            goto lab15;
        lab16:
            z->c = z->l - m10;
            {   int ret = r_mark_sU(z);
                if (ret == 0goto lab17;
                if (ret < 0return ret;
            }
            z->bra = z->c;
            {   int ret = slice_del(z);
                if (ret < 0return 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 < 0return ret;
                }
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0return ret;
                }
                {   int ret = r_stem_suffix_chain_before_ki(z);
                    if (ret == 0) { z->c = z->l - m11; goto lab18; }
                    if (ret < 0return ret;
                }
            lab18:
                ;
            }
            goto lab15;
        lab17:
            z->c = z->l - m10;
            {   int ret = r_stem_suffix_chain_before_ki(z);
                if (ret <= 0return 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 == 0goto lab1;
            if (ret < 0return ret;
        }
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0return 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 < 0return ret;
            }
        lab2:
            ;
        }
        goto lab0;
    lab1:
        z->c = z->l - m1;
        z->ket = z->c;
        {   int ret = r_mark_ncA(z);
            if (ret == 0goto lab3;
            if (ret < 0return ret;
        }
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0return 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 == 0goto lab6;
                    if (ret < 0return ret;
                }
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0return 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 == 0goto lab9;
                        if (ret < 0return ret;
                    }
                    goto lab8;
                lab9:
                    z->c = z->l - m5;
                    {   int ret = r_mark_sU(z);
                        if (ret == 0goto lab7;
                        if (ret < 0return ret;
                    }
                }
            lab8:
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0return 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 < 0return ret;
                    }
                    z->bra = z->c;
                    {   int ret = slice_del(z);
                        if (ret < 0return ret;
                    }
                    {   int ret = r_stem_suffix_chain_before_ki(z);
                        if (ret == 0) { z->c = z->l - m6; goto lab10; }
                        if (ret < 0return 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 < 0return ret;
                }
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0return ret;
                }
                {   int ret = r_stem_suffix_chain_before_ki(z);
                    if (ret == 0) { z->c = z->l - m3; goto lab4; }
                    if (ret < 0return 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 == 0goto lab13;
                if (ret < 0return ret;
            }
            goto lab12;
        lab13:
            z->c = z->l - m7;
            {   int ret = r_mark_nA(z);
                if (ret == 0goto lab11;
                if (ret < 0return ret;
            }
        }
    lab12:
        {   int m8 = z->l - z->c; (void)m8;
            {   int ret = r_mark_lArI(z);
                if (ret == 0goto lab15;
                if (ret < 0return ret;
            }
            z->bra = z->c;
            {   int ret = slice_del(z);
                if (ret < 0return ret;
            }
            goto lab14;
        lab15:
            z->c = z->l - m8;
            {   int ret = r_mark_sU(z);
                if (ret == 0goto lab16;
                if (ret < 0return ret;
            }
            z->bra = z->c;
            {   int ret = slice_del(z);
                if (ret < 0return 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 < 0return ret;
                }
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0return ret;
                }
                {   int ret = r_stem_suffix_chain_before_ki(z);
                    if (ret == 0) { z->c = z->l - m9; goto lab17; }
                    if (ret < 0return ret;
                }
            lab17:
                ;
            }
            goto lab14;
        lab16:
            z->c = z->l - m8;
            {   int ret = r_stem_suffix_chain_before_ki(z);
                if (ret == 0goto lab11;
                if (ret < 0return 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 == 0goto lab20;
                if (ret < 0return ret;
            }
            goto lab19;
        lab20:
            z->c = z->l - m10;
            {   int ret = r_mark_nU(z);
                if (ret == 0goto lab18;
                if (ret < 0return ret;
            }
        }
    lab19:
        {   int m11 = z->l - z->c; (void)m11;
            {   int ret = r_mark_sU(z);
                if (ret == 0goto lab22;
                if (ret < 0return ret;
            }
            z->bra = z->c;
            {   int ret = slice_del(z);
                if (ret < 0return 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 < 0return ret;
                }
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0return ret;
                }
                {   int ret = r_stem_suffix_chain_before_ki(z);
                    if (ret == 0) { z->c = z->l - m12; goto lab23; }
                    if (ret < 0return ret;
                }
            lab23:
                ;
            }
            goto lab21;
        lab22:
            z->c = z->l - m11;
            {   int ret = r_mark_lArI(z);
                if (ret == 0goto lab18;
                if (ret < 0return ret;
            }
        }
    lab21:
        goto lab0;
    lab18:
        z->c = z->l - m1;
        z->ket = z->c;
        {   int ret = r_mark_DAn(z);
            if (ret == 0goto lab24;
            if (ret < 0return ret;
        }
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0return 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 == 0goto lab27;
                    if (ret < 0return ret;
                }
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0return 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 < 0return ret;
                    }
                    z->bra = z->c;
                    {   int ret = slice_del(z);
                        if (ret < 0return ret;
                    }
                    {   int ret = r_stem_suffix_chain_before_ki(z);
                        if (ret == 0) { z->c = z->l - m15; goto lab28; }
                        if (ret < 0return ret;
                    }
                lab28:
                    ;
                }
                goto lab26;
            lab27:
                z->c = z->l - m14;
                {   int ret = r_mark_lAr(z);
                    if (ret == 0goto lab29;
                    if (ret < 0return ret;
                }
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0return 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 < 0return 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 < 0return 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 == 0goto lab33;
                if (ret < 0return ret;
            }
            goto lab32;
        lab33:
            z->c = z->l - m17;
            {   int ret = r_mark_ylA(z);
                if (ret == 0goto lab31;
                if (ret < 0return ret;
            }
        }
    lab32:
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0return 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 == 0goto lab36;
                    if (ret < 0return ret;
                }
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0return ret;
                }
                {   int ret = r_stem_suffix_chain_before_ki(z);
                    if (ret == 0goto lab36;
                    if (ret < 0return 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 == 0goto lab39;
                        if (ret < 0return ret;
                    }
                    goto lab38;
                lab39:
                    z->c = z->l - m20;
                    {   int ret = r_mark_sU(z);
                        if (ret == 0goto lab37;
                        if (ret < 0return ret;
                    }
                }
            lab38:
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0return 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 < 0return ret;
                    }
                    z->bra = z->c;
                    {   int ret = slice_del(z);
                        if (ret < 0return ret;
                    }
                    {   int ret = r_stem_suffix_chain_before_ki(z);
                        if (ret == 0) { z->c = z->l - m21; goto lab40; }
                        if (ret < 0return 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 < 0return ret;
                }
            }
        lab35:
        lab34:
            ;
        }
        goto lab0;
    lab31:
        z->c = z->l - m1;
        z->ket = z->c;
        {   int ret = r_mark_lArI(z);
            if (ret == 0goto lab41;
            if (ret < 0return ret;
        }
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0return ret;
        }
        goto lab0;
    lab41:
        z->c = z->l - m1;
        {   int ret = r_stem_suffix_chain_before_ki(z);
            if (ret == 0goto lab42;
            if (ret < 0return 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 == 0goto lab45;
                if (ret < 0return ret;
            }
            goto lab44;
        lab45:
            z->c = z->l - m22;
            {   int ret = r_mark_yU(z);
                if (ret == 0goto lab46;
                if (ret < 0return ret;
            }
            goto lab44;
        lab46:
            z->c = z->l - m22;
            {   int ret = r_mark_yA(z);
                if (ret == 0goto lab43;
                if (ret < 0return ret;
            }
        }
    lab44:
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0return 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 == 0goto lab49;
                    if (ret < 0return ret;
                }
                z->bra = z->c;
                {   int ret = slice_del(z);
                    if (ret < 0return 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 < 0return 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 < 0return ret;
                }
            }
        lab48:
            z->bra = z->c;
            {   int ret = slice_del(z);
                if (ret < 0return 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 < 0return 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 == 0goto lab52;
                if (ret < 0return ret;
            }
            goto lab51;
        lab52:
            z->c = z->l - m26;
            {   int ret = r_mark_sU(z);
                if (ret <= 0return ret;
            }
        }
    lab51:
        z->bra = z->c;
        {   int ret = slice_del(z);
            if (ret < 0return 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 < 0return ret;
            }
            z->bra = z->c;
            {   int ret = slice_del(z);
                if (ret < 0return ret;
            }
            {   int ret = r_stem_suffix_chain_before_ki(z);
                if (ret == 0) { z->c = z->l - m27; goto lab53; }
                if (ret < 0return 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 < 0return ret;
            }
            break;
        case 2:
            {   int ret = slice_from_s(z, 2, s_6);
                if (ret < 0return ret;
            }
            break;
        case 3:
            {   int ret = slice_from_s(z, 1, s_7);
                if (ret < 0return ret;
            }
            break;
        case 4:
            {   int ret = slice_from_s(z, 1, s_8);
                if (ret < 0return 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, 973051) < 0return 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 < 0return 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 < 0return 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 < 0return 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 < 0return 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 < 0goto lab0;
                z->c = ret;
            }
        }
        z->bra = z->c;
        z->c = z->l;
        z->ket = z->c;
        {   int ret = slice_del(z);
            if (ret < 0return 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, 973051);
                    if (ret < 0return 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 == 0goto lab0;
            if (ret < 0return 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 < 0return ret;
        }
        z->c = z->l - m2;
    }
    {   int m3 = z->l - z->c; (void)m3;
        {   int ret = r_post_process_last_consonants(z);
            if (ret < 0return 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 < 0return ret;
    }
    {   int ret = r_more_than_one_syllable_word(z);
        if (ret <= 0return 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 < 0return 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 < 0return ret;
        }
        z->c = z->l - m2;
    }
    z->c = z->lb;
    {   int ret = r_postlude(z);
        if (ret <= 0return ret;
    }
    return 1;
}

extern struct SN_env * turkish_UTF_8_create_env(void) { return SN_create_env(01); }

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


Messung V0.5 in Prozent
C=99 H=88 G=93

¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.74Angebot  (Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-08-08) ¤

*Eine klare Vorstellung vom Zielzustand






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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=141584
#Domains=752002