|
LLVM
4.0.0
|
Generic assembler parser interface, for use by target specific assembly parsers. More...
#include <MCAsmParser.h>
Classes | |
| struct | MCPendingError |
Public Types | |
| typedef bool(* | DirectiveHandler )(MCAsmParserExtension *, StringRef, SMLoc) |
| typedef std::pair < MCAsmParserExtension *, DirectiveHandler > | ExtensionDirectiveHandler |
Public Member Functions | |
| virtual | ~MCAsmParser () |
| Flag tracking whether any errors have been encountered. More... | |
| 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 | setParsingInlineAsm (bool V)=0 |
| virtual bool | isParsingInlineAsm ()=0 |
| virtual bool | parseMSInlineAsm (void *AsmLoc, 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 () |
| 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 | parseEOL (const Twine &ErrMsg) |
| bool | parseMany (std::function< bool()> parseOne, bool hasComma=true) |
| bool | parseIntToken (int64_t &V, const Twine &ErrMsg) |
| bool | check (bool P, const llvm::Twine &Msg) |
| bool | check (bool P, SMLoc Loc, const llvm::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 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)=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... | |
Protected Member Functions | |
| MCAsmParser () | |
Protected Attributes | |
| bool | HadError |
| SmallVector< MCPendingError, 1 > | PendingErrors |
Generic assembler parser interface, for use by target specific assembly parsers.
Definition at line 66 of file MCAsmParser.h.
| typedef bool(* llvm::MCAsmParser::DirectiveHandler)(MCAsmParserExtension *, StringRef, SMLoc) |
Definition at line 68 of file MCAsmParser.h.
| typedef std::pair<MCAsmParserExtension*, DirectiveHandler> llvm::MCAsmParser::ExtensionDirectiveHandler |
Definition at line 70 of file MCAsmParser.h.
|
protected |
Definition at line 20 of file MCAsmParser.cpp.
|
virtual |
Flag tracking whether any errors have been encountered.
Definition at line 24 of file MCAsmParser.cpp.
|
pure virtual |
|
pure virtual |
Definition at line 112 of file MCAsmParser.cpp.
References llvm::AsmToken::Error, getTok(), Lex(), PendingErrors, and llvm::Twine::toVector().
Referenced by llvm::MCAsmParserExtension::addErrorSuffix().
| bool MCAsmParser::check | ( | bool | P, |
| const llvm::Twine & | Msg | ||
| ) |
Definition at line 81 of file MCAsmParser.cpp.
References getTok().
Referenced by llvm::MCAsmParserExtension::check().
| bool MCAsmParser::check | ( | bool | P, |
| SMLoc | Loc, | ||
| const llvm::Twine & | Msg | ||
| ) |
Definition at line 85 of file MCAsmParser.cpp.
References Error().
|
pure virtual |
Ensure that we have a valid section set in the streamer.
Otherwise, report an error and switch to .text.
|
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 95 of file MCAsmParser.cpp.
References llvm::AsmToken::Error, getLexer(), getTok(), HadError, L, llvm::MCAsmLexer::Lex(), llvm::MCAsmParser::MCPendingError::Loc, llvm::MCAsmParser::MCPendingError::Msg, PendingErrors, llvm::MCAsmParser::MCPendingError::Range, and llvm::Twine::toVector().
Referenced by check(), llvm::MCAsmParserExtension::Error(), llvm::MCParserUtils::parseAssignmentExpression(), parseEOL(), parseToken(), and TokError().
|
inlinevirtual |
Definition at line 117 of file MCAsmParser.h.
|
pure virtual |
|
pure virtual |
|
inline |
Definition at line 105 of file MCAsmParser.h.
References getLexer().
|
inline |
Definition at line 120 of file MCAsmParser.h.
|
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 114 of file MCAsmParser.h.
Get the current AsmToken from the stream.
Definition at line 33 of file MCAsmParser.cpp.
References getLexer(), and llvm::MCAsmLexer::getTok().
Referenced by addErrorSuffix(), check(), Error(), llvm::MCAsmParserExtension::getTok(), llvm::MCParserUtils::parseAssignmentExpression(), parseEOL(), parseIntToken(), parseOptionalToken(), parseToken(), and parseTokenLoc().
|
inline |
Definition at line 158 of file MCAsmParser.h.
References PendingErrors.
|
pure virtual |
Get the next AsmToken in the stream, possibly handling file inclusion first.
Referenced by addErrorSuffix(), llvm::MCAsmParserExtension::Lex(), parseEOL(), parseIntToken(), and parseToken().
|
pure virtual |
Emit a note at the location L, with the message Msg.
Referenced by llvm::MCAsmParserExtension::Note().
|
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. |
Referenced by expectAbsExpression().
Definition at line 42 of file MCAsmParser.cpp.
References llvm::AsmToken::EndOfStatement, Error(), getLexer(), getTok(), llvm::AsmToken::Hash, Lex(), llvm::MCAsmLexer::Lex(), parseStringToEndOfStatement(), and llvm::MCAsmLexer::UnLex().
Referenced by parseToken().
|
pure virtual |
Parse the current token as a string which may include escaped characters and return the string contents.
|
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().
Definition at line 135 of file MCAsmParser.cpp.
References L, and parseExpression().
Parse an identifier or string (as a quoted identifier) and set Res to the identifier contents.
Definition at line 63 of file MCAsmParser.cpp.
References llvm::AsmToken::getIntVal(), getTok(), llvm::AsmToken::Integer, Lex(), and TokError().
| bool MCAsmParser::parseMany | ( | std::function< bool()> | parseOne, |
| bool | hasComma = true |
||
| ) |
Definition at line 121 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 71 of file MCAsmParser.cpp.
References llvm::AsmToken::EndOfStatement, llvm::AsmToken::getKind(), getTok(), llvm::AsmToken::Hash, parseToken(), and T.
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. |
|
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.
Referenced by parseEOL().
| bool MCAsmParser::parseToken | ( | AsmToken::TokenKind | T, |
| const Twine & | Msg = "unexpected token" |
||
| ) |
Definition at line 54 of file MCAsmParser.cpp.
References llvm::AsmToken::EndOfStatement, Error(), getTok(), Lex(), and parseEOL().
Referenced by llvm::MCParserUtils::parseAssignmentExpression(), parseMany(), parseOptionalToken(), and llvm::MCAsmParserExtension::parseToken().
Definition at line 37 of file MCAsmParser.cpp.
References llvm::AsmToken::getLoc(), and getTok().
|
pure virtual |
Emit an error at the location L, with the message Msg.
Referenced by printPendingErrors().
|
inline |
Definition at line 160 of file MCAsmParser.h.
References PendingErrors, and printError().
|
pure virtual |
Run the parser on the input source buffer.
|
inlinevirtual |
Definition at line 118 of file MCAsmParser.h.
|
pure virtual |
|
inline |
Definition at line 121 of file MCAsmParser.h.
| void MCAsmParser::setTargetParser | ( | MCTargetAsmParser & | P | ) |
Definition at line 27 of file MCAsmParser.cpp.
References assert(), llvm::MCAsmParserExtension::Initialize(), and P.
Report an error at the current lexer location.
Definition at line 91 of file MCAsmParser.cpp.
References Error(), and getLexer().
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 |
Definition at line 89 of file MCAsmParser.h.
Referenced by Error().
|
protected |
Definition at line 91 of file MCAsmParser.h.
Referenced by addErrorSuffix(), Error(), hasPendingError(), and printPendingErrors().
1.8.6