aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-07-28 22:22:31 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-07-28 22:22:31 +0000
commite240beb0652f47adb5f58040ce17e43dcf25653f (patch)
tree32f4d26acc26de9aa83c54f6222e784d8e6088c1
parentb0facb18df19ab3d9c6580a96f61201adb949e96 (diff)
downloadexternal_llvm-e240beb0652f47adb5f58040ce17e43dcf25653f.zip
external_llvm-e240beb0652f47adb5f58040ce17e43dcf25653f.tar.gz
external_llvm-e240beb0652f47adb5f58040ce17e43dcf25653f.tar.bz2
Make expression parsing and error/warning reporting available through the
generic MCAsmParser interface. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77381 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/MC/MCAsmParser.h42
-rw-r--r--tools/llvm-mc/AsmParser.h39
2 files changed, 57 insertions, 24 deletions
diff --git a/include/llvm/MC/MCAsmParser.h b/include/llvm/MC/MCAsmParser.h
index 7cb6433..a6acf4e 100644
--- a/include/llvm/MC/MCAsmParser.h
+++ b/include/llvm/MC/MCAsmParser.h
@@ -10,8 +10,13 @@
#ifndef LLVM_MC_MCASMPARSER_H
#define LLVM_MC_MCASMPARSER_H
+#include "llvm/Support/DataTypes.h"
+
namespace llvm {
class MCAsmLexer;
+class MCValue;
+class SMLoc;
+class Twine;
/// MCAsmParser - Generic assembler parser interface, for use by target specific
/// assembly parsers.
@@ -25,6 +30,43 @@ public:
virtual ~MCAsmParser();
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
diff --git a/tools/llvm-mc/AsmParser.h b/tools/llvm-mc/AsmParser.h
index 253bb8b..e59e85c 100644
--- a/tools/llvm-mc/AsmParser.h
+++ b/tools/llvm-mc/AsmParser.h
@@ -48,41 +48,32 @@ public:
TargetAsmParser &getTargetParser() const { return *TargetParser; }
void setTargetParser(TargetAsmParser &P) { TargetParser = &P; }
+ /// @name MCAsmParser Interface
+ /// {
+
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:
bool ParseStatement();
- void Warning(SMLoc L, const Twine &Msg);
- bool Error(SMLoc L, const Twine &Msg);
bool TokError(const char *Msg);
void EatToEndOfStatement();
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
/// relocatable, assuming that an initial '(' has already been consumed.
///