NVelocity.Runtime.Parser.ParserTokenManager.jjMoveNfa_1 C# (CSharp) Метод

jjMoveNfa_1() приватный Метод

private jjMoveNfa_1 ( int startState, int curPos ) : int
startState int
curPos int
Результат int
        private int jjMoveNfa_1(int startState, int curPos)
        {
            int startsAt = 0;
            jjnewStateCnt = 36;
            int i = 1;
            jjstateSet[0] = (uint) startState;
            int kind = 0x7fffffff;
            for(;;)
            {
                if (++jjround == 0x7fffffff)
                    ReInitRounds();
                char character = input_stream.CurrentCharacter;
                if (character < 64)
                {
                    long l = 1L << character;
                    do
                    {
                        switch(jjstateSet[--i])
                        {
                            case 3:
                                if ((0x3ff000000000000L & l) != 0L)
                                {
                                    if (kind > 49)
                                        kind = 49;
                                    jjCheckNAdd(23);
                                }
                                else if ((0x100000200L & l) != 0L)
                                {
                                    if (kind > 23)
                                        kind = 23;
                                    jjCheckNAdd(4);
                                }
                                else if (character == 36)
                                {
                                    if (kind > 10)
                                        kind = 10;
                                    jjCheckNAddTwoStates(33, 34);
                                }
                                else if (character == 46)
                                    jjstateSet[jjnewStateCnt++] = 27;
                                else if (character == 45)
                                    jjCheckNAdd(23);
                                else if (character == 39)
                                    jjCheckNAddStates(62, 64);
                                else if (character == 34)
                                    jjCheckNAddStates(65, 67);
                                else if (character == 35)
                                    jjstateSet[jjnewStateCnt++] = 2;
                                break;
                            case 0:
                                if (character == 42)
                                    jjstateSet[jjnewStateCnt++] = 1;
                                break;
                            case 1:
                                if ((0xfffffff7ffffffffUL & (ulong) l) != 0L && kind > 13)
                                    kind = 13;
                                break;
                            case 2:
                                if (character == 42)
                                    jjstateSet[jjnewStateCnt++] = 0;
                                break;
                            case 4:
                                if ((0x100000200L & l) == 0L)
                                    break;
                                if (kind > 23)
                                    kind = 23;
                                jjCheckNAdd(4);
                                break;
                            case 5:
                                if (character == 34)
                                    jjCheckNAddStates(65, 67);
                                break;
                            case 6:
                                if ((0xfffffffbffffdbffUL & (ulong) l) != 0L)
                                    jjCheckNAddStates(65, 67);
                                break;
                            case 7:
                                if (character == 34 && kind > 24)
                                    kind = 24;
                                break;
                            case 9:
                                if ((0x8400000000L & l) != 0L)
                                    jjCheckNAddStates(65, 67);
                                break;
                            case 10:
                                if ((0xff000000000000L & l) != 0L)
                                    jjCheckNAddStates(68, 71);
                                break;
                            case 11:
                                if ((0xff000000000000L & l) != 0L)
                                    jjCheckNAddStates(65, 67);
                                break;
                            case 12:
                                if ((0xf000000000000L & l) != 0L)
                                    jjstateSet[jjnewStateCnt++] = 13;
                                break;
                            case 13:
                                if ((0xff000000000000L & l) != 0L)
                                    jjCheckNAdd(11);
                                break;
                            case 14:
                                if (character == 32)
                                    jjAddStates(72, 73);
                                break;
                            case 15:
                                if (character == 10)
                                    jjCheckNAddStates(65, 67);
                                break;
                            case 16:
                                if (character == 39)
                                    jjCheckNAddStates(62, 64);
                                break;
                            case 17:
                                if ((0xffffff7fffffdbffUL & (ulong) l) != 0L)
                                    jjCheckNAddStates(62, 64);
                                break;
                            case 19:
                                if (character == 32)
                                    jjAddStates(13, 14);
                                break;
                            case 20:
                                if (character == 10)
                                    jjCheckNAddStates(62, 64);
                                break;
                            case 21:
                                if (character == 39 && kind > 24)
                                    kind = 24;
                                break;
                            case 22:
                                if (character == 45)
                                    jjCheckNAdd(23);
                                break;
                            case 23:
                                if ((0x3ff000000000000L & l) == 0L)
                                    break;
                                if (kind > 49)
                                    kind = 49;
                                jjCheckNAdd(23);
                                break;
                            case 25:
                                if ((0x3ff200000000000L & l) == 0L)
                                    break;
                                if (kind > 56)
                                    kind = 56;
                                jjstateSet[jjnewStateCnt++] = 25;
                                break;
                            case 26:
                                if (character == 46)
                                    jjstateSet[jjnewStateCnt++] = 27;
                                break;
                            case 30:
                                if (character == 36 && kind > 10)
                                    kind = 10;
                                break;
                            case 32:
                                if (character == 36)
                                    jjCheckNAddTwoStates(33, 34);
                                break;
                            case 34:
                                if (character == 33 && kind > 11)
                                    kind = 11;
                                break;
                            case 35:
                                if (character != 36)
                                    break;
                                if (kind > 10)
                                    kind = 10;
                                jjCheckNAddTwoStates(33, 34);
                                break;
                            default:
                                break;
                        }
                    } while(i != startsAt);
                }
                else if (character < 128)
                {
                    long l = 1L << (character & 63);
                    do
                    {
                        switch(jjstateSet[--i])
                        {
                            case 3:
                                if ((0x7fffffe87fffffeL & l) != 0L)
                                {
                                    if (kind > 56)
                                        kind = 56;
                                    jjCheckNAdd(25);
                                }
                                else if (character == 92)
                                    jjCheckNAddStates(74, 77);
                                break;
                            case 1:
                                if (kind > 13)
                                    kind = 13;
                                break;
                            case 6:
                                if ((0xffffffffefffffffUL & (ulong) l) != 0L)
                                    jjCheckNAddStates(65, 67);
                                break;
                            case 8:
                                if (character == 92)
                                    jjAddStates(78, 82);
                                break;
                            case 9:
                                if ((0x14404410000000L & l) != 0L)
                                    jjCheckNAddStates(65, 67);
                                break;
                            case 17:
                                jjAddStates(62, 64);
                                break;
                            case 18:
                                if (character == 92)
                                    jjAddStates(13, 14);
                                break;
                            case 24:
                            case 25:
                                if ((0x7fffffe87fffffeL & l) == 0L)
                                    break;
                                if (kind > 56)
                                    kind = 56;
                                jjCheckNAdd(25);
                                break;
                            case 27:
                                if ((0x7fffffe07fffffeL & l) != 0L && kind > 57)
                                    kind = 57;
                                break;
                            case 28:
                                if (character == 92)
                                    jjCheckNAddStates(74, 77);
                                break;
                            case 29:
                                if (character == 92)
                                    jjCheckNAddTwoStates(29, 30);
                                break;
                            case 31:
                                if (character == 92)
                                    jjCheckNAddTwoStates(31, 32);
                                break;
                            case 33:
                                if (character == 92)
                                    jjAddStates(83, 84);
                                break;
                            default:
                                break;
                        }
                    } while(i != startsAt);
                }
                else
                {
                    int hiByte = (character >> 8);
                    int i1 = hiByte >> 6;
                    long l1 = 1L << (hiByte & 63);
                    int i2 = (character & 0xff) >> 6;
                    long l2 = 1L << (character & 63);
                    do
                    {
                        switch(jjstateSet[--i])
                        {
                            case 1:
                                if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 13)
                                    kind = 13;
                                break;
                            case 6:
                                if (jjCanMove_0(hiByte, i1, i2, l1, l2))
                                    jjAddStates(65, 67);
                                break;
                            case 17:
                                if (jjCanMove_0(hiByte, i1, i2, l1, l2))
                                    jjAddStates(62, 64);
                                break;
                            default:
                                break;
                        }
                    } while(i != startsAt);
                }
                if (kind != 0x7fffffff)
                {
                    jjmatchedKind = kind;
                    jjmatchedPos = curPos;
                    kind = 0x7fffffff;
                }
                ++curPos;
                if ((i = jjnewStateCnt) == (startsAt = 36 - (jjnewStateCnt = startsAt)))
                    return curPos;
                if (!input_stream.ReadChar())
                {
                    return curPos;
                }
            }
        }
ParserTokenManager