Move ParseMacroArgument to the MCAsmParser interfance.
[oota-llvm.git] / include / llvm / MC / MCParser / MCAsmParser.h
index a0433f9855cfcacf7c1b31203738b13a66a283d6..cb8476d2cee56d75ce26656cca9a86ba262e0372 100644 (file)
 #define LLVM_MC_MCPARSER_MCASMPARSER_H
 
 #include "llvm/ADT/ArrayRef.h"
+#include "llvm/MC/MCParser/AsmLexer.h"
 #include "llvm/Support/DataTypes.h"
+#include <vector>
 
 namespace llvm {
-class AsmToken;
 class MCAsmInfo;
 class MCAsmLexer;
 class MCAsmParserExtension;
@@ -41,6 +42,10 @@ public:
                                     unsigned &Offset) = 0;
 };
 
+
+typedef std::vector<AsmToken> MCAsmMacroArgument;
+
+
 /// MCAsmParser - Generic assembler parser interface, for use by target specific
 /// assembly parsers.
 class MCAsmParser {
@@ -140,6 +145,12 @@ public:
   virtual bool MacrosEnabled() = 0;
   virtual void SetMacrosEnabled(bool flag) = 0;
 
+  /// ParseMacroArgument - Extract AsmTokens for a macro argument. If the
+  /// argument delimiter is initially unknown, set it to AsmToken::Eof. It will
+  /// be set to the correct delimiter by the method.
+  virtual bool ParseMacroArgument(MCAsmMacroArgument &MA,
+                                  AsmToken::TokenKind &ArgumentDelimiter) = 0;
+
   /// ParseExpression - Parse an arbitrary expression.
   ///
   /// @param Res - The value of the expression. The result is undefined