BACnet.SchemaParser.Lexer.Next C# (CSharp) Method

Next() public method

Reads the next token from the lexer
public Next ( ) : Token
return Token
        public Token Next()
        {
            retry:
            if (_eof())
                return null;

            char c = _peekChar();

            if (Char.IsWhiteSpace(c))
            {
                _skipWhiteSpace();
                goto retry;
            }

            if(c == '–')
            {
                // long dash, skip
                _readChar();
                goto retry;
            }

            if(Char.IsSymbol(c) || Char.IsPunctuation(c))
            {
                string symbol = _readSymbolString();
                return _resolve(_symbolTypes, symbol, true);
            }

            if(Char.IsLetter(c))
            {
                string ident = _readIdentifierString();
                var token = _resolve(_identifierTypes, ident, false);
                if (token == null)
                    token = new Token(TokenType.Identifier, ident);
                return token;
            }

            if (Char.IsDigit(c))
            {
                string number = _readInteger();
                return new Token(TokenType.Integer, number);
            }

            throw new InvalidDataException(c.ToString());
        }

Usage Example

示例#1
0
 /// <summary>
 /// Retrieves the next token without consuming it
 /// </summary>
 /// <returns>The next token</returns>
 private Token _peek()
 {
     if (!_hasToken)
     {
         _token    = _lexer.Next();
         _hasToken = true;
     }
     return(_token);
 }