extern int arabic_UTF_8_stem()

in src/backend/snowball/libstemmer/stem_UTF_8_arabic.c [1426:1671]


extern int arabic_UTF_8_stem(struct SN_env * z) {
    z->I[2] = 1;
    z->I[1] = 1;
    z->I[0] = 0;
    {   int c1 = z->c;
        {   int ret = r_Checks1(z);
            if (ret < 0) return ret;
        }
        z->c = c1;
    }
    
    {   int ret = r_Normalize_pre(z);
        if (ret < 0) return ret;
    }
    z->lb = z->c; z->c = z->l;

    {   int m2 = z->l - z->c; (void)m2;
        {   int m3 = z->l - z->c; (void)m3;
            if (!(z->I[1])) goto lab2;
            {   int m4 = z->l - z->c; (void)m4;
                {   int i = 1;
                    while(1) {
                        int m5 = z->l - z->c; (void)m5;
                        {   int ret = r_Suffix_Verb_Step1(z);
                            if (ret == 0) goto lab5;
                            if (ret < 0) return ret;
                        }
                        i--;
                        continue;
                    lab5:
                        z->c = z->l - m5;
                        break;
                    }
                    if (i > 0) goto lab4;
                }
                {   int m6 = z->l - z->c; (void)m6;
                    {   int ret = r_Suffix_Verb_Step2a(z);
                        if (ret == 0) goto lab7;
                        if (ret < 0) return ret;
                    }
                    goto lab6;
                lab7:
                    z->c = z->l - m6;
                    {   int ret = r_Suffix_Verb_Step2c(z);
                        if (ret == 0) goto lab8;
                        if (ret < 0) return ret;
                    }
                    goto lab6;
                lab8:
                    z->c = z->l - m6;
                    {   int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
                        if (ret < 0) goto lab4;
                        z->c = ret;
                    }
                }
            lab6:
                goto lab3;
            lab4:
                z->c = z->l - m4;
                {   int ret = r_Suffix_Verb_Step2b(z);
                    if (ret == 0) goto lab9;
                    if (ret < 0) return ret;
                }
                goto lab3;
            lab9:
                z->c = z->l - m4;
                {   int ret = r_Suffix_Verb_Step2a(z);
                    if (ret == 0) goto lab2;
                    if (ret < 0) return ret;
                }
            }
        lab3:
            goto lab1;
        lab2:
            z->c = z->l - m3;
            if (!(z->I[2])) goto lab10;
            {   int m7 = z->l - z->c; (void)m7;
                {   int m8 = z->l - z->c; (void)m8;
                    {   int ret = r_Suffix_Noun_Step2c2(z);
                        if (ret == 0) goto lab13;
                        if (ret < 0) return ret;
                    }
                    goto lab12;
                lab13:
                    z->c = z->l - m8;
                    
                    if (!(z->I[0])) goto lab15;
                    goto lab14;
                lab15:
                    {   int ret = r_Suffix_Noun_Step1a(z);
                        if (ret == 0) goto lab14;
                        if (ret < 0) return ret;
                    }
                    {   int m9 = z->l - z->c; (void)m9;
                        {   int ret = r_Suffix_Noun_Step2a(z);
                            if (ret == 0) goto lab17;
                            if (ret < 0) return ret;
                        }
                        goto lab16;
                    lab17:
                        z->c = z->l - m9;
                        {   int ret = r_Suffix_Noun_Step2b(z);
                            if (ret == 0) goto lab18;
                            if (ret < 0) return ret;
                        }
                        goto lab16;
                    lab18:
                        z->c = z->l - m9;
                        {   int ret = r_Suffix_Noun_Step2c1(z);
                            if (ret == 0) goto lab19;
                            if (ret < 0) return ret;
                        }
                        goto lab16;
                    lab19:
                        z->c = z->l - m9;
                        {   int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
                            if (ret < 0) goto lab14;
                            z->c = ret;
                        }
                    }
                lab16:
                    goto lab12;
                lab14:
                    z->c = z->l - m8;
                    {   int ret = r_Suffix_Noun_Step1b(z);
                        if (ret == 0) goto lab20;
                        if (ret < 0) return ret;
                    }
                    {   int m10 = z->l - z->c; (void)m10;
                        {   int ret = r_Suffix_Noun_Step2a(z);
                            if (ret == 0) goto lab22;
                            if (ret < 0) return ret;
                        }
                        goto lab21;
                    lab22:
                        z->c = z->l - m10;
                        {   int ret = r_Suffix_Noun_Step2b(z);
                            if (ret == 0) goto lab23;
                            if (ret < 0) return ret;
                        }
                        goto lab21;
                    lab23:
                        z->c = z->l - m10;
                        {   int ret = r_Suffix_Noun_Step2c1(z);
                            if (ret == 0) goto lab20;
                            if (ret < 0) return ret;
                        }
                    }
                lab21:
                    goto lab12;
                lab20:
                    z->c = z->l - m8;
                    
                    if (!(z->I[0])) goto lab25;
                    goto lab24;
                lab25:
                    {   int ret = r_Suffix_Noun_Step2a(z);
                        if (ret == 0) goto lab24;
                        if (ret < 0) return ret;
                    }
                    goto lab12;
                lab24:
                    z->c = z->l - m8;
                    {   int ret = r_Suffix_Noun_Step2b(z);
                        if (ret == 0) { z->c = z->l - m7; goto lab11; }
                        if (ret < 0) return ret;
                    }
                }
            lab12:
            lab11:
                ;
            }
            {   int ret = r_Suffix_Noun_Step3(z);
                if (ret == 0) goto lab10;
                if (ret < 0) return ret;
            }
            goto lab1;
        lab10:
            z->c = z->l - m3;
            {   int ret = r_Suffix_All_alef_maqsura(z);
                if (ret == 0) goto lab0;
                if (ret < 0) return ret;
            }
        }
    lab1:
    lab0:
        z->c = z->l - m2;
    }
    z->c = z->lb;
    {   int c11 = z->c;
        {   int c12 = z->c;
            {   int ret = r_Prefix_Step1(z);
                if (ret == 0) { z->c = c12; goto lab27; }
                if (ret < 0) return ret;
            }
        lab27:
            ;
        }
        {   int c13 = z->c;
            {   int ret = r_Prefix_Step2(z);
                if (ret == 0) { z->c = c13; goto lab28; }
                if (ret < 0) return ret;
            }
        lab28:
            ;
        }
        {   int c14 = z->c;
            {   int ret = r_Prefix_Step3a_Noun(z);
                if (ret == 0) goto lab30;
                if (ret < 0) return ret;
            }
            goto lab29;
        lab30:
            z->c = c14;
            if (!(z->I[2])) goto lab31;
            {   int ret = r_Prefix_Step3b_Noun(z);
                if (ret == 0) goto lab31;
                if (ret < 0) return ret;
            }
            goto lab29;
        lab31:
            z->c = c14;
            if (!(z->I[1])) goto lab26;
            {   int c15 = z->c;
                {   int ret = r_Prefix_Step3_Verb(z);
                    if (ret == 0) { z->c = c15; goto lab32; }
                    if (ret < 0) return ret;
                }
            lab32:
                ;
            }
            {   int ret = r_Prefix_Step4_Verb(z);
                if (ret == 0) goto lab26;
                if (ret < 0) return ret;
            }
        }
    lab29:
    lab26:
        z->c = c11;
    }
    
    {   int ret = r_Normalize_post(z);
        if (ret < 0) return ret;
    }
    return 1;
}