|  | //===- AsmLexer.h - Lexer for Assembly Files --------------------*- C++ -*-===// | 
|  | // | 
|  | //                     The LLVM Compiler Infrastructure | 
|  | // | 
|  | // This file is distributed under the University of Illinois Open Source | 
|  | // License. See LICENSE.TXT for details. | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  | // | 
|  | // This class declares the lexer for assembly files. | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  |  | 
|  | #ifndef ASMLEXER_H | 
|  | #define ASMLEXER_H | 
|  |  | 
|  | #include "llvm/ADT/StringRef.h" | 
|  | #include "llvm/MC/MCAsmLexer.h" | 
|  | #include "llvm/MC/MCAsmInfo.h" | 
|  | #include "llvm/System/DataTypes.h" | 
|  | #include <string> | 
|  | #include <cassert> | 
|  |  | 
|  | namespace llvm { | 
|  | class MemoryBuffer; | 
|  | class SourceMgr; | 
|  | class SMLoc; | 
|  | class MCAsmInfo; | 
|  |  | 
|  | /// AsmLexer - Lexer class for assembly files. | 
|  | class AsmLexer : public MCAsmLexer { | 
|  | SourceMgr &SrcMgr; | 
|  | const MCAsmInfo &MAI; | 
|  |  | 
|  | const char *CurPtr; | 
|  | const MemoryBuffer *CurBuf; | 
|  |  | 
|  | const char *TokStart; | 
|  |  | 
|  | /// 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, const MCAsmInfo &MAI); | 
|  | ~AsmLexer(); | 
|  |  | 
|  | 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(); | 
|  | AsmToken ReturnError(const char *Loc, const std::string &Msg); | 
|  |  | 
|  | AsmToken LexIdentifier(); | 
|  | AsmToken LexSlash(); | 
|  | AsmToken LexLineComment(); | 
|  | AsmToken LexDigit(); | 
|  | AsmToken LexQuote(); | 
|  | }; | 
|  |  | 
|  | } // end namespace llvm | 
|  |  | 
|  | #endif |