diff options
| author | Yong He <yonghe@outlook.com> | 2019-02-05 18:46:04 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-02-05 18:46:04 -0800 |
| commit | 3d62beab61490ce3e7ed60b48fd6a11c8eeb44ad (patch) | |
| tree | a3971c4c6217914e9dc4c12917f26a7eb6ac28b2 /source/slang/lexer.cpp | |
| parent | 60cc9f24c4bec54561bea873ee943aa3d0973dc2 (diff) | |
| parent | a39fd3d3f67df28b9206c9f08bc7d046f9b0db59 (diff) | |
Merge pull request #830 from csyonghe/gencloser
Allow generics to close with >>
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; } |
