private bool r_standard_suffix()

in src/Lucene.Net.Analysis.Common/Tartarus/Snowball/Ext/German2Stemmer.cs [525:823]


        private bool r_standard_suffix()
        {
            int among_var;
            int v_1;
            int v_2;
            int v_3;
            int v_4;
            int v_5;
            int v_6;
            int v_7;
            int v_8;
            int v_9;
            // (, line 79
            // do, line 80
            v_1 = m_limit - m_cursor;

            do
            {
                // (, line 80
                // [, line 81
                m_ket = m_cursor;
                // substring, line 81
                among_var = FindAmongB(a_2, 7);
                if (among_var == 0)
                {
                    goto lab0;
                }
                // ], line 81
                m_bra = m_cursor;
                // call R1, line 81
                if (!r_R1())
                {
                    goto lab0;
                }
                switch (among_var)
                {
                    case 0:
                        goto lab0;
                    case 1:
                        // (, line 83
                        // delete, line 83
                        SliceDel();
                        break;
                    case 2:
                        // (, line 86
                        if (!(InGroupingB(g_s_ending, 98, 116)))
                        {
                            goto lab0;
                        }
                        // delete, line 86
                        SliceDel();
                        break;
                }
            } while (false);
            lab0:
            m_cursor = m_limit - v_1;
            // do, line 90
            v_2 = m_limit - m_cursor;

            do
            {
                // (, line 90
                // [, line 91
                m_ket = m_cursor;
                // substring, line 91
                among_var = FindAmongB(a_3, 4);
                if (among_var == 0)
                {
                    goto lab1;
                }
                // ], line 91
                m_bra = m_cursor;
                // call R1, line 91
                if (!r_R1())
                {
                    goto lab1;
                }
                switch (among_var)
                {
                    case 0:
                        goto lab1;
                    case 1:
                        // (, line 93
                        // delete, line 93
                        SliceDel();
                        break;
                    case 2:
                        // (, line 96
                        if (!(InGroupingB(g_st_ending, 98, 116)))
                        {
                            goto lab1;
                        }
                        // hop, line 96
                        {
                            int c = m_cursor - 3;
                            if (m_limit_backward > c || c > m_limit)
                            {
                                goto lab1;
                            }
                            m_cursor = c;
                        }
                        // delete, line 96
                        SliceDel();
                        break;
                }
            } while (false);
            lab1:
            m_cursor = m_limit - v_2;
            // do, line 100
            v_3 = m_limit - m_cursor;

            do
            {
                // (, line 100
                // [, line 101
                m_ket = m_cursor;
                // substring, line 101
                among_var = FindAmongB(a_5, 8);
                if (among_var == 0)
                {
                    goto lab2;
                }
                // ], line 101
                m_bra = m_cursor;
                // call R2, line 101
                if (!r_R2())
                {
                    goto lab2;
                }
                switch (among_var)
                {
                    case 0:
                        goto lab2;
                    case 1:
                        // (, line 103
                        // delete, line 103
                        SliceDel();
                        // try, line 104
                        v_4 = m_limit - m_cursor;

                        do
                        {
                            // (, line 104
                            // [, line 104
                            m_ket = m_cursor;
                            // literal, line 104
                            if (!(Eq_S_B(2, "ig")))
                            {
                                m_cursor = m_limit - v_4;
                                goto lab3;
                            }
                            // ], line 104
                            m_bra = m_cursor;
                            // not, line 104
                            {
                                v_5 = m_limit - m_cursor;

                                do
                                {
                                    // literal, line 104
                                    if (!(Eq_S_B(1, "e")))
                                    {
                                        goto lab4;
                                    }
                                    m_cursor = m_limit - v_4;
                                    goto lab3;
                                } while (false);
                                lab4:
                                m_cursor = m_limit - v_5;
                            }
                            // call R2, line 104
                            if (!r_R2())
                            {
                                m_cursor = m_limit - v_4;
                                goto lab3;
                            }
                            // delete, line 104
                            SliceDel();
                        } while (false);
                        lab3:
                        break;
                    case 2:
                        // (, line 107
                        // not, line 107
                        {
                            v_6 = m_limit - m_cursor;

                            do
                            {
                                // literal, line 107
                                if (!(Eq_S_B(1, "e")))
                                {
                                    goto lab5;
                                }
                                goto lab2;
                            } while (false);
                            lab5:
                            m_cursor = m_limit - v_6;
                        }
                        // delete, line 107
                        SliceDel();
                        break;
                    case 3:
                        // (, line 110
                        // delete, line 110
                        SliceDel();
                        // try, line 111
                        v_7 = m_limit - m_cursor;

                        do
                        {
                            // (, line 111
                            // [, line 112
                            m_ket = m_cursor;
                            // or, line 112

                            do
                            {
                                v_8 = m_limit - m_cursor;

                                do
                                {
                                    // literal, line 112
                                    if (!(Eq_S_B(2, "er")))
                                    {
                                        goto lab8;
                                    }
                                    goto lab7;
                                } while (false);
                                lab8:
                                m_cursor = m_limit - v_8;
                                // literal, line 112
                                if (!(Eq_S_B(2, "en")))
                                {
                                    m_cursor = m_limit - v_7;
                                    goto lab6;
                                }
                            } while (false);
                            lab7:
                            // ], line 112
                            m_bra = m_cursor;
                            // call R1, line 112
                            if (!r_R1())
                            {
                                m_cursor = m_limit - v_7;
                                goto lab6;
                            }
                            // delete, line 112
                            SliceDel();
                        } while (false);
                        lab6:
                        break;
                    case 4:
                        // (, line 116
                        // delete, line 116
                        SliceDel();
                        // try, line 117
                        v_9 = m_limit - m_cursor;

                        do
                        {
                            // (, line 117
                            // [, line 118
                            m_ket = m_cursor;
                            // substring, line 118
                            among_var = FindAmongB(a_4, 2);
                            if (among_var == 0)
                            {
                                m_cursor = m_limit - v_9;
                                goto lab9;
                            }
                            // ], line 118
                            m_bra = m_cursor;
                            // call R2, line 118
                            if (!r_R2())
                            {
                                m_cursor = m_limit - v_9;
                                goto lab9;
                            }
                            switch (among_var)
                            {
                                case 0:
                                    m_cursor = m_limit - v_9;
                                    goto lab9;
                                case 1:
                                    // (, line 120
                                    // delete, line 120
                                    SliceDel();
                                    break;
                            }
                        } while (false);
                        lab9:
                        break;
                }
            } while (false);
            lab2:
            m_cursor = m_limit - v_3;
            return true;
        }