/// <summary> /// /// </summary> /// <returns></returns> private TokenType NextTokenAny() { TokenType nextTokenType = TokenType.Eof; char[] chars = new char[1]; _currentToken = String.Empty; _currentTokenType = TokenType.Eof; int finished = _reader.Read(chars, 0, 1); bool isNumber = false; bool isWord = false; byte[] ba = null; Encoding AE = PlatformUtilityEx.GetASCIIEncoding(); char[] ascii = null; Char currentCharacter; Char nextCharacter; while (finished != 0) { // convert int to char ba = new Byte[] { (byte)_reader.Peek() }; ascii = AE.GetChars(ba); currentCharacter = chars[0]; nextCharacter = ascii[0]; _currentTokenType = GetType(currentCharacter); nextTokenType = GetType(nextCharacter); // handling of words with _ if (isWord && currentCharacter == '_') { _currentTokenType = TokenType.Word; } // handing of words ending in numbers if (isWord && _currentTokenType == TokenType.Number) { _currentTokenType = TokenType.Word; } if (_currentTokenType == TokenType.Word && nextCharacter == '_') { // enable words with _ inbetween nextTokenType = TokenType.Word; isWord = true; } if (_currentTokenType == TokenType.Word && nextTokenType == TokenType.Number) { // enable words ending with numbers nextTokenType = TokenType.Word; isWord = true; } // handle negative numbers if (currentCharacter == '-' && nextTokenType == TokenType.Number && isNumber == false) { _currentTokenType = TokenType.Number; nextTokenType = TokenType.Number; } // this handles numbers with a decimal point if (isNumber && nextTokenType == TokenType.Number && currentCharacter == '.') { _currentTokenType = TokenType.Number; } if (_currentTokenType == TokenType.Number && nextCharacter == '.' && isNumber == false) { nextTokenType = TokenType.Number; isNumber = true; } _colNumber++; if (_currentTokenType == TokenType.Eol) { _lineNumber++; _colNumber = 1; } _currentToken = _currentToken + currentCharacter; if (_currentTokenType != nextTokenType) { finished = 0; } else if (_currentTokenType == TokenType.Symbol && currentCharacter != '-') { finished = 0; } else { finished = _reader.Read(chars, 0, 1); } } return(_currentTokenType); }