MCAsmParserExtension.h revision f21e4e9326aa3ebc78bc2770722fb5150fe7ede9
1//===-- llvm/MC/MCAsmParserExtension.h - Asm Parser Hooks -------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#ifndef LLVM_MC_MCASMPARSEREXTENSION_H 11#define LLVM_MC_MCASMPARSEREXTENSION_H 12 13#include "llvm/MC/MCParser/MCAsmParser.h" 14#include "llvm/Support/SMLoc.h" 15 16namespace llvm { 17class Twine; 18 19/// \brief Generic interface for extending the MCAsmParser, 20/// which is implemented by target and object file assembly parser 21/// implementations. 22class MCAsmParserExtension { 23 MCAsmParserExtension(const MCAsmParserExtension &); // DO NOT IMPLEMENT 24 void operator=(const MCAsmParserExtension &); // DO NOT IMPLEMENT 25 26 MCAsmParser *Parser; 27 28protected: 29 MCAsmParserExtension(); 30 31public: 32 virtual ~MCAsmParserExtension(); 33 34 /// \brief Initialize the extension for parsing using the given \arg 35 /// Parser. The extension should use the AsmParser interfaces to register its 36 /// parsing routines. 37 virtual void Initialize(MCAsmParser &Parser); 38 39 /// @name MCAsmParser Proxy Interfaces 40 /// @{ 41 42 MCContext &getContext() { return getParser().getContext(); } 43 MCAsmLexer &getLexer() { return getParser().getLexer(); } 44 MCAsmParser &getParser() { return *Parser; } 45 SourceMgr &getSourceManager() { return getParser().getSourceManager(); } 46 MCStreamer &getStreamer() { return getParser().getStreamer(); } 47 void Warning(SMLoc L, const Twine &Msg) { 48 return getParser().Warning(L, Msg); 49 } 50 bool Error(SMLoc L, const Twine &Msg) { 51 return getParser().Error(L, Msg); 52 } 53 bool TokError(const Twine &Msg) { 54 return getParser().TokError(Msg); 55 } 56 57 const AsmToken &Lex() { return getParser().Lex(); } 58 59 const AsmToken &getTok() { return getParser().getTok(); } 60 61 /// @} 62}; 63 64} // End llvm namespace 65 66#endif 67