AsmHighlighter.Lexer.Scanner.Scan C# (CSharp) Method

Scan() private method

private Scan ( ) : int
return int
        int Scan()
        {
                for (; ; )
                {
                    int next;              // next state to enter                   
#if BACKUP
                    bool inAccept = false; // inAccept ==> current state is an accept state
                    Result rslt = Result.noMatch;
                    // skip "idle" transitions
#if LEFTANCHORS
                    if (lineStartNum == cNum && NextState(anchorState[CurrentSc]) != currentStart)
                        state = anchorState[CurrentSc];
                    else {
                        state = currentStart;
                        while (NextState() == state) {
                            GetChr();
                            if (lineStartNum == cNum) {
                                int anchor = anchorState[CurrentSc];
                                if (NextState(anchor) != state) {
                                    state = anchor; 
                                    break;
                                }
                            }
                        }
                    }
#else // !LEFTANCHORS
                    state = currentStart;
                    while (NextState() == state) 
                        GetChr(); // skip "idle" transitions
#endif // LEFTANCHORS
                    MarkToken();
                    
                    while ((next = NextState()) != currentStart)
                        if (inAccept && next > maxAccept) // need to prepare backup data
                        {
                            Context ctx = new Context();
                            rslt = Recurse2(ctx, next);
                            if (rslt == Result.noMatch) RestoreStateAndPos(ctx);
                            // else if (rslt == Result.contextFound) RestorePos(ctx);
                            break;
                        }
                        else
                        {
                            state = next;
                            GetChr();
                            if (state <= maxAccept) inAccept = true;
                        }
#else // !BACKUP
#if LEFTANCHORS
                    if (lineStartNum == cNum) {
                        int anchor = anchorState[CurrentSc];
                        if (NextState(anchor) != currentStart)
                            state = anchor;
                    }
                    else {
                        state = currentStart;
                        while (NextState() == state) {
                            GetChr();
                            if (lineStartNum == cNum) {
                                anchor = anchorState[CurrentSc];
                                if (NextState(anchor) != state) {
                                    state = anchor;
                                    break;
                                }
                            }
                        }
                    }
#else // !LEFTANCHORS
                    state = currentStart;
                    while (NextState() == state) 
                        GetChr(); // skip "idle" transitions
#endif // LEFTANCHORS
                    MarkToken();
                    // common code
                    while ((next = NextState()) != currentStart)
                    {
                        state = next;
                        GetChr();
                    }
#endif // BACKUP
                    if (state > maxAccept) 
                        state = currentStart;
                    else
                    {
                        MarkEnd();
#region ActionSwitch
#pragma warning disable 162
    switch (state)
    {
        case eofNum:
            return (int)Tokens.EOF;
        case 1:
/* Ignore */
            break;
        case 2:
return (int)AsmHighlighterToken.COMMENT_LINE;
            break;
        case 3:
        case 15:
        case 16:
return (int)AsmHighlighterToken.UNDEFINED;
            break;
        case 4:
        case 5:
        case 32:
return (int)AsmHighlighterTokenProvider.GetTokenFromIdentifier(yytext);
            break;
        case 6:
return (int)AsmHighlighterToken.LEFT_PARENTHESIS;
            break;
        case 7:
        case 12:
return (int)AsmHighlighterToken.NUMBER;
            break;
        case 8:
return (int)AsmHighlighterToken.RIGHT_PARENTHESIS;
            break;
        case 9:
return (int)AsmHighlighterTokenProvider.GetTokenFromIdentifier(yytext);
            break;
        case 10:
return (int)AsmHighlighterTokenProvider.GetTokenFromIdentifier(yytext);
            break;
        case 11:
return (int)AsmHighlighterTokenProvider.GetTokenFromIdentifier(yytext);
            break;
        case 13:
return (int)AsmHighlighterToken.OPERATOR;
            break;
        case 14:
return (int)AsmHighlighterToken.OPERATOR;
            break;
        case 17:
return (int)AsmHighlighterToken.DELIMITER;
            break;
        case 18:
return (int)AsmHighlighterToken.LEFT_SQUARE_BRACKET;
            break;
        case 19:
return (int)AsmHighlighterToken.RIGHT_SQUARE_BRACKET;
            break;
        case 20:
return (int)AsmHighlighterToken.OPERATOR;
            break;
        case 21:
return (int)AsmHighlighterToken.OPERATOR;
            break;
        case 22:
return (int)AsmHighlighterToken.STRING_LITERAL;
            break;
        case 23:
return (int)AsmHighlighterToken.STRING_LITERAL;
            break;
        case 24:
        case 30:
        case 31:
return (int)AsmHighlighterToken.FLOAT;
            break;
        case 25:
return (int)AsmHighlighterToken.NUMBER;
            break;
        case 26:
return (int)AsmHighlighterToken.NUMBER;
            break;
        case 27:
return (int)AsmHighlighterToken.NUMBER;
            break;
        case 28:
        case 29:
return (int)AsmHighlighterToken.FLOAT;
            break;
        case 33:
return (int)AsmHighlighterTokenProvider.GetTokenFromIdentifier(yytext);
            break;
        case 34:
return (int)AsmHighlighterTokenProvider.GetTokenFromIdentifier(yytext);
            break;
        default:
            break;
    }
#pragma warning restore 162
#endregion
                    }
                }
        }