private bool r_standard_suffix()

in src/Lucene.Net.Analysis.Common/Tartarus/Snowball/Ext/GermanStemmer.cs [491:779]


        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 73
            // do, line 74
            v_1 = m_limit - m_cursor;
            do
            {
                // (, line 74
                // [, line 75
                m_ket = m_cursor;
                // substring, line 75
                among_var = FindAmongB(a_1, 7);
                if (among_var == 0)
                {
                    goto lab0;
                }
                // ], line 75
                m_bra = m_cursor;
                // call R1, line 75
                if (!r_R1())
                {
                    goto lab0;
                }
                switch (among_var)
                {
                    case 0:
                        goto lab0;
                    case 1:
                        // (, line 77
                        // delete, line 77
                        SliceDel();
                        break;
                    case 2:
                        // (, line 80
                        if (!(InGroupingB(g_s_ending, 98, 116)))
                        {
                            goto lab0;
                        }
                        // delete, line 80
                        SliceDel();
                        break;
                }
            } while (false);
            lab0:
            m_cursor = m_limit - v_1;
            // do, line 84
            v_2 = m_limit - m_cursor;
            do
            {
                // (, line 84
                // [, line 85
                m_ket = m_cursor;
                // substring, line 85
                among_var = FindAmongB(a_2, 4);
                if (among_var == 0)
                {
                    goto lab1;
                }
                // ], line 85
                m_bra = m_cursor;
                // call R1, line 85
                if (!r_R1())
                {
                    goto lab1;
                }
                switch (among_var)
                {
                    case 0:
                        goto lab1;
                    case 1:
                        // (, line 87
                        // delete, line 87
                        SliceDel();
                        break;
                    case 2:
                        // (, line 90
                        if (!(InGroupingB(g_st_ending, 98, 116)))
                        {
                            goto lab1;
                        }
                        // hop, line 90
                        {
                            int c = m_cursor - 3;
                            if (m_limit_backward > c || c > m_limit)
                            {
                                goto lab1;
                            }
                            m_cursor = c;
                        }
                        // delete, line 90
                        SliceDel();
                        break;
                }
            } while (false);
            lab1:
            m_cursor = m_limit - v_2;
            // do, line 94
            v_3 = m_limit - m_cursor;
            do
            {
                // (, line 94
                // [, line 95
                m_ket = m_cursor;
                // substring, line 95
                among_var = FindAmongB(a_4, 8);
                if (among_var == 0)
                {
                    goto lab2;
                }
                // ], line 95
                m_bra = m_cursor;
                // call R2, line 95
                if (!r_R2())
                {
                    goto lab2;
                }
                switch (among_var)
                {
                    case 0:
                        goto lab2;
                    case 1:
                        // (, line 97
                        // delete, line 97
                        SliceDel();
                        // try, line 98
                        v_4 = m_limit - m_cursor;
                        do
                        {
                            // (, line 98
                            // [, line 98
                            m_ket = m_cursor;
                            // literal, line 98
                            if (!(Eq_S_B(2, "ig")))
                            {
                                m_cursor = m_limit - v_4;
                                goto lab3;
                            }
                            // ], line 98
                            m_bra = m_cursor;
                            // not, line 98
                            {
                                v_5 = m_limit - m_cursor;
                                do
                                {
                                    // literal, line 98
                                    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 98
                            if (!r_R2())
                            {
                                m_cursor = m_limit - v_4;
                                goto lab3;
                            }
                            // delete, line 98
                            SliceDel();
                        } while (false);
                        lab3:
                        break;
                    case 2:
                        // (, line 101
                        // not, line 101
                        {
                            v_6 = m_limit - m_cursor;
                            do
                            {
                                // literal, line 101
                                if (!(Eq_S_B(1, "e")))
                                {
                                    goto lab5;
                                }
                                goto lab2;
                            } while (false);
                            lab5:
                            m_cursor = m_limit - v_6;
                        }
                        // delete, line 101
                        SliceDel();
                        break;
                    case 3:
                        // (, line 104
                        // delete, line 104
                        SliceDel();
                        // try, line 105
                        v_7 = m_limit - m_cursor;
                        do
                        {
                            // (, line 105
                            // [, line 106
                            m_ket = m_cursor;
                            // or, line 106
                            do
                            {
                                v_8 = m_limit - m_cursor;
                                do
                                {
                                    // literal, line 106
                                    if (!(Eq_S_B(2, "er")))
                                    {
                                        goto lab8;
                                    }
                                    goto lab7;
                                } while (false);
                                lab8:
                                m_cursor = m_limit - v_8;
                                // literal, line 106
                                if (!(Eq_S_B(2, "en")))
                                {
                                    m_cursor = m_limit - v_7;
                                    goto lab6;
                                }
                            } while (false);
                            lab7:
                            // ], line 106
                            m_bra = m_cursor;
                            // call R1, line 106
                            if (!r_R1())
                            {
                                m_cursor = m_limit - v_7;
                                goto lab6;
                            }
                            // delete, line 106
                            SliceDel();
                        } while (false);
                        lab6:
                        break;
                    case 4:
                        // (, line 110
                        // delete, line 110
                        SliceDel();
                        // try, line 111
                        v_9 = m_limit - m_cursor;
                        do
                        {
                            // (, line 111
                            // [, line 112
                            m_ket = m_cursor;
                            // substring, line 112
                            among_var = FindAmongB(a_3, 2);
                            if (among_var == 0)
                            {
                                m_cursor = m_limit - v_9;
                                goto lab9;
                            }
                            // ], line 112
                            m_bra = m_cursor;
                            // call R2, line 112
                            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 114
                                    // delete, line 114
                                    SliceDel();
                                    break;
                            }
                        } while (false);
                        lab9:
                        break;
                }
            } while (false);
            lab2:
            m_cursor = m_limit - v_3;
            return true;
        }