[Alignment][NFC] Use Align with TargetLowering::setMinFunctionAlignment
[llvm-core.git] / include / llvm / MC / MCParser / AsmLexer.h
blobb7294493b2f801992633109c9f3bb720e678a07d
1 //===- AsmLexer.h - Lexer for Assembly Files --------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This class declares the lexer for assembly files.
11 //===----------------------------------------------------------------------===//
13 #ifndef LLVM_MC_MCPARSER_ASMLEXER_H
14 #define LLVM_MC_MCPARSER_ASMLEXER_H
16 #include "llvm/ADT/StringRef.h"
17 #include "llvm/MC/MCParser/MCAsmLexer.h"
18 #include <string>
20 namespace llvm {
22 class MCAsmInfo;
24 /// AsmLexer - Lexer class for assembly files.
25 class AsmLexer : public MCAsmLexer {
26 const MCAsmInfo &MAI;
28 const char *CurPtr = nullptr;
29 StringRef CurBuf;
30 bool IsAtStartOfLine = true;
31 bool IsAtStartOfStatement = true;
32 bool IsPeeking = false;
34 protected:
35 /// LexToken - Read the next token and return its code.
36 AsmToken LexToken() override;
38 public:
39 AsmLexer(const MCAsmInfo &MAI);
40 AsmLexer(const AsmLexer &) = delete;
41 AsmLexer &operator=(const AsmLexer &) = delete;
42 ~AsmLexer() override;
44 void setBuffer(StringRef Buf, const char *ptr = nullptr);
46 StringRef LexUntilEndOfStatement() override;
48 size_t peekTokens(MutableArrayRef<AsmToken> Buf,
49 bool ShouldSkipSpace = true) override;
51 const MCAsmInfo &getMAI() const { return MAI; }
53 private:
54 bool isAtStartOfComment(const char *Ptr);
55 bool isAtStatementSeparator(const char *Ptr);
56 int getNextChar();
57 AsmToken ReturnError(const char *Loc, const std::string &Msg);
59 AsmToken LexIdentifier();
60 AsmToken LexSlash();
61 AsmToken LexLineComment();
62 AsmToken LexDigit();
63 AsmToken LexSingleQuote();
64 AsmToken LexQuote();
65 AsmToken LexFloatLiteral();
66 AsmToken LexHexFloatLiteral(bool NoIntDigits);
68 StringRef LexUntilEndOfLine();
71 } // end namespace llvm
73 #endif // LLVM_MC_MCPARSER_ASMLEXER_H