Newer
Older
ContainerFromStringLexer::Token ContainerFromStringLexer::next(ext::istream& input) {
token.type = TokenType::ERROR;
token.value = "";
token.raw = "";
character = input.get();
if ( input.eof ( ) || character == EOF ) {
token.type = TokenType::TEOF;
return token;
} else if ( ext::isspace ( character ) ) {
token.value += character;
token.raw += character;
return token;
token.value += character;
token.raw += character;
} else if(character == '[') {
token.type = TokenType::VECTOR_BEGIN;
token.value += character;
token.raw += character;
return token;
} else if(character == ']') {
token.type = TokenType::VECTOR_END;
token.value += character;
token.raw += character;
return token;
token.type = TokenType::PAIR_BEGIN;
token.value += character;
token.raw += character;
return token;
token.type = TokenType::PAIR_END;
token.value += character;
token.raw += character;
return token;
} else if(character == ',') {
token.type = TokenType::COMMA;
token.value += character;
token.raw += character;
return token;
input.clear ( );
input.unget ( );
putback(input, token);
token.type = TokenType::ERROR;
return token;