public override bool Stem()

in src/Lucene.Net.Analysis.Common/Tartarus/Snowball/Ext/PorterStemmer.cs [680:1044]


        public override bool Stem()
        {
            int v_1;
            int v_2;
            int v_3;
            int v_4;
            int v_5;
            int v_10;
            int v_11;
            int v_12;
            int v_13;
            int v_14;
            int v_15;
            int v_16;
            int v_17;
            int v_18;
            int v_19;
            int v_20;
            // (, line 113
            // unset Y_found, line 115
            B_Y_found = false;
            // do, line 116
            v_1 = m_cursor;
            do
            {
                // (, line 116
                // [, line 116
                m_bra = m_cursor;
                // literal, line 116
                if (!(Eq_S(1, "y")))
                {
                    goto lab0;
                }
                // ], line 116
                m_ket = m_cursor;
                // <-, line 116
                SliceFrom("Y");
                // set Y_found, line 116
                B_Y_found = true;
            } while (false);
            lab0:
            m_cursor = v_1;
            // do, line 117
            v_2 = m_cursor;
            do
            {
                // repeat, line 117
                while (true)
                {
                    v_3 = m_cursor;
                    do
                    {
                        // (, line 117
                        // goto, line 117
                        while (true)
                        {
                            v_4 = m_cursor;
                            do
                            {
                                // (, line 117
                                if (!(InGrouping(g_v, 97, 121)))
                                {
                                    goto lab5;
                                }
                                // [, line 117
                                m_bra = m_cursor;
                                // literal, line 117
                                if (!(Eq_S(1, "y")))
                                {
                                    goto lab5;
                                }
                                // ], line 117
                                m_ket = m_cursor;
                                m_cursor = v_4;
                                goto golab4;
                            } while (false);
                            lab5:
                            m_cursor = v_4;
                            if (m_cursor >= m_limit)
                            {
                                goto lab3;
                            }
                            m_cursor++;
                        }
                        golab4:
                        // <-, line 117
                        SliceFrom("Y");
                        // set Y_found, line 117
                        B_Y_found = true;
                        // LUCENENET NOTE: continue label is not supported directly in .NET,
                        // so we just need to add another goto to get to the end of the outer loop.
                        // See: http://stackoverflow.com/a/359449/181087

                        // Original code:
                        //continue replab2;

                        goto end_of_outer_loop;

                    } while (false);
                    lab3:
                    m_cursor = v_3;
                    goto replab2;
                    end_of_outer_loop: { /* LUCENENET: intentionally empty */ }
                }
                replab2: {/* LUCENENET: intentionally blank */}
            } while (false);
            //lab1: // not referenced
            m_cursor = v_2;
            I_p1 = m_limit;
            I_p2 = m_limit;
            // do, line 121
            v_5 = m_cursor;
            do
            {
                // (, line 121
                // gopast, line 122
                while (true)
                {
                    do
                    {
                        if (!(InGrouping(g_v, 97, 121)))
                        {
                            goto lab8;
                        }
                        goto golab7;
                    } while (false);
                    lab8:
                    if (m_cursor >= m_limit)
                    {
                        goto lab6;
                    }
                    m_cursor++;
                }
                golab7:
                // gopast, line 122
                while (true)
                {
                    do
                    {
                        if (!(OutGrouping(g_v, 97, 121)))
                        {
                            goto lab10;
                        }
                        goto golab9;
                    } while (false);
                    lab10:
                    if (m_cursor >= m_limit)
                    {
                        goto lab6;
                    }
                    m_cursor++;
                }
                golab9:
                // setmark p1, line 122
                I_p1 = m_cursor;
                // gopast, line 123
                while (true)
                {
                    do
                    {
                        if (!(InGrouping(g_v, 97, 121)))
                        {
                            goto lab12;
                        }
                        goto golab11;
                    } while (false);
                    lab12:
                    if (m_cursor >= m_limit)
                    {
                        goto lab6;
                    }
                    m_cursor++;
                }
                golab11:
                // gopast, line 123
                while (true)
                {
                    do
                    {
                        if (!(OutGrouping(g_v, 97, 121)))
                        {
                            goto lab14;
                        }
                        goto golab13;
                    } while (false);
                    lab14:
                    if (m_cursor >= m_limit)
                    {
                        goto lab6;
                    }
                    m_cursor++;
                }
                golab13:
                // setmark p2, line 123
                I_p2 = m_cursor;
            } while (false);
            lab6:
            m_cursor = v_5;
            // backwards, line 126
            m_limit_backward = m_cursor; m_cursor = m_limit;
            // (, line 126
            // do, line 127
            v_10 = m_limit - m_cursor;
            do
            {
                // call Step_1a, line 127
                if (!r_Step_1a())
                {
                    goto lab15;
                }
            } while (false);
            lab15:
            m_cursor = m_limit - v_10;
            // do, line 128
            v_11 = m_limit - m_cursor;
            do
            {
                // call Step_1b, line 128
                if (!r_Step_1b())
                {
                    goto lab16;
                }
            } while (false);
            lab16:
            m_cursor = m_limit - v_11;
            // do, line 129
            v_12 = m_limit - m_cursor;
            do
            {
                // call Step_1c, line 129
                if (!r_Step_1c())
                {
                    goto lab17;
                }
            } while (false);
            lab17:
            m_cursor = m_limit - v_12;
            // do, line 130
            v_13 = m_limit - m_cursor;
            do
            {
                // call Step_2, line 130
                if (!r_Step_2())
                {
                    goto lab18;
                }
            } while (false);
            lab18:
            m_cursor = m_limit - v_13;
            // do, line 131
            v_14 = m_limit - m_cursor;
            do
            {
                // call Step_3, line 131
                if (!r_Step_3())
                {
                    goto lab19;
                }
            } while (false);
            lab19:
            m_cursor = m_limit - v_14;
            // do, line 132
            v_15 = m_limit - m_cursor;
            do
            {
                // call Step_4, line 132
                if (!r_Step_4())
                {
                    goto lab20;
                }
            } while (false);
            lab20:
            m_cursor = m_limit - v_15;
            // do, line 133
            v_16 = m_limit - m_cursor;
            do
            {
                // call Step_5a, line 133
                if (!r_Step_5a())
                {
                    goto lab21;
                }
            } while (false);
            lab21:
            m_cursor = m_limit - v_16;
            // do, line 134
            v_17 = m_limit - m_cursor;
            do
            {
                // call Step_5b, line 134
                if (!r_Step_5b())
                {
                    goto lab22;
                }
            } while (false);
            lab22:
            m_cursor = m_limit - v_17;
            m_cursor = m_limit_backward;                    // do, line 137
            v_18 = m_cursor;
            do
            {
                // (, line 137
                // Boolean test Y_found, line 137
                if (!(B_Y_found))
                {
                    goto lab23;
                }
                // repeat, line 137
                while (true)
                {
                    v_19 = m_cursor;
                    do
                    {
                        // (, line 137
                        // goto, line 137
                        while (true)
                        {
                            v_20 = m_cursor;
                            do
                            {
                                // (, line 137
                                // [, line 137
                                m_bra = m_cursor;
                                // literal, line 137
                                if (!(Eq_S(1, "Y")))
                                {
                                    goto lab27;
                                }
                                // ], line 137
                                m_ket = m_cursor;
                                m_cursor = v_20;
                                goto golab26;
                            } while (false);
                            lab27:
                            m_cursor = v_20;
                            if (m_cursor >= m_limit)
                            {
                                goto lab25;
                            }
                            m_cursor++;
                        }
                        golab26:
                        // <-, line 137
                        SliceFrom("y");
                        // LUCENENET NOTE: continue label is not supported directly in .NET,
                        // so we just need to add another goto to get to the end of the outer loop.
                        // See: http://stackoverflow.com/a/359449/181087

                        // Original code:
                        //continue replab24;

                        goto end_of_outer_loop_2;

                    } while (false);
                    lab25:
                    m_cursor = v_19;
                    goto replab24;
                    end_of_outer_loop_2: { /* LUCENENET: intentionally empty */ }
                }
                replab24: {/* LUCENENET: intentionally blank */}
            } while (false);
            lab23:
            m_cursor = v_18;
            return true;
        }