diff options
| author | Yong He <yonghe@outlook.com> | 2019-02-05 18:47:55 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-02-05 18:47:55 -0800 |
| commit | c6870dcbf6f720bfbfe7e38f7d9625d69bedde3d (patch) | |
| tree | a81b861c6cbd345e323a1f5ee3bc4eec61646b96 /source/slang/lexer.cpp | |
| parent | 13d7e34d8be4316c59bd3d00a1e5526215db6fa4 (diff) | |
| parent | 3d62beab61490ce3e7ed60b48fd6a11c8eeb44ad (diff) | |
Merge branch 'master' into fix-nested-type-conformances
Diffstat (limited to 'source/slang/lexer.cpp')
| -rw-r--r-- | source/slang/lexer.cpp | 33 |
1 files changed, 12 insertions, 21 deletions
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; } |
