MCAsmParserExtension.h revision f21e4e9326aa3ebc78bc2770722fb5150fe7ede9
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 { 17f21e4e9326aa3ebc78bc2770722fb5150fe7ede9Daniel Dunbarclass Twine; 1853131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 1953131982d6290e3a865f400174778deaac452ff3Daniel Dunbar/// \brief Generic interface for extending the MCAsmParser, 2053131982d6290e3a865f400174778deaac452ff3Daniel Dunbar/// which is implemented by target and object file assembly parser 2153131982d6290e3a865f400174778deaac452ff3Daniel Dunbar/// implementations. 2253131982d6290e3a865f400174778deaac452ff3Daniel Dunbarclass MCAsmParserExtension { 2353131982d6290e3a865f400174778deaac452ff3Daniel Dunbar MCAsmParserExtension(const MCAsmParserExtension &); // DO NOT IMPLEMENT 2453131982d6290e3a865f400174778deaac452ff3Daniel Dunbar void operator=(const MCAsmParserExtension &); // DO NOT IMPLEMENT 2553131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 2653131982d6290e3a865f400174778deaac452ff3Daniel Dunbar MCAsmParser *Parser; 2753131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 2853131982d6290e3a865f400174778deaac452ff3Daniel Dunbarprotected: 2953131982d6290e3a865f400174778deaac452ff3Daniel Dunbar MCAsmParserExtension(); 3053131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 3153131982d6290e3a865f400174778deaac452ff3Daniel Dunbarpublic: 3253131982d6290e3a865f400174778deaac452ff3Daniel Dunbar virtual ~MCAsmParserExtension(); 3353131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 3453131982d6290e3a865f400174778deaac452ff3Daniel Dunbar /// \brief Initialize the extension for parsing using the given \arg 3553131982d6290e3a865f400174778deaac452ff3Daniel Dunbar /// Parser. The extension should use the AsmParser interfaces to register its 3653131982d6290e3a865f400174778deaac452ff3Daniel Dunbar /// parsing routines. 3753131982d6290e3a865f400174778deaac452ff3Daniel Dunbar virtual void Initialize(MCAsmParser &Parser); 3853131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 3953131982d6290e3a865f400174778deaac452ff3Daniel Dunbar /// @name MCAsmParser Proxy Interfaces 4053131982d6290e3a865f400174778deaac452ff3Daniel Dunbar /// @{ 4153131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 4253131982d6290e3a865f400174778deaac452ff3Daniel Dunbar MCContext &getContext() { return getParser().getContext(); } 4353131982d6290e3a865f400174778deaac452ff3Daniel Dunbar MCAsmLexer &getLexer() { return getParser().getLexer(); } 4453131982d6290e3a865f400174778deaac452ff3Daniel Dunbar MCAsmParser &getParser() { return *Parser; } 454e82bbb745160f19d76b9b5de5b93ebe224e1acfDaniel Dunbar SourceMgr &getSourceManager() { return getParser().getSourceManager(); } 4653131982d6290e3a865f400174778deaac452ff3Daniel Dunbar MCStreamer &getStreamer() { return getParser().getStreamer(); } 4753131982d6290e3a865f400174778deaac452ff3Daniel Dunbar void Warning(SMLoc L, const Twine &Msg) { 4853131982d6290e3a865f400174778deaac452ff3Daniel Dunbar return getParser().Warning(L, Msg); 4953131982d6290e3a865f400174778deaac452ff3Daniel Dunbar } 5053131982d6290e3a865f400174778deaac452ff3Daniel Dunbar bool Error(SMLoc L, const Twine &Msg) { 5153131982d6290e3a865f400174778deaac452ff3Daniel Dunbar return getParser().Error(L, Msg); 5253131982d6290e3a865f400174778deaac452ff3Daniel Dunbar } 53f21e4e9326aa3ebc78bc2770722fb5150fe7ede9Daniel Dunbar bool TokError(const Twine &Msg) { 54f21e4e9326aa3ebc78bc2770722fb5150fe7ede9Daniel Dunbar return getParser().TokError(Msg); 55f21e4e9326aa3ebc78bc2770722fb5150fe7ede9Daniel Dunbar } 5653131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 5753131982d6290e3a865f400174778deaac452ff3Daniel Dunbar const AsmToken &Lex() { return getParser().Lex(); } 5853131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 5953131982d6290e3a865f400174778deaac452ff3Daniel Dunbar const AsmToken &getTok() { return getParser().getTok(); } 6053131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 6153131982d6290e3a865f400174778deaac452ff3Daniel Dunbar /// @} 6253131982d6290e3a865f400174778deaac452ff3Daniel Dunbar}; 6353131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 6453131982d6290e3a865f400174778deaac452ff3Daniel Dunbar} // End llvm namespace 6553131982d6290e3a865f400174778deaac452ff3Daniel Dunbar 6653131982d6290e3a865f400174778deaac452ff3Daniel Dunbar#endif 67