diff options
Diffstat (limited to 'tools/llvm-mc/AsmLexer.h')
| -rw-r--r-- | tools/llvm-mc/AsmLexer.h | 95 | 
1 files changed, 28 insertions, 67 deletions
diff --git a/tools/llvm-mc/AsmLexer.h b/tools/llvm-mc/AsmLexer.h index 6360b1280ce2..0696abc887f5 100644 --- a/tools/llvm-mc/AsmLexer.h +++ b/tools/llvm-mc/AsmLexer.h @@ -14,6 +14,9 @@  #ifndef ASMLEXER_H  #define ASMLEXER_H +#include "llvm/ADT/StringRef.h" +#include "llvm/MC/MCAsmLexer.h" +#include "llvm/MC/MCAsmInfo.h"  #include "llvm/Support/DataTypes.h"  #include <string>  #include <cassert> @@ -22,95 +25,53 @@ namespace llvm {  class MemoryBuffer;  class SourceMgr;  class SMLoc; - -namespace asmtok { -  enum TokKind { -    // Markers -    Eof, Error, - -    // String values. -    Identifier, -    Register, -    String, -     -    // Integer values. -    IntVal, -     -    // No-value. -    EndOfStatement, -    Colon, -    Plus, Minus, Tilde, -    Slash,    // '/' -    LParen, RParen, -    Star, Comma, Dollar, Equal, EqualEqual, -     -    Pipe, PipePipe, Caret,  -    Amp, AmpAmp, Exclaim, ExclaimEqual, Percent,  -    Less, LessEqual, LessLess, LessGreater, -    Greater, GreaterEqual, GreaterGreater -  }; -} +class MCAsmInfo;  /// AsmLexer - Lexer class for assembly files. -class AsmLexer { +class AsmLexer : public MCAsmLexer {    SourceMgr &SrcMgr; +  const MCAsmInfo &MAI;    const char *CurPtr;    const MemoryBuffer *CurBuf; -  // A llvm::StringSet<>, which provides uniqued and null-terminated strings. -  void *TheStringSet; -  // Information about the current token.    const char *TokStart; -  asmtok::TokKind CurKind; -  const char *CurStrVal;  // This is valid for Identifier. -  int64_t CurIntVal; -   -  /// CurBuffer - This is the current buffer index we're lexing from as managed -  /// by the SourceMgr object. + +  /// This is the current buffer index we're lexing from as managed by the +  /// SourceMgr object.    int CurBuffer;    void operator=(const AsmLexer&); // DO NOT IMPLEMENT    AsmLexer(const AsmLexer&);       // DO NOT IMPLEMENT + +protected: +  /// LexToken - Read the next token and return its code. +  virtual AsmToken LexToken(); +  public: -  AsmLexer(SourceMgr &SrcMgr); +  AsmLexer(SourceMgr &SrcMgr, const MCAsmInfo &MAI);    ~AsmLexer(); -  asmtok::TokKind Lex() { -    return CurKind = LexToken(); -  } -   -  asmtok::TokKind getKind() const { return CurKind; } -  bool is(asmtok::TokKind K) const { return CurKind == K; } -  bool isNot(asmtok::TokKind K) const { return CurKind != K; } -   -  const char *getCurStrVal() const { -    assert((CurKind == asmtok::Identifier || CurKind == asmtok::Register || -            CurKind == asmtok::String) && -           "This token doesn't have a string value"); -    return CurStrVal; -  } -  int64_t getCurIntVal() const { -    assert(CurKind == asmtok::IntVal && "This token isn't an integer"); -    return CurIntVal; -  } -      SMLoc getLoc() const; +  StringRef LexUntilEndOfStatement(); + +  bool isAtStartOfComment(char Char); + +  /// EnterIncludeFile - Enter the specified file. This returns true on failure. +  bool EnterIncludeFile(const std::string &Filename); +      void PrintMessage(SMLoc Loc, const std::string &Msg, const char *Type) const;  private:    int getNextChar(); -  asmtok::TokKind ReturnError(const char *Loc, const std::string &Msg); +  AsmToken ReturnError(const char *Loc, const std::string &Msg); -  /// LexToken - Read the next token and return its code. -  asmtok::TokKind LexToken(); -  asmtok::TokKind LexIdentifier(); -  asmtok::TokKind LexPercent(); -  asmtok::TokKind LexSlash(); -  asmtok::TokKind LexLineComment(); -  asmtok::TokKind LexDigit(); -  asmtok::TokKind LexQuote(); +  AsmToken LexIdentifier(); +  AsmToken LexSlash(); +  AsmToken LexLineComment(); +  AsmToken LexDigit(); +  AsmToken LexQuote();  };  } // end namespace llvm  | 
