From c198eaba351850fcb3d82c2f5117efc0e2e2bf1e Mon Sep 17 00:00:00 2001 From: Yong He Date: Tue, 5 Feb 2019 14:20:14 -0800 Subject: Allow generics to close with >> --- source/slang/lexer.cpp | 33 ++++++++++++--------------------- 1 file changed, 12 insertions(+), 21 deletions(-) (limited to 'source/slang/lexer.cpp') diff --git a/source/slang/lexer.cpp b/source/slang/lexer.cpp index 3d87dd7ea..b6745b15f 100644 --- a/source/slang/lexer.cpp +++ b/source/slang/lexer.cpp @@ -12,7 +12,7 @@ namespace Slang { - static Token GetEndOfFileToken() + Token TokenReader::GetEndOfFileToken() { return Token(TokenType::EndOfFile, UnownedStringSlice::fromLiteral(""), SourceLoc()); } @@ -41,31 +41,19 @@ namespace Slang {} - Token TokenReader::PeekToken() const + Token& TokenReader::PeekToken() { - if (!mCursor) - return GetEndOfFileToken(); - - Token token = *mCursor; - if (mCursor == mEnd) - token.type = TokenType::EndOfFile; - return token; + return nextToken; } TokenType TokenReader::PeekTokenType() const { - if (mCursor == mEnd) - return TokenType::EndOfFile; - SLANG_ASSERT(mCursor); - return mCursor->type; + return nextToken.type; } SourceLoc TokenReader::PeekLoc() const { - if (!mCursor) - return SourceLoc(); - SLANG_ASSERT(mCursor); - return mCursor->loc; + return nextToken.loc; } Token TokenReader::AdvanceToken() @@ -73,11 +61,14 @@ namespace Slang if (!mCursor) return GetEndOfFileToken(); - Token token = *mCursor; - if (mCursor == mEnd) - token.type = TokenType::EndOfFile; - else + Token token = nextToken; + if (mCursor < mEnd) + { mCursor++; + nextToken = *mCursor; + } + else + nextToken.type = TokenType::EndOfFile; return token; } -- cgit v1.2.3