LLVM
15.0.0git
|
Generic assembler parser interface, for use by target specific assembly parsers. More...
#include "llvm/MC/MCParser/MCAsmParser.h"
Classes | |
struct | MCPendingError |
Public Types | |
using | DirectiveHandler = bool(*)(MCAsmParserExtension *, StringRef, SMLoc) |
using | ExtensionDirectiveHandler = std::pair< MCAsmParserExtension *, DirectiveHandler > |
Public Member Functions | |
MCAsmParser (const MCAsmParser &)=delete | |
MCAsmParser & | operator= (const MCAsmParser &)=delete |
virtual | ~MCAsmParser () |
virtual void | addDirectiveHandler (StringRef Directive, ExtensionDirectiveHandler Handler)=0 |
virtual void | addAliasForDirective (StringRef Directive, StringRef Alias)=0 |
virtual SourceMgr & | getSourceManager ()=0 |
virtual MCAsmLexer & | getLexer ()=0 |
const MCAsmLexer & | getLexer () const |
virtual MCContext & | getContext ()=0 |
virtual MCStreamer & | getStreamer ()=0 |
Return the output streamer for the assembler. More... | |
MCTargetAsmParser & | getTargetParser () const |
void | setTargetParser (MCTargetAsmParser &P) |
virtual unsigned | getAssemblerDialect () |
virtual void | setAssemblerDialect (unsigned i) |
bool | getShowParsedOperands () const |
void | setShowParsedOperands (bool Value) |
virtual bool | Run (bool NoInitialTextSection, bool NoFinalize=false)=0 |
Run the parser on the input source buffer. More... | |
virtual void | setParsingMSInlineAsm (bool V)=0 |
virtual bool | isParsingMSInlineAsm ()=0 |
virtual bool | discardLTOSymbol (StringRef) const |
virtual bool | isParsingMasm () const |
virtual bool | defineMacro (StringRef Name, StringRef Value) |
virtual bool | lookUpField (StringRef Name, AsmFieldInfo &Info) const |
virtual bool | lookUpField (StringRef Base, StringRef Member, AsmFieldInfo &Info) const |
virtual bool | lookUpType (StringRef Name, AsmTypeInfo &Info) const |
virtual bool | parseMSInlineAsm (std::string &AsmString, unsigned &NumOutputs, unsigned &NumInputs, SmallVectorImpl< std::pair< void *, bool >> &OpDecls, SmallVectorImpl< std::string > &Constraints, SmallVectorImpl< std::string > &Clobbers, const MCInstrInfo *MII, const MCInstPrinter *IP, MCAsmParserSemaCallback &SI)=0 |
Parse MS-style inline assembly. More... | |
virtual void | Note (SMLoc L, const Twine &Msg, SMRange Range=None)=0 |
Emit a note at the location L , with the message Msg . More... | |
virtual bool | Warning (SMLoc L, const Twine &Msg, SMRange Range=None)=0 |
Emit a warning at the location L , with the message Msg . More... | |
bool | Error (SMLoc L, const Twine &Msg, SMRange Range=None) |
Return an error at the location L , with the message Msg . More... | |
virtual bool | printError (SMLoc L, const Twine &Msg, SMRange Range=None)=0 |
Emit an error at the location L , with the message Msg . More... | |
bool | hasPendingError () |
bool | printPendingErrors () |
void | clearPendingErrors () |
bool | addErrorSuffix (const Twine &Suffix) |
virtual const AsmToken & | Lex ()=0 |
Get the next AsmToken in the stream, possibly handling file inclusion first. More... | |
const AsmToken & | getTok () const |
Get the current AsmToken from the stream. More... | |
bool | TokError (const Twine &Msg, SMRange Range=None) |
Report an error at the current lexer location. More... | |
bool | parseTokenLoc (SMLoc &Loc) |
bool | parseToken (AsmToken::TokenKind T, const Twine &Msg="unexpected token") |
bool | parseOptionalToken (AsmToken::TokenKind T) |
Attempt to parse and consume token, returning true on success. More... | |
bool | parseComma () |
bool | parseRParen () |
bool | parseEOL () |
bool | parseEOL (const Twine &ErrMsg) |
bool | parseMany (function_ref< bool()> parseOne, bool hasComma=true) |
bool | parseIntToken (int64_t &V, const Twine &ErrMsg) |
bool | check (bool P, const Twine &Msg) |
bool | check (bool P, SMLoc Loc, const Twine &Msg) |
virtual bool | parseIdentifier (StringRef &Res)=0 |
Parse an identifier or string (as a quoted identifier) and set Res to the identifier contents. More... | |
virtual StringRef | parseStringToEndOfStatement ()=0 |
Parse up to the end of statement and return the contents from the current token until the end of the statement; the current token on exit will be either the EndOfStatement or EOF. More... | |
virtual bool | parseEscapedString (std::string &Data)=0 |
Parse the current token as a string which may include escaped characters and return the string contents. More... | |
virtual bool | parseAngleBracketString (std::string &Data)=0 |
Parse an angle-bracket delimited string at the current position if one is present, returning the string contents. More... | |
virtual void | eatToEndOfStatement ()=0 |
Skip to the end of the current statement, for error recovery. More... | |
virtual bool | parseExpression (const MCExpr *&Res, SMLoc &EndLoc)=0 |
Parse an arbitrary expression. More... | |
bool | parseExpression (const MCExpr *&Res) |
virtual bool | parsePrimaryExpr (const MCExpr *&Res, SMLoc &EndLoc, AsmTypeInfo *TypeInfo)=0 |
Parse a primary expression. More... | |
virtual bool | parseParenExpression (const MCExpr *&Res, SMLoc &EndLoc)=0 |
Parse an arbitrary expression, assuming that an initial '(' has already been consumed. More... | |
virtual bool | parseAbsoluteExpression (int64_t &Res)=0 |
Parse an expression which must evaluate to an absolute value. More... | |
virtual bool | checkForValidSection ()=0 |
Ensure that we have a valid section set in the streamer. More... | |
virtual bool | parseParenExprOfDepth (unsigned ParenDepth, const MCExpr *&Res, SMLoc &EndLoc)=0 |
Parse an arbitrary expression of a specified parenthesis depth, assuming that the initial '(' characters have already been consumed. More... | |
bool | parseGNUAttribute (SMLoc L, int64_t &Tag, int64_t &IntegerValue) |
Parse a .gnu_attribute. More... | |
Protected Member Functions | |
MCAsmParser () | |
Protected Attributes | |
SmallVector< MCPendingError, 0 > | PendingErrors |
bool | HadError = false |
Flag tracking whether any errors have been encountered. More... | |
bool | ShowParsedOperands = false |
Generic assembler parser interface, for use by target specific assembly parsers.
Definition at line 124 of file MCAsmParser.h.
using llvm::MCAsmParser::DirectiveHandler = bool (*)(MCAsmParserExtension*, StringRef, SMLoc) |
Definition at line 126 of file MCAsmParser.h.
using llvm::MCAsmParser::ExtensionDirectiveHandler = std::pair<MCAsmParserExtension*, DirectiveHandler> |
Definition at line 128 of file MCAsmParser.h.
|
protecteddefault |
|
delete |
|
virtualdefault |
|
pure virtual |
|
pure virtual |
Definition at line 115 of file MCAsmParser.cpp.
References llvm::AsmToken::Error, getTok(), is, Lex(), PendingErrors, and llvm::Twine::toVector().
Referenced by llvm::MCAsmParserExtension::addErrorSuffix().
Definition at line 85 of file MCAsmParser.cpp.
References getTok(), llvm::AMDGPU::SendMsg::Msg, and P.
Referenced by llvm::MCAsmParserExtension::check().
Definition at line 89 of file MCAsmParser.cpp.
References Error(), llvm::AMDGPU::SendMsg::Msg, and P.
|
pure virtual |
Ensure that we have a valid section set in the streamer.
Otherwise, report an error and switch to .text.
|
inline |
Definition at line 244 of file MCAsmParser.h.
References PendingErrors.
Definition at line 190 of file MCAsmParser.h.
|
inlinevirtual |
Definition at line 186 of file MCAsmParser.h.
|
pure virtual |
Skip to the end of the current statement, for error recovery.
Return an error at the location L
, with the message Msg
.
This may be modified before being emitted.
Definition at line 99 of file MCAsmParser.cpp.
References llvm::AsmToken::Error, getLexer(), getTok(), is, llvm::MCAsmLexer::Lex(), llvm::MCAsmParser::MCPendingError::Loc, llvm::AMDGPU::SendMsg::Msg, llvm::MCAsmParser::MCPendingError::Msg, PendingErrors, and llvm::MCAsmParser::MCPendingError::Range.
Referenced by check(), llvm::MCAsmParserExtension::Error(), llvm::MCParserUtils::parseAssignmentExpression(), parseEOL(), parseToken(), and TokError().
|
inlinevirtual |
Definition at line 174 of file MCAsmParser.h.
|
pure virtual |
|
inline |
Definition at line 162 of file MCAsmParser.h.
References getLexer().
|
pure virtual |
Referenced by Error(), llvm::MCAsmParserExtension::getLexer(), getLexer(), getTok(), and TokError().
|
inline |
Definition at line 177 of file MCAsmParser.h.
References ShowParsedOperands.
|
pure virtual |
Referenced by llvm::MCAsmParserExtension::getSourceManager().
|
pure virtual |
Return the output streamer for the assembler.
Referenced by llvm::MCAsmParserExtension::getStreamer(), and llvm::MCParserUtils::parseAssignmentExpression().
|
inline |
Definition at line 171 of file MCAsmParser.h.
Get the current AsmToken from the stream.
Definition at line 38 of file MCAsmParser.cpp.
References getLexer(), and llvm::MCAsmLexer::getTok().
Referenced by addErrorSuffix(), check(), Error(), llvm::MCAsmParserExtension::getTok(), llvm::MCParserUtils::parseAssignmentExpression(), parseEOL(), parseGNUAttribute(), parseIntToken(), parseOptionalToken(), parseToken(), and parseTokenLoc().
|
inline |
Definition at line 233 of file MCAsmParser.h.
References PendingErrors.
|
inlinevirtual |
Definition at line 188 of file MCAsmParser.h.
|
pure virtual |
Get the next AsmToken in the stream, possibly handling file inclusion first.
Referenced by addErrorSuffix(), llvm::MCAsmParserExtension::Lex(), parseEOL(), parseGNUAttribute(), parseIntToken(), and parseToken().
|
inlinevirtual |
Definition at line 195 of file MCAsmParser.h.
|
inlinevirtual |
Definition at line 192 of file MCAsmParser.h.
|
inlinevirtual |
Definition at line 200 of file MCAsmParser.h.
|
pure virtual |
Emit a note at the location L
, with the message Msg
.
Referenced by llvm::MCAsmParserExtension::Note().
|
delete |
|
pure virtual |
Parse an expression which must evaluate to an absolute value.
Res | - The value of the absolute expression. The result is undefined on error. |
|
pure virtual |
Parse an angle-bracket delimited string at the current position if one is present, returning the string contents.
|
inline |
Definition at line 264 of file MCAsmParser.h.
References llvm::AsmToken::Comma, and parseToken().
bool MCAsmParser::parseEOL | ( | ) |
Definition at line 47 of file MCAsmParser.cpp.
References llvm::AsmToken::EndOfStatement, Error(), getTok(), and Lex().
Referenced by llvm::MCParserUtils::parseAssignmentExpression(), llvm::MCAsmParserExtension::parseEOL(), and parseToken().
Definition at line 54 of file MCAsmParser.cpp.
References llvm::AsmToken::EndOfStatement, Error(), getTok(), Lex(), and llvm::AMDGPU::SendMsg::Msg.
|
pure virtual |
Parse the current token as a string which may include escaped characters and return the string contents.
Definition at line 138 of file MCAsmParser.cpp.
References parseExpression().
|
pure virtual |
Parse an arbitrary expression.
Res | - The value of the expression. The result is undefined on error. |
Referenced by llvm::MCParserUtils::parseAssignmentExpression(), and parseExpression().
bool MCAsmParser::parseGNUAttribute | ( | SMLoc | L, |
int64_t & | Tag, | ||
int64_t & | IntegerValue | ||
) |
Parse a .gnu_attribute.
Definition at line 143 of file MCAsmParser.cpp.
References llvm::AsmToken::getIntVal(), llvm::AsmToken::getLoc(), llvm::SMLoc::getPointer(), getTok(), llvm::AsmToken::Integer, llvm::AsmToken::isNot(), Lex(), and S.
|
pure virtual |
Parse an identifier or string (as a quoted identifier) and set Res
to the identifier contents.
Definition at line 70 of file MCAsmParser.cpp.
References llvm::AsmToken::getIntVal(), getTok(), llvm::AsmToken::Integer, Lex(), llvm::AMDGPU::SendMsg::Msg, and TokError().
bool MCAsmParser::parseMany | ( | function_ref< bool()> | parseOne, |
bool | hasComma = true |
||
) |
Definition at line 124 of file MCAsmParser.cpp.
References llvm::AsmToken::Comma, llvm::AsmToken::EndOfStatement, parseOptionalToken(), and parseToken().
Referenced by llvm::MCAsmParserExtension::parseMany().
|
pure virtual |
Parse MS-style inline assembly.
bool MCAsmParser::parseOptionalToken | ( | AsmToken::TokenKind | T | ) |
Attempt to parse and consume token, returning true on success.
Definition at line 78 of file MCAsmParser.cpp.
References llvm::AsmToken::getKind(), getTok(), and parseToken().
Referenced by parseMany(), and llvm::MCAsmParserExtension::parseOptionalToken().
|
pure virtual |
Parse an arbitrary expression, assuming that an initial '(' has already been consumed.
Res | - The value of the expression. The result is undefined on error. |
|
pure virtual |
Parse an arbitrary expression of a specified parenthesis depth, assuming that the initial '(' characters have already been consumed.
ParenDepth | - Specifies how many trailing expressions outside the current parentheses we have to parse. |
Res | - The value of the expression. The result is undefined on error. |
|
pure virtual |
Parse a primary expression.
Res | - The value of the expression. The result is undefined on error. |
Referenced by llvm::MCTargetAsmParser::parsePrimaryExpr().
|
inline |
Definition at line 265 of file MCAsmParser.h.
References parseToken(), and llvm::AsmToken::RParen.
|
pure virtual |
Parse up to the end of statement and return the contents from the current token until the end of the statement; the current token on exit will be either the EndOfStatement or EOF.
bool MCAsmParser::parseToken | ( | AsmToken::TokenKind | T, |
const Twine & | Msg = "unexpected token" |
||
) |
Definition at line 61 of file MCAsmParser.cpp.
References llvm::AsmToken::EndOfStatement, Error(), getTok(), Lex(), llvm::AMDGPU::SendMsg::Msg, and parseEOL().
Referenced by parseComma(), parseMany(), parseOptionalToken(), parseRParen(), and llvm::MCAsmParserExtension::parseToken().
bool MCAsmParser::parseTokenLoc | ( | SMLoc & | Loc | ) |
Definition at line 42 of file MCAsmParser.cpp.
References llvm::AsmToken::getLoc(), and getTok().
|
pure virtual |
Emit an error at the location L
, with the message Msg
.
|
inline |
Definition at line 235 of file MCAsmParser.h.
References PendingErrors.
|
pure virtual |
Run the parser on the input source buffer.
|
inlinevirtual |
Definition at line 175 of file MCAsmParser.h.
|
pure virtual |
|
inline |
Definition at line 178 of file MCAsmParser.h.
References ShowParsedOperands.
void MCAsmParser::setTargetParser | ( | MCTargetAsmParser & | P | ) |
Definition at line 32 of file MCAsmParser.cpp.
References assert(), llvm::MCAsmParserExtension::Initialize(), and P.
Report an error at the current lexer location.
Definition at line 95 of file MCAsmParser.cpp.
References Error(), getLexer(), and llvm::AMDGPU::SendMsg::Msg.
Referenced by llvm::MCParserUtils::parseAssignmentExpression(), parseIntToken(), and llvm::MCAsmParserExtension::TokError().
|
pure virtual |
Emit a warning at the location L
, with the message Msg
.
Referenced by llvm::MCAsmParserExtension::Warning().
|
protected |
Flag tracking whether any errors have been encountered.
Definition at line 145 of file MCAsmParser.h.
|
protected |
Definition at line 142 of file MCAsmParser.h.
Referenced by addErrorSuffix(), clearPendingErrors(), Error(), hasPendingError(), and printPendingErrors().
|
protected |
Definition at line 147 of file MCAsmParser.h.
Referenced by getShowParsedOperands(), and setShowParsedOperands().