diff options
| author | Daniel Dunbar <daniel@zuster.org> | 2010-07-12 17:27:45 +0000 |
|---|---|---|
| committer | Daniel Dunbar <daniel@zuster.org> | 2010-07-12 17:27:45 +0000 |
| commit | 708600633a81638772b1885f8d1eee66b4314ef4 (patch) | |
| tree | 6bba616c9a574b770dd17f6bf31ba8e19564ba35 /include/llvm/MC | |
| parent | d8ef4b5e7cebb3834dcb1f644c129eadd641a6e8 (diff) | |
| download | external_llvm-708600633a81638772b1885f8d1eee66b4314ef4.zip external_llvm-708600633a81638772b1885f8d1eee66b4314ef4.tar.gz external_llvm-708600633a81638772b1885f8d1eee66b4314ef4.tar.bz2 | |
MC: Add MCAsmParserExtension, a base class for all the target/object specific
classes which want to extend the basic asm parser.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108158 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/MC')
| -rw-r--r-- | include/llvm/MC/MCParser/AsmParser.h | 3 | ||||
| -rw-r--r-- | include/llvm/MC/MCParser/MCAsmParserExtension.h | 65 |
2 files changed, 66 insertions, 2 deletions
diff --git a/include/llvm/MC/MCParser/AsmParser.h b/include/llvm/MC/MCParser/AsmParser.h index 5b48757..0ad7941 100644 --- a/include/llvm/MC/MCParser/AsmParser.h +++ b/include/llvm/MC/MCParser/AsmParser.h @@ -63,7 +63,6 @@ public: ~AsmParser(); bool Run(bool NoInitialTextSection, bool NoFinalize = false); - void AddDirectiveHandler(StringRef Directive, bool (AsmParser::*Handler)(StringRef, SMLoc)) { @@ -71,7 +70,7 @@ public: } public: TargetAsmParser &getTargetParser() const { return *TargetParser; } - void setTargetParser(TargetAsmParser &P) { TargetParser = &P; } + void setTargetParser(TargetAsmParser &P); /// @name MCAsmParser Interface /// { diff --git a/include/llvm/MC/MCParser/MCAsmParserExtension.h b/include/llvm/MC/MCParser/MCAsmParserExtension.h new file mode 100644 index 0000000..8938cf3 --- /dev/null +++ b/include/llvm/MC/MCParser/MCAsmParserExtension.h @@ -0,0 +1,65 @@ +//===-- llvm/MC/MCAsmParserExtension.h - Asm Parser Hooks -------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_MC_MCASMPARSEREXTENSION_H +#define LLVM_MC_MCASMPARSEREXTENSION_H + +#include "llvm/MC/MCParser/MCAsmParser.h" +#include "llvm/Support/SMLoc.h" + +namespace llvm { + +/// \brief Generic interface for extending the MCAsmParser, +/// which is implemented by target and object file assembly parser +/// implementations. +class MCAsmParserExtension { + MCAsmParserExtension(const MCAsmParserExtension &); // DO NOT IMPLEMENT + void operator=(const MCAsmParserExtension &); // DO NOT IMPLEMENT + + MCAsmParser *Parser; + +protected: + MCAsmParserExtension(); + +public: + virtual ~MCAsmParserExtension(); + + /// \brief Initialize the extension for parsing using the given \arg + /// Parser. The extension should use the AsmParser interfaces to register its + /// parsing routines. + virtual void Initialize(MCAsmParser &Parser); + + /// @name MCAsmParser Proxy Interfaces + /// @{ + + MCContext &getContext() { return getParser().getContext(); } + MCAsmLexer &getLexer() { return getParser().getLexer(); } + MCAsmParser &getParser() { return *Parser; } + MCStreamer &getStreamer() { return getParser().getStreamer(); } + void Warning(SMLoc L, const Twine &Msg) { + return getParser().Warning(L, Msg); + } + bool Error(SMLoc L, const Twine &Msg) { + return getParser().Error(L, Msg); + } + + const AsmToken &Lex() { return getParser().Lex(); } + + const AsmToken &getTok() { return getParser().getTok(); } + + bool TokError(const char *Msg) { + return getParser().TokError(Msg); + } + + /// @} +}; + +} // End llvm namespace + +#endif |
