Antlr4.StringTemplate.Compiler.TemplateLexer.NextTokenInside C# (CSharp) Метод

NextTokenInside() защищенный Метод

protected NextTokenInside ( ) : IToken
Результат IToken
        protected virtual IToken NextTokenInside()
        {
            while (true)
            {
                switch (c)
                {
                case ' ':
                case '\t':
                case '\n':
                case '\r':
                    Consume();
                    return SkipToken;

                case '.':
                    Consume();
                    if (input.LA(1) == '.' && input.LA(2) == '.')
                    {
                        Consume();
                        Match('.');
                        return NewToken(ELLIPSIS);
                    }
                    return NewToken(DOT);

                case ',':
                    Consume();
                    return NewToken(COMMA);

                case ':':
                    Consume();
                    return NewToken(COLON);

                case ';':
                    Consume();
                    return NewToken(SEMI);

                case '(':
                    Consume();
                    return NewToken(LPAREN);

                case ')':
                    Consume();
                    return NewToken(RPAREN);

                case '[':
                    Consume();
                    return NewToken(LBRACK);

                case ']':
                    Consume();
                    return NewToken(RBRACK);

                case '=':
                    Consume();
                    return NewToken(EQUALS);

                case '!':
                    Consume();
                    return NewToken(BANG);

                case '@':
                    Consume();
                    if (c == 'e' && input.LA(2) == 'n' && input.LA(3) == 'd')
                    {
                        Consume();
                        Consume();
                        Consume();
                        return NewToken(REGION_END);
                    }
                    return NewToken(AT);

                case '"':
                    return MatchString();

                case '&':
                    Consume();
                    Match('&');
                    return NewToken(AND); // &&

                case '|':
                    Consume();
                    Match('|');
                    return NewToken(OR); // ||

                case '{':
                    return MatchSubTemplate();

                default:
                    if (c == delimiterStopChar)
                    {
                        Consume();
                        scanningInsideExpr = false;
                        return NewToken(RDELIM);
                    }

                    if (IsIDStartLetter(c))
                    {
                        IToken id = MatchIdentifier();
                        switch (id.Text ?? string.Empty)
                        {
                        case "if":
                            return NewToken(IF);
                        case "endif":
                            return NewToken(ENDIF);
                        case "else":
                            return NewToken(ELSE);
                        case "elseif":
                            return NewToken(ELSEIF);
                        case "super":
                            return NewToken(SUPER);
                        case "true":
                            return NewToken(TRUE);
                        case "false":
                            return NewToken(FALSE);
                        default:
                            return id;
                        }
                    }

                    RecognitionException re = new NoViableAltException(string.Empty, 0, 0, input);
                    re.Line = startLine;
                    re.CharPositionInLine = startCharPositionInLine;
                    errMgr.LexerError(input.SourceName, string.Format("invalid character '{0}'", GetCharString(c)), templateToken, re);
                    if (c == EOF)
                        return NewToken(EOF_TYPE);

                    Consume();
                    break;
                }
            }
        }