mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-26 14:25:18 +00:00
[AsmParser] Allow tokens to be put back in to the token stream.
Differential Revision: http://reviews.llvm.org/D14252 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252432 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8b804197e0
commit
84774ba424
@ -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.
|
||||
|
@ -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() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user