]>
Commit | Line | Data |
---|---|---|
223e47cc LB |
1 | //===- AsmLexer.h - Lexer for Assembly Files --------------------*- C++ -*-===// |
2 | // | |
3 | // The LLVM Compiler Infrastructure | |
4 | // | |
5 | // This file is distributed under the University of Illinois Open Source | |
6 | // License. See LICENSE.TXT for details. | |
7 | // | |
8 | //===----------------------------------------------------------------------===// | |
9 | // | |
10 | // This class declares the lexer for assembly files. | |
11 | // | |
12 | //===----------------------------------------------------------------------===// | |
13 | ||
970d7e83 LB |
14 | #ifndef LLVM_MC_MCPARSER_ASMLEXER_H |
15 | #define LLVM_MC_MCPARSER_ASMLEXER_H | |
223e47cc LB |
16 | |
17 | #include "llvm/ADT/StringRef.h" | |
18 | #include "llvm/MC/MCParser/MCAsmLexer.h" | |
19 | #include "llvm/Support/DataTypes.h" | |
20 | #include <string> | |
21 | ||
22 | namespace llvm { | |
23 | class MemoryBuffer; | |
24 | class MCAsmInfo; | |
25 | ||
26 | /// AsmLexer - Lexer class for assembly files. | |
27 | class AsmLexer : public MCAsmLexer { | |
28 | const MCAsmInfo &MAI; | |
29 | ||
30 | const char *CurPtr; | |
1a4d82fc | 31 | StringRef CurBuf; |
223e47cc LB |
32 | bool isAtStartOfLine; |
33 | ||
34 | void operator=(const AsmLexer&) LLVM_DELETED_FUNCTION; | |
35 | AsmLexer(const AsmLexer&) LLVM_DELETED_FUNCTION; | |
36 | ||
37 | protected: | |
38 | /// LexToken - Read the next token and return its code. | |
1a4d82fc | 39 | AsmToken LexToken() override; |
223e47cc LB |
40 | |
41 | public: | |
42 | AsmLexer(const MCAsmInfo &MAI); | |
43 | ~AsmLexer(); | |
44 | ||
1a4d82fc | 45 | void setBuffer(StringRef Buf, const char *ptr = nullptr); |
223e47cc | 46 | |
1a4d82fc | 47 | StringRef LexUntilEndOfStatement() override; |
223e47cc LB |
48 | StringRef LexUntilEndOfLine(); |
49 | ||
1a4d82fc JJ |
50 | const AsmToken peekTok(bool ShouldSkipSpace = true) override; |
51 | ||
52 | bool isAtStartOfComment(const char *Ptr); | |
223e47cc LB |
53 | bool isAtStatementSeparator(const char *Ptr); |
54 | ||
55 | const MCAsmInfo &getMAI() const { return MAI; } | |
56 | ||
57 | private: | |
58 | int getNextChar(); | |
59 | AsmToken ReturnError(const char *Loc, const std::string &Msg); | |
60 | ||
61 | AsmToken LexIdentifier(); | |
62 | AsmToken LexSlash(); | |
63 | AsmToken LexLineComment(); | |
64 | AsmToken LexDigit(); | |
65 | AsmToken LexSingleQuote(); | |
66 | AsmToken LexQuote(); | |
67 | AsmToken LexFloatLiteral(); | |
1a4d82fc | 68 | AsmToken LexHexFloatLiteral(bool NoIntDigits); |
223e47cc LB |
69 | }; |
70 | ||
71 | } // end namespace llvm | |
72 | ||
73 | #endif |