X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Floader%2FTokenizer.cpp;h=cdabe01eed9b8a07c654a2cd068620b953e3f3f9;hb=af9e0b57dac45dc5591f16fb34236b1356cda8a2;hp=2b87d9c5be43077c186418d75df1cbf041ae93d4;hpb=2aba2da49a94fac57c7d2a469455102cf194957d;p=l2e.git diff --git a/src/loader/Tokenizer.cpp b/src/loader/Tokenizer.cpp index 2b87d9c..cdabe01 100644 --- a/src/loader/Tokenizer.cpp +++ b/src/loader/Tokenizer.cpp @@ -12,7 +12,7 @@ namespace loader { bool Tokenizer::HasMore() { - return in; + return std::istream::sentry(in); } void Tokenizer::Putback(const Token &t) { @@ -24,6 +24,14 @@ void Tokenizer::Putback(const Token &t) { } } +const Tokenizer::Token &Tokenizer::Peek() { + if (!isPutback) { + putback = GetNext(); + isPutback = true; + } + return putback; +} + Tokenizer::Token Tokenizer::GetNext() { if (isPutback) { isPutback = false; @@ -46,6 +54,8 @@ Tokenizer::Token Tokenizer::ReadToken() { case Token::COMMA: case Token::BRACKET_OPEN: case Token::BRACKET_CLOSE: + case Token::PARENTHESIS_OPEN: + case Token::PARENTHESIS_CLOSE: return Token ((Token::Type) c); case '+': case '-': case '0': case '1': case '2': case '3': case '4':