forked from OSchip/llvm-project
Make expression parsing and error/warning reporting available through the
generic MCAsmParser interface. llvm-svn: 77381
This commit is contained in:
parent
6adb6e07ce
commit
c43267a472
|
@ -10,8 +10,13 @@
|
||||||
#ifndef LLVM_MC_MCASMPARSER_H
|
#ifndef LLVM_MC_MCASMPARSER_H
|
||||||
#define LLVM_MC_MCASMPARSER_H
|
#define LLVM_MC_MCASMPARSER_H
|
||||||
|
|
||||||
|
#include "llvm/Support/DataTypes.h"
|
||||||
|
|
||||||
namespace llvm {
|
namespace llvm {
|
||||||
class MCAsmLexer;
|
class MCAsmLexer;
|
||||||
|
class MCValue;
|
||||||
|
class SMLoc;
|
||||||
|
class Twine;
|
||||||
|
|
||||||
/// MCAsmParser - Generic assembler parser interface, for use by target specific
|
/// MCAsmParser - Generic assembler parser interface, for use by target specific
|
||||||
/// assembly parsers.
|
/// assembly parsers.
|
||||||
|
@ -25,6 +30,43 @@ public:
|
||||||
virtual ~MCAsmParser();
|
virtual ~MCAsmParser();
|
||||||
|
|
||||||
virtual MCAsmLexer &getLexer() = 0;
|
virtual MCAsmLexer &getLexer() = 0;
|
||||||
|
|
||||||
|
/// Warning - Emit a warning at the location \arg L, with the message \arg
|
||||||
|
/// Msg.
|
||||||
|
virtual void Warning(SMLoc L, const Twine &Msg) = 0;
|
||||||
|
|
||||||
|
/// Warning - Emit an error at the location \arg L, with the message \arg
|
||||||
|
/// Msg.
|
||||||
|
///
|
||||||
|
/// \return The return value is always true, as an idiomatic convenience to
|
||||||
|
/// clients.
|
||||||
|
virtual bool Error(SMLoc L, const Twine &Msg) = 0;
|
||||||
|
|
||||||
|
/// ParseAbsoluteExpression - Parse an expression which must evaluate to an
|
||||||
|
/// absolute value.
|
||||||
|
///
|
||||||
|
/// @param Res - The value of the absolute expression. The result is undefined
|
||||||
|
/// on error.
|
||||||
|
/// @result - False on success.
|
||||||
|
virtual bool ParseAbsoluteExpression(int64_t &Res) = 0;
|
||||||
|
|
||||||
|
/// ParseRelocatableExpression - Parse an expression which must be
|
||||||
|
/// relocatable.
|
||||||
|
///
|
||||||
|
/// @param Res - The relocatable expression value. The result is undefined on
|
||||||
|
/// error.
|
||||||
|
/// @result - False on success.
|
||||||
|
virtual bool ParseRelocatableExpression(MCValue &Res) = 0;
|
||||||
|
|
||||||
|
/// ParseParenRelocatableExpression - Parse an expression which must be
|
||||||
|
/// relocatable, assuming that an initial '(' has already been consumed.
|
||||||
|
///
|
||||||
|
/// @param Res - The relocatable expression value. The result is undefined on
|
||||||
|
/// error.
|
||||||
|
/// @result - False on success.
|
||||||
|
///
|
||||||
|
/// @see ParseRelocatableExpression, ParseParenExpr.
|
||||||
|
virtual bool ParseParenRelocatableExpression(MCValue &Res) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // End llvm namespace
|
} // End llvm namespace
|
||||||
|
|
|
@ -48,41 +48,32 @@ public:
|
||||||
TargetAsmParser &getTargetParser() const { return *TargetParser; }
|
TargetAsmParser &getTargetParser() const { return *TargetParser; }
|
||||||
void setTargetParser(TargetAsmParser &P) { TargetParser = &P; }
|
void setTargetParser(TargetAsmParser &P) { TargetParser = &P; }
|
||||||
|
|
||||||
|
/// @name MCAsmParser Interface
|
||||||
|
/// {
|
||||||
|
|
||||||
virtual MCAsmLexer &getLexer() { return Lexer; }
|
virtual MCAsmLexer &getLexer() { return Lexer; }
|
||||||
|
|
||||||
|
virtual void Warning(SMLoc L, const Twine &Meg);
|
||||||
|
|
||||||
|
virtual bool Error(SMLoc L, const Twine &Msg);
|
||||||
|
|
||||||
|
virtual bool ParseExpression(AsmExpr *&Res);
|
||||||
|
|
||||||
|
virtual bool ParseAbsoluteExpression(int64_t &Res);
|
||||||
|
|
||||||
|
virtual bool ParseRelocatableExpression(MCValue &Res);
|
||||||
|
|
||||||
|
/// }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool ParseStatement();
|
bool ParseStatement();
|
||||||
|
|
||||||
void Warning(SMLoc L, const Twine &Msg);
|
|
||||||
bool Error(SMLoc L, const Twine &Msg);
|
|
||||||
bool TokError(const char *Msg);
|
bool TokError(const char *Msg);
|
||||||
|
|
||||||
void EatToEndOfStatement();
|
void EatToEndOfStatement();
|
||||||
|
|
||||||
bool ParseAssignment(const StringRef &Name, bool IsDotSet);
|
bool ParseAssignment(const StringRef &Name, bool IsDotSet);
|
||||||
|
|
||||||
/// ParseExpression - Parse a general assembly expression.
|
|
||||||
///
|
|
||||||
/// @param Res - The resulting expression. The pointer value is null on error.
|
|
||||||
/// @result - False on success.
|
|
||||||
bool ParseExpression(AsmExpr *&Res);
|
|
||||||
|
|
||||||
/// ParseAbsoluteExpression - Parse an expression which must evaluate to an
|
|
||||||
/// absolute value.
|
|
||||||
///
|
|
||||||
/// @param Res - The value of the absolute expression. The result is undefined
|
|
||||||
/// on error.
|
|
||||||
/// @result - False on success.
|
|
||||||
bool ParseAbsoluteExpression(int64_t &Res);
|
|
||||||
|
|
||||||
/// ParseRelocatableExpression - Parse an expression which must be
|
|
||||||
/// relocatable.
|
|
||||||
///
|
|
||||||
/// @param Res - The relocatable expression value. The result is undefined on
|
|
||||||
/// error.
|
|
||||||
/// @result - False on success.
|
|
||||||
bool ParseRelocatableExpression(MCValue &Res);
|
|
||||||
|
|
||||||
/// ParseParenRelocatableExpression - Parse an expression which must be
|
/// ParseParenRelocatableExpression - Parse an expression which must be
|
||||||
/// relocatable, assuming that an initial '(' has already been consumed.
|
/// relocatable, assuming that an initial '(' has already been consumed.
|
||||||
///
|
///
|
||||||
|
|
Loading…
Reference in New Issue