diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-07-28 22:22:31 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-07-28 22:22:31 +0000 |
commit | e240beb0652f47adb5f58040ce17e43dcf25653f (patch) | |
tree | 32f4d26acc26de9aa83c54f6222e784d8e6088c1 | |
parent | b0facb18df19ab3d9c6580a96f61201adb949e96 (diff) | |
download | external_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.h | 42 | ||||
-rw-r--r-- | tools/llvm-mc/AsmParser.h | 39 |
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. /// |