MCAsmParserExtension.h revision 4e82bbb745160f19d76b9b5de5b93ebe224e1acf
153131982d6290e3a865f400174778deaac452ff3Daniel Dunbar//===-- llvm/MC/MCAsmParserExtension.h - Asm Parser Hooks -------*- C++ -*-===// 253131982d6290e3a865f400174778deaac452ff3Daniel Dunbar// 353131982d6290e3a865f400174778deaac452ff3Daniel Dunbar// The LLVM Compiler Infrastructure 453131982d6290e3a865f400174778deaac452ff3Daniel Dunbar// 553131982d6290e3a865f400174778deaac452ff3Daniel Dunbar// This file is distributed under the University of Illinois Open Source 653131982d6290e3a865f400174778deaac452ff3Daniel Dunbar// License. See LICENSE.TXT for details. 753131982d6290e3a865f400174778deaac452ff3Daniel Dunbar// 853131982d6290e3a865f400174778deaac452ff3Daniel Dunbar//===----------------------------------------------------------------------===// 953131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 1053131982d6290e3a865f400174778deaac452ff3Daniel Dunbar#ifndef LLVM_MC_MCASMPARSEREXTENSION_H 1153131982d6290e3a865f400174778deaac452ff3Daniel Dunbar#define LLVM_MC_MCASMPARSEREXTENSION_H 1253131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 1353131982d6290e3a865f400174778deaac452ff3Daniel Dunbar#include "llvm/MC/MCParser/MCAsmParser.h" 1453131982d6290e3a865f400174778deaac452ff3Daniel Dunbar#include "llvm/Support/SMLoc.h" 1553131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 1653131982d6290e3a865f400174778deaac452ff3Daniel Dunbarnamespace llvm { 1753131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 1853131982d6290e3a865f400174778deaac452ff3Daniel Dunbar/// \brief Generic interface for extending the MCAsmParser, 1953131982d6290e3a865f400174778deaac452ff3Daniel Dunbar/// which is implemented by target and object file assembly parser 2053131982d6290e3a865f400174778deaac452ff3Daniel Dunbar/// implementations. 2153131982d6290e3a865f400174778deaac452ff3Daniel Dunbarclass MCAsmParserExtension { 2253131982d6290e3a865f400174778deaac452ff3Daniel Dunbar MCAsmParserExtension(const MCAsmParserExtension &); // DO NOT IMPLEMENT 2353131982d6290e3a865f400174778deaac452ff3Daniel Dunbar void operator=(const MCAsmParserExtension &); // DO NOT IMPLEMENT 2453131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 2553131982d6290e3a865f400174778deaac452ff3Daniel Dunbar MCAsmParser *Parser; 2653131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 2753131982d6290e3a865f400174778deaac452ff3Daniel Dunbarprotected: 2853131982d6290e3a865f400174778deaac452ff3Daniel Dunbar MCAsmParserExtension(); 2953131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 3053131982d6290e3a865f400174778deaac452ff3Daniel Dunbarpublic: 3153131982d6290e3a865f400174778deaac452ff3Daniel Dunbar virtual ~MCAsmParserExtension(); 3253131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 3353131982d6290e3a865f400174778deaac452ff3Daniel Dunbar /// \brief Initialize the extension for parsing using the given \arg 3453131982d6290e3a865f400174778deaac452ff3Daniel Dunbar /// Parser. The extension should use the AsmParser interfaces to register its 3553131982d6290e3a865f400174778deaac452ff3Daniel Dunbar /// parsing routines. 3653131982d6290e3a865f400174778deaac452ff3Daniel Dunbar virtual void Initialize(MCAsmParser &Parser); 3753131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 3853131982d6290e3a865f400174778deaac452ff3Daniel Dunbar /// @name MCAsmParser Proxy Interfaces 3953131982d6290e3a865f400174778deaac452ff3Daniel Dunbar /// @{ 4053131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 4153131982d6290e3a865f400174778deaac452ff3Daniel Dunbar MCContext &getContext() { return getParser().getContext(); } 4253131982d6290e3a865f400174778deaac452ff3Daniel Dunbar MCAsmLexer &getLexer() { return getParser().getLexer(); } 4353131982d6290e3a865f400174778deaac452ff3Daniel Dunbar MCAsmParser &getParser() { return *Parser; } 444e82bbb745160f19d76b9b5de5b93ebe224e1acfDaniel Dunbar SourceMgr &getSourceManager() { return getParser().getSourceManager(); } 4553131982d6290e3a865f400174778deaac452ff3Daniel Dunbar MCStreamer &getStreamer() { return getParser().getStreamer(); } 4653131982d6290e3a865f400174778deaac452ff3Daniel Dunbar void Warning(SMLoc L, const Twine &Msg) { 4753131982d6290e3a865f400174778deaac452ff3Daniel Dunbar return getParser().Warning(L, Msg); 4853131982d6290e3a865f400174778deaac452ff3Daniel Dunbar } 4953131982d6290e3a865f400174778deaac452ff3Daniel Dunbar bool Error(SMLoc L, const Twine &Msg) { 5053131982d6290e3a865f400174778deaac452ff3Daniel Dunbar return getParser().Error(L, Msg); 5153131982d6290e3a865f400174778deaac452ff3Daniel Dunbar } 5253131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 5353131982d6290e3a865f400174778deaac452ff3Daniel Dunbar const AsmToken &Lex() { return getParser().Lex(); } 5453131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 5553131982d6290e3a865f400174778deaac452ff3Daniel Dunbar const AsmToken &getTok() { return getParser().getTok(); } 5653131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 5753131982d6290e3a865f400174778deaac452ff3Daniel Dunbar bool TokError(const char *Msg) { 5853131982d6290e3a865f400174778deaac452ff3Daniel Dunbar return getParser().TokError(Msg); 5953131982d6290e3a865f400174778deaac452ff3Daniel Dunbar } 6053131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 6153131982d6290e3a865f400174778deaac452ff3Daniel Dunbar /// @} 6253131982d6290e3a865f400174778deaac452ff3Daniel Dunbar}; 6353131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 6453131982d6290e3a865f400174778deaac452ff3Daniel Dunbar} // End llvm namespace 6553131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 6653131982d6290e3a865f400174778deaac452ff3Daniel Dunbar#endif 67