[llvm] r252432 - [AsmParser] Allow tokens to be put back in to the token stream.
Colin LeMahieu via llvm-commits
llvm-commits at lists.llvm.org
Sun Nov 8 15:48:23 PST 2015
Author: colinl
Date: Sun Nov 8 17:48:23 2015
New Revision: 252432
URL: http://llvm.org/viewvc/llvm-project?rev=252432&view=rev
Log:
[AsmParser] Allow tokens to be put back in to the token stream.
Differential Revision: http://reviews.llvm.org/D14252
Modified:
llvm/trunk/include/llvm/MC/MCParser/MCAsmLexer.h
llvm/trunk/lib/MC/MCParser/MCAsmLexer.cpp
Modified: llvm/trunk/include/llvm/MC/MCParser/MCAsmLexer.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCParser/MCAsmLexer.h?rev=252432&r1=252431&r2=252432&view=diff
==============================================================================
--- llvm/trunk/include/llvm/MC/MCParser/MCAsmLexer.h (original)
+++ llvm/trunk/include/llvm/MC/MCParser/MCAsmLexer.h Sun Nov 8 17:48:23 2015
@@ -118,7 +118,7 @@ public:
/// lexers.
class MCAsmLexer {
/// The current token, stored in the base class for faster access.
- AsmToken CurTok;
+ SmallVector<AsmToken, 1> CurTok;
/// The location and description of the current error
SMLoc ErrLoc;
@@ -148,7 +148,15 @@ public:
/// The lexer will continuosly return the end-of-file token once the end of
/// the main input file has been reached.
const AsmToken &Lex() {
- return CurTok = LexToken();
+ assert(!CurTok.empty());
+ CurTok.erase(CurTok.begin());
+ if (CurTok.empty())
+ CurTok.emplace_back(LexToken());
+ return CurTok.front();
+ }
+
+ void UnLex(AsmToken const &Token) {
+ CurTok.insert(CurTok.begin(), Token);
}
virtual StringRef LexUntilEndOfStatement() = 0;
@@ -158,7 +166,7 @@ public:
/// Get the current (last) lexed token.
const AsmToken &getTok() const {
- return CurTok;
+ return CurTok[0];
}
/// Look ahead at the next token to be lexed.
Modified: llvm/trunk/lib/MC/MCParser/MCAsmLexer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCParser/MCAsmLexer.cpp?rev=252432&r1=252431&r2=252432&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCParser/MCAsmLexer.cpp (original)
+++ llvm/trunk/lib/MC/MCParser/MCAsmLexer.cpp Sun Nov 8 17:48:23 2015
@@ -12,8 +12,8 @@
using namespace llvm;
-MCAsmLexer::MCAsmLexer() : CurTok(AsmToken::Error, StringRef()),
- TokStart(nullptr), SkipSpace(true) {
+MCAsmLexer::MCAsmLexer() : TokStart(nullptr), SkipSpace(true) {
+ CurTok.emplace_back(AsmToken::Error, StringRef());
}
MCAsmLexer::~MCAsmLexer() {
More information about the llvm-commits
mailing list