MCAsmParser.cpp revision d8b7aa26134d2abee777f745c32005e63dea2455
1a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar//===-- MCAsmParser.cpp - Abstract Asm Parser Interface -------------------===// 2a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar// 3a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar// The LLVM Compiler Infrastructure 4a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar// 5a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar// This file is distributed under the University of Illinois Open Source 6a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar// License. See LICENSE.TXT for details. 7a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar// 8a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar//===----------------------------------------------------------------------===// 9a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar 10c6ef277a0b8f43af22d86aea9d5053749cacfbbbChris Lattner#include "llvm/MC/MCParser/MCAsmParser.h" 11c6ef277a0b8f43af22d86aea9d5053749cacfbbbChris Lattner#include "llvm/MC/MCParser/MCAsmLexer.h" 12c6ef277a0b8f43af22d86aea9d5053749cacfbbbChris Lattner#include "llvm/MC/MCParser/MCParsedAsmOperand.h" 1394b9550a32d189704a8eae55505edf62662c0534Evan Cheng#include "llvm/MC/MCTargetAsmParser.h" 14b4307b33705ef9e660db640b2f70d6246aa51165Chris Lattner#include "llvm/Support/SourceMgr.h" 15b7f689bab98777236a2bf600f299d232d246bb61Jim Grosbach#include "llvm/Support/raw_ostream.h" 16b7f689bab98777236a2bf600f299d232d246bb61Jim Grosbach#include "llvm/Support/Debug.h" 17a7cfc08ebe737062917b442830eb5321b0f79e89Evan Cheng#include "llvm/ADT/Twine.h" 18a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbarusing namespace llvm; 19a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar 203c14ca47fc057c5999cd41ce2782e0ebaa2bcf7dDaniel DunbarMCAsmParser::MCAsmParser() : TargetParser(0), ShowParsedOperands(0) { 21a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar} 22a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar 23a3af370dc12f6d5100da5d614ab0a62da135569aDaniel DunbarMCAsmParser::~MCAsmParser() { 24a3af370dc12f6d5100da5d614ab0a62da135569aDaniel Dunbar} 25b4307b33705ef9e660db640b2f70d6246aa51165Chris Lattner 2694b9550a32d189704a8eae55505edf62662c0534Evan Chengvoid MCAsmParser::setTargetParser(MCTargetAsmParser &P) { 27d1e3b44d6c0094eda2e2a854d5fdb6a0d7ba327eDaniel Dunbar assert(!TargetParser && "Target parser is already initialized!"); 28d1e3b44d6c0094eda2e2a854d5fdb6a0d7ba327eDaniel Dunbar TargetParser = &P; 29d1e3b44d6c0094eda2e2a854d5fdb6a0d7ba327eDaniel Dunbar TargetParser->Initialize(*this); 30d1e3b44d6c0094eda2e2a854d5fdb6a0d7ba327eDaniel Dunbar} 31d1e3b44d6c0094eda2e2a854d5fdb6a0d7ba327eDaniel Dunbar 3218b8323de70e3461b5d035e3f9e4f6dfaf5e674bSean Callananconst AsmToken &MCAsmParser::getTok() { 3318b8323de70e3461b5d035e3f9e4f6dfaf5e674bSean Callanan return getLexer().getTok(); 3418b8323de70e3461b5d035e3f9e4f6dfaf5e674bSean Callanan} 3518b8323de70e3461b5d035e3f9e4f6dfaf5e674bSean Callanan 36d8b7aa26134d2abee777f745c32005e63dea2455Chris Lattnerbool MCAsmParser::TokError(const Twine &Msg, ArrayRef<SMRange> Ranges) { 37d8b7aa26134d2abee777f745c32005e63dea2455Chris Lattner Error(getLexer().getLoc(), Msg, Ranges); 38dc4c7da5d4c73bef2ce73ce0f96019457337c402Daniel Dunbar return true; 39dc4c7da5d4c73bef2ce73ce0f96019457337c402Daniel Dunbar} 40dc4c7da5d4c73bef2ce73ce0f96019457337c402Daniel Dunbar 41b4307b33705ef9e660db640b2f70d6246aa51165Chris Lattnerbool MCAsmParser::ParseExpression(const MCExpr *&Res) { 42b4307b33705ef9e660db640b2f70d6246aa51165Chris Lattner SMLoc L; 439521c95f97b7b2a06144d312d3be4672caacc6d0Chris Lattner return ParseExpression(Res, L); 44b4307b33705ef9e660db640b2f70d6246aa51165Chris Lattner} 45b4307b33705ef9e660db640b2f70d6246aa51165Chris Lattner 46b7f689bab98777236a2bf600f299d232d246bb61Jim Grosbachvoid MCParsedAsmOperand::dump() const { 47b7f689bab98777236a2bf600f299d232d246bb61Jim Grosbach dbgs() << " " << *this; 48b7f689bab98777236a2bf600f299d232d246bb61Jim Grosbach} 49