/// TheTarget - The Target that this machine was created for.
const Target &TheTarget;
+ MCAsmLexer *Lexer;
public:
virtual ~TargetAsmLexer();
const Target &getTarget() const { return TheTarget; }
+ /// InstallLexer - Set the lexer to get tokens from lower-level lexer \arg L.
+ void InstallLexer(MCAsmLexer &L) {
+ Lexer = &L;
+ }
+
+ MCAsmLexer *getLexer() {
+ return Lexer;
+ }
+
/// Lex - Consume the next token from the input stream and return it.
const AsmToken &Lex() {
return CurTok = LexToken();
#include "llvm/Target/TargetAsmLexer.h"
using namespace llvm;
-TargetAsmLexer::TargetAsmLexer(const Target &T) : TheTarget(T) {}
+TargetAsmLexer::TargetAsmLexer(const Target &T) : TheTarget(T), Lexer(NULL) {}
TargetAsmLexer::~TargetAsmLexer() {}
class X86AsmLexer : public TargetAsmLexer {
const MCAsmInfo &AsmInfo;
- MCAsmLexer *Lexer;
bool tentativeIsValid;
AsmToken tentativeToken;
const AsmToken &lexTentative() {
- tentativeToken = Lexer->Lex();
+ tentativeToken = getLexer()->Lex();
tentativeIsValid = true;
return tentativeToken;
}
return tentativeToken;
}
else {
- return Lexer->Lex();
+ return getLexer()->Lex();
}
}
}
public:
X86AsmLexer(const Target &T, const MCAsmInfo &MAI)
- : TargetAsmLexer(T), AsmInfo(MAI), Lexer(NULL), tentativeIsValid(false) {
- }
-
- void InstallLexer(MCAsmLexer &L) {
- Lexer = &L;
+ : TargetAsmLexer(T), AsmInfo(MAI), tentativeIsValid(false) {
}
};