Bike.Parser.Lexer.NextToken C# (CSharp) Method

NextToken() public method

public NextToken ( ) : Token
return Token
        public Token NextToken()
        {
            while (currentChar != Eof)
            {
                currentLocation = new SourceLocation(filePath, currentLineIndex, currentColumnIndex);
                switch ((char)currentChar)
                {
                    case '\r':
                    case '\n':
                    case ' ':
                    case '\t':
                        Whitespace();
                        continue;
                    case '#':
                        Comment();
                        continue;
                    case '=':
                        return Equal();
                    case '<':
                        return LessThan();
                    case '>':
                        return GreaterThan();
                    case '*':
                        return Star();
                    case '/':
                        return Slash();
                    case '%':
                        return Percent();
                    case '!':
                        return Bang();
                    case '+':
                        return Plus();
                    case '-':
                        return Minus();
                    case '|':
                        return Pipe();
                    case '&':
                        return Ampersand();
                    case ',':
                        Match(',');
                        return Token(TokenType.Comma, ",");
                    case ';':
                        Match(';');
                        return Token(TokenType.SemiColon, ";");
                    case '.':
                        Match('.');
                        return Token(TokenType.Dot, ".");
                    case '?':
                        Match('?');
                        return Token(TokenType.Question, "?");
                    case ':':
                        Match(':');
                        return Token(TokenType.Colon, ":");
                    case '[':
                        Match('[');
                        return Token(TokenType.LeftBracket, "[");
                    case ']':
                        Match(']');
                        return Token(TokenType.RightBracket, "]");
                    case '(':
                        Match('(');
                        return Token(TokenType.LeftParen, "(");
                    case ')':
                        Match(')');
                        return Token(TokenType.RightParen, ")");
                    case '{':
                        Match('{');
                        return Token(TokenType.LeftBrace, "{");
                    case '}':
                        Match('}');
                        return Token(TokenType.RightBrace, "}");
                    case '0':
                    case '1':
                    case '2':
                    case '3':
                    case '4':
                    case '5':
                    case '6':
                    case '7':
                    case '8':
                    case '9':
                        return Number();
                    case '\'':
                    case '"':
                        return String();
                    default:
                        if (Char.IsLetter((char) currentChar) ||
                            currentChar == '_' ||
                            currentChar == '$')
                            return Identifier();
                        throw Error("Invalid character: " + currentChar);
                }
            }
            return Token(TokenType.Eof, "<EOF>");
        }